Лаб. работа "Мониторинг и анализ системы Linux"
Лабораторная работа по теме “Мониторинг и анализ системы Linux”
Цель работы
Изучить инструменты мониторинга и анализа производительности операционной системы Linux. Получить практические навыки использования системных утилит для отслеживания использования ресурсов, диагностики проблем производительности и анализа состояния системы в реальном времени.
Теоретические сведения
Мониторинг системы в Linux включает в себя отслеживание использования различных ресурсов: процессора, памяти, дискового пространства, сетевых интерфейсов и других компонентов системы. Эти инструменты критически важны для системных администраторов, DevOps-инженеров и разработчиков для обеспечения стабильной работы приложений и выявления узких мест в производительности.
Основные категории системного мониторинга:
1. Мониторинг процессора:
top- интерактивный просмотр процессовhtop- улучшенная версия topuptime- время работы системы и средняя нагрузкаmpstat- статистика процессора
2. Мониторинг памяти:
free- использование оперативной памятиvmstat- статистика виртуальной памяти/proc/meminfo- детальная информация о памяти
3. Мониторинг дисков:
df- использование дискового пространстваdu- анализ использования пространства каталогамиiostat- статистика ввода/выводаiotop- мониторинг дисковой активности в реальном времени
4. Системная информация:
uname- информация о системеlscpu- информация о процессореlsblk- информация о блочных устройствахdmesg- системные сообщения ядра
5. Логи и системные события:
journalctl- просмотр системных логов (systemd)tail- просмотр конца файловgrep- поиск в логах
Необходимое программное обеспечение
- Операционная система Linux (Ubuntu, CentOS, Debian)
- Терминал с доступом к системе
- Права обычного пользователя (для большинства команд)
- Права суперпользователя (для некоторых диагностических команд)
Ход работы
Задание 1. Общая информация о системе
- Получите общую информацию о системе:
1uname -a
- Узнайте время работы системы:
1uptime
- Получите информацию о процессоре:
1lscpu
- Проверьте информацию о памяти:
1cat /proc/meminfo
Задание 2. Мониторинг процессора
- Запустите
topдля просмотра процессов в реальном времени:
1top
Нажмите q для выхода. Обратите внимание на:
- Общую загрузку процессора (%Cpu(s))
- Список процессов с наибольшим использованием CPU
- Информацию о памяти в верхней части
- Используйте
htop(если установлен) для более удобного просмотра:
1htop
- Получите статистику процессора:
1mpstat 1 3
Эта команда покажет статистику процессора каждые 1 секунду, 3 раза.
Задание 3. Анализ использования памяти
- Проверьте использование оперативной памяти:
1free -h
- Получите детальную информацию о памяти:
1cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable|Cached"
- Проверьте использование swap:
1swapon --show
- Используйте
vmstatдля мониторинга виртуальной памяти:
1vmstat 2 5
Задание 4. Мониторинг дискового пространства
- Проверьте использование дискового пространства:
1df -h
- Найдите самые большие каталоги в домашней папке:
1du -sh ~/* | sort -hr | head -10
- Проверьте информацию о блочных устройствах:
1lsblk
- Мониторьте дисковую активность:
1iotop
Нажмите q для выхода.
Задание 5. Анализ процессов
- Найдите процессы, потребляющие больше всего CPU:
1ps aux --sort=-%cpu | head -10
- Найдите процессы, потребляющие больше всего памяти:
1ps aux --sort=-%mem | head -10
- Найдите конкретный процесс по имени:
1pgrep -l bash
- Получите детальную информацию о процессе:
1ps -p $(pgrep bash | head -1) -f
Задание 6. Системные логи
- Просмотрите последние системные сообщения:
1journalctl -n 20
- Просмотрите логи за последний час:
1journalctl --since "1 hour ago"
- Найдите ошибки в системных логах:
1journalctl -p err
- Следите за логами в реальном времени:
1journalctl -f
Нажмите Ctrl+C для остановки.
Задание 7. Мониторинг сетевой активности
- Проверьте сетевые интерфейсы:
1ip -s link show
- Просмотрите сетевые соединения:
1ss -s
- Мониторьте сетевой трафик (требует установки iftop):
1sudo iftop
Задание 8. Создание скрипта мониторинга
Создайте скрипт system_monitor.sh, который собирает основную информацию о системе:
1#!/bin/bash
2
3echo "=== МОНИТОРИНГ СИСТЕМЫ ==="
4echo "Дата и время: $(date)"
5echo
6
7echo "=== ИНФОРМАЦИЯ О СИСТЕМЕ ==="
8echo "ОС: $(uname -s)"
9echo "Ядро: $(uname -r)"
10echo "Архитектура: $(uname -m)"
11echo "Время работы: $(uptime -p)"
12echo
13
14echo "=== ЗАГРУЗКА ПРОЦЕССОРА ==="
15uptime
16echo
17
18echo "=== ИСПОЛЬЗОВАНИЕ ПАМЯТИ ==="
19free -h
20echo
21
22echo "=== ДИСКОВОЕ ПРОСТРАНСТВО ==="
23df -h | head -10
24echo
25
26echo "=== ТОП-5 ПРОЦЕССОВ ПО CPU ==="
27ps aux --sort=-%cpu | head -6
28echo
29
30echo "=== ТОП-5 ПРОЦЕССОВ ПО ПАМЯТИ ==="
31ps aux --sort=-%mem | head -6
32echo
33
34echo "=== СЕТЕВЫЕ СОЕДИНЕНИЯ ==="
35ss -tuln | head -10
Сделайте скрипт исполняемым:
1chmod +x system_monitor.sh
Запустите его:
1./system_monitor.sh
Задания для самостоятельной работы
Задание 9. Анализ производительности
- Создайте нагрузку на систему и проанализируйте ее:
1# Запустите несколько процессов для создания нагрузки
2yes > /dev/null &
3yes > /dev/null &
4sleep 60
5killall yes
- Во время нагрузки запустите мониторинг:
1# В другом терминале
2top
- Проанализируйте результаты и сделайте выводы о поведении системы.
Задание 10. Диагностика проблем
- Создайте скрипт
troubleshoot.sh, который:
1#!/bin/bash
2
3echo "=== ДИАГНОСТИКА СИСТЕМЫ ==="
4
5# Проверка загрузки системы
6LOAD=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')
7echo "Средняя загрузка: $LOAD"
8
9# Проверка использования памяти
10MEM_USAGE=$(free | grep Mem | awk '{printf("%.1f"), $3/$2 * 100.0}')
11echo "Использование памяти: $MEM_USAGE%"
12
13# Проверка дискового пространства
14DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
15echo "Использование диска: $DISK_USAGE%"
16
17# Проверка процессов
18PROCESS_COUNT=$(ps aux | wc -l)
19echo "Количество процессов: $PROCESS_COUNT"
20
21# Проверка критических ситуаций
22if (( $(echo "$LOAD > 2.0" | bc -l) )); then
23 echo "ВНИМАНИЕ: Высокая загрузка системы!"
24fi
25
26if (( $(echo "$MEM_USAGE > 90" | bc -l) )); then
27 echo "ВНИМАНИЕ: Мало свободной памяти!"
28fi
29
30if (( DISK_USAGE > 90 )); then
31 echo "ВНИМАНИЕ: Мало места на диске!"
32fi
33
34echo "=== ЗАВЕРШЕНО ==="
Контрольные вопросы
- Какая команда показывает общую загрузку системы?
- Что означают три числа в выводе команды
uptime? - В чем разница между
free -hиcat /proc/meminfo? - Как найти процесс, который больше всего использует CPU?
- Что показывает команда
df -h? - Как просмотреть системные логи в реальном времени?
- В чем разница между
ps auxиtop? - Как проверить использование swap?
- Что означает статус процесса в выводе
ps? - Какой инструмент лучше использовать для мониторинга дисковой активности?
Дополнительные материалы
man top- справочная страница topman free- справочная страница freeman ps- справочная страница psman uptime- справочная страница uptimeman journalctl- справочная страница journalctl