Ответ
Для оперативного анализа и постоянного мониторинга ресурсов сервера я использую следующий набор утилит и команд, от быстрых проверок до глубокой диагностики.
1. Быстрый снимок состояния (первая линия диагностики): Комбинация команд, которую я запускаю сразу при подключении к проблемному серверу.
# 1. Load Average и uptime (показатель общей загрузки системы)
echo "=== Load Average (1, 5, 15 min) ===" && uptime
# 2. Память и swap (в человекочитаемом формате)
echo "n=== Memory & Swap ===" && free -h
# 3. Дисковое пространство на критичных разделах
echo "n=== Disk Usage ===" && df -h / /var /home 2>/dev/null
# 4. TOP процессов по потреблению CPU и памяти
echo "n=== Top CPU/Memory Hogs ===" && ps aux --sort=-%cpu | head -5 && echo "---" && ps aux --sort=-%mem | head -5
2. Интерактивные мониторы для детального анализа:
htop: Улучшенная заменаtop. Показывает дерево процессов, цветовую маркировку, удобную сортировку.glances: Всеобъемлющий монитор в одном терминале (CPU, Mem, Disk I/O, Network, процессы). Отлично подходит для быстрого обзора.nmon: Режим реального времени (nmon) или запись для последующего анализа. Показывает разбивку по CPU, дискам, сети.
3. Специализированные утилиты для профилирования проблем:
- Дисковый ввод-вывод:
# Показать текущую активность дисков iostat -dx 2 5 # Или используйте `iotop` для просмотра процессов, активно работающих с диском sudo iotop -o - Сетевой трафик и соединения:
# Показать сетевой трафик по интерфейсам (обновляется раз в секунду) sar -n DEV 1 # Показать список установленных соединений (полезно при подозрении на исчерпание файловых дескрипторов) ss -s - Память и свопинг:
# Детальная статистика по памяти, включая свопинг vmstat 1 5 # Проверить, не происходит ли активный своппинг (значение si/so > 0)
4. Интеграция в систему мониторинга (Prometheus + Node Exporter): Для постоянного наблюдения настраиваю Node Exporter, который собирает все эти метрики и отдает их Prometheus.
- Ключевые метрики для алертинга:
node_load1> (число ядер * 0.8) — высокая загрузка CPU.node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.1— мало свободной памяти.rate(node_disk_io_time_seconds_total[5m]) > 0.8— диски перегружены I/O.node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} < 0.15— заканчивается место на диске.
Эти инструменты позволяют не только тушить «пожары», но и proactively выявлять тренды, ведущие к проблемам.