Какие команды и инструменты использовать для проверки загрузки ресурсов на Linux-сервере?

«Какие команды и инструменты использовать для проверки загрузки ресурсов на Linux-сервере?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для оперативного анализа и постоянного мониторинга ресурсов сервера я использую следующий набор утилит и команд, от быстрых проверок до глубокой диагностики.

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 выявлять тренды, ведущие к проблемам.