Какие основные ресурсы Linux-сервера необходимо мониторить?

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

Ответ

Ключевые ресурсы, за которыми я постоянно слежу на серверах:

  1. Центральный процессор (CPU):

    • Что смотреть: Утилизация (%user, %system, %iowait), загрузка (load average). Высокий iowait часто указывает на проблемы с диском.
    • Инструменты: top, htop, mpstat, vmstat, sar.
    • Пример: mpstat -P ALL 1 показывает утилизацию по каждому ядру каждую секунду.
  2. Оперативная память (RAM):

    • Что смотреть: Общее использование, свободная память, кэш/buffer, использование swap. Опасный признак — активное использование swap при высокой загрузке RAM.
    • Инструменты: free -h, vmstat, top.
    • Пример: free -h дает понятный вывод в гигабайтах.
  3. Дисковое пространство и ввод-вывод (Disk I/O):

    • Что смотреть: Свободное место на разделах (/, /var, /home), скорость чтения/записи (IOPS, throughput), время отклика (latency), очередь запросов.
    • Инструменты: df -h, iostat, iotop, du -sh.
    • Пример: iostat -dx 2 показывает статистику по устройствам каждые 2 секунды, включая await (среднее время ответа) и %util (процент утилизации).
  4. Сетевая подсистема:

    • Что смотреть: Пропускную способность (throughput) на интерфейсах, количество ошибок/сбросов, количество активных соединений, задержку (latency).
    • Инструменты: iftop, nethogs, ss, netstat, ping, traceroute.
    • Пример: ss -tulpn показывает все слушающие сокеты и связанные с ними процессы.
  5. Контекст процесса:

    • Что смотреть: Количество запущенных процессов/потоков, использование файловых дескрипторов.
    • Инструменты: ps, lsof, /proc/sys/fs/file-nr.
    • Пример: lsof -u <username> или lsof -p <PID> помогает найти утечки файловых дескрипторов.

Практический подход: Для production-систем я настраиваю сбор метрик по всем этим ресурсам в централизованную систему мониторинга (например, Prometheus с node_exporter) и ставлю алерты на критические пороги (например, disk_usage > 85% или load_average_5m > число_ядер * 2).