Лаб. работа “Мониторинг и анализ системы 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. Общая информация о системе
- Получите общую информацию о системе:
- Узнайте время работы системы:
- Получите информацию о процессоре:
- Проверьте информацию о памяти:
Задание 2. Мониторинг процессора
- Запустите
topдля просмотра процессов в реальном времени:
Нажмите q для выхода. Обратите внимание на: - Общую загрузку процессора (%Cpu(s)) - Список процессов с наибольшим использованием CPU - Информацию о памяти в верхней части
- Используйте
htop(если установлен) для более удобного просмотра:
- Получите статистику процессора:
Эта команда покажет статистику процессора каждые 1 секунду, 3 раза.
Задание 3. Анализ использования памяти
- Проверьте использование оперативной памяти:
- Получите детальную информацию о памяти:
- Проверьте использование swap:
- Используйте
vmstatдля мониторинга виртуальной памяти:
Задание 4. Мониторинг дискового пространства
- Проверьте использование дискового пространства:
- Найдите самые большие каталоги в домашней папке:
- Проверьте информацию о блочных устройствах:
- Мониторьте дисковую активность:
Нажмите q для выхода.
Задание 5. Анализ процессов
- Найдите процессы, потребляющие больше всего CPU:
- Найдите процессы, потребляющие больше всего памяти:
- Найдите конкретный процесс по имени:
- Получите детальную информацию о процессе:
Задание 6. Системные логи
- Просмотрите последние системные сообщения:
- Просмотрите логи за последний час:
- Найдите ошибки в системных логах:
- Следите за логами в реальном времени:
Нажмите Ctrl+C для остановки.
Задание 7. Мониторинг сетевой активности
- Проверьте сетевые интерфейсы:
- Просмотрите сетевые соединения:
- Мониторьте сетевой трафик (требует установки iftop):
Задание 8. Создание скрипта мониторинга
Создайте скрипт system_monitor.sh, который собирает основную информацию о системе:
#!/bin/bash
echo "=== МОНИТОРИНГ СИСТЕМЫ ==="
echo "Дата и время: $(date)"
echo
echo "=== ИНФОРМАЦИЯ О СИСТЕМЕ ==="
echo "ОС: $(uname -s)"
echo "Ядро: $(uname -r)"
echo "Архитектура: $(uname -m)"
echo "Время работы: $(uptime -p)"
echo
echo "=== ЗАГРУЗКА ПРОЦЕССОРА ==="
uptime
echo
echo "=== ИСПОЛЬЗОВАНИЕ ПАМЯТИ ==="
free -h
echo
echo "=== ДИСКОВОЕ ПРОСТРАНСТВО ==="
df -h | head -10
echo
echo "=== ТОП-5 ПРОЦЕССОВ ПО CPU ==="
ps aux --sort=-%cpu | head -6
echo
echo "=== ТОП-5 ПРОЦЕССОВ ПО ПАМЯТИ ==="
ps aux --sort=-%mem | head -6
echo
echo "=== СЕТЕВЫЕ СОЕДИНЕНИЯ ==="
ss -tuln | head -10Сделайте скрипт исполняемым:
Запустите его:
Задания для самостоятельной работы
Задание 9. Анализ производительности
- Создайте нагрузку на систему и проанализируйте ее:
- Во время нагрузки запустите мониторинг:
- Проанализируйте результаты и сделайте выводы о поведении системы.
Задание 10. Диагностика проблем
- Создайте скрипт
troubleshoot.sh, который:
#!/bin/bash
echo "=== ДИАГНОСТИКА СИСТЕМЫ ==="
# Проверка загрузки системы
LOAD=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')
echo "Средняя загрузка: $LOAD"
# Проверка использования памяти
MEM_USAGE=$(free | grep Mem | awk '{printf("%.1f"), $3/$2 * 100.0}')
echo "Использование памяти: $MEM_USAGE%"
# Проверка дискового пространства
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
echo "Использование диска: $DISK_USAGE%"
# Проверка процессов
PROCESS_COUNT=$(ps aux | wc -l)
echo "Количество процессов: $PROCESS_COUNT"
# Проверка критических ситуаций
if (( $(echo "$LOAD > 2.0" | bc -l) )); then
echo "ВНИМАНИЕ: Высокая загрузка системы!"
fi
if (( $(echo "$MEM_USAGE > 90" | bc -l) )); then
echo "ВНИМАНИЕ: Мало свободной памяти!"
fi
if (( DISK_USAGE > 90 )); then
echo "ВНИМАНИЕ: Мало места на диске!"
fi
echo "=== ЗАВЕРШЕНО ==="Контрольные вопросы
- Какая команда показывает общую загрузку системы?
- Что означают три числа в выводе команды
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