Какие ключевые ресурсы машины (сервера) ты мониторишь?

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

Ответ

Постоянный мониторинг ресурсов — основа стабильности инфраструктуры. Я отслеживаю следующие ключевые метрики, используя как базовые утилиты OS, так и системы сбора (Prometheus, Datadog):

1. CPU (Процессор):

  • Использование (%us, %sy, %wa): %wa (wait for I/O) — важный индикатор проблем с диском.
  • Load Average (средняя нагрузка): Показывает количество процессов в состоянии R (работают) и D (ожидают I/O). Значение выше числа ядер — сигнал для анализа.
  • Контекстные переключения и прерывания: Высокие значения могут указывать на проблемное приложение.

2. Memory (Память):

  • Использование RAM и Swap: Цель — минимизировать использование swap, так как это убивает производительность.
  • Slab, Page Cache, Buffers: Анализ помогает понять, является ли высокое использование памяти проблемой (активные процессы) или оптимизацией (кэш диска).
  • OOM Killer: Отслеживание событий Out-Of-Memory Killer в логах ядра (dmesg | grep -i kill).

3. Disk (Диск):

  • Свободное пространство: Критичная метрика, отслеживаемая с запасом. Заполнение на 100% ломает работу приложений.
  • IOPS и Пропускная способность: Зависит от типа диска (HDD/SSD, облачный gp2/gp3/io1).
  • Utilization (%util в iostat), Latency (await): Высокий await указывает на очередь запросов к диску — узкое место.

4. Network (Сеть):

  • Пропускная способность (in/out): Чтобы не упереться в лимиты сетевого интерфейса или облачного лимита.
  • Количество ошибок/отброшенных пакетов (errs, drop): Указывает на проблемы с сетевым оборудованием или перегрузку.
  • TCP-соединения: Количество в состояниях ESTABLISHED, TIME_WAIT. Большое число TIME_WAIT может исчерпать доступные порты.

Инструменты и практика:

  • Быстрая проверка: htop, vmstat 1, iostat -xz 1, dstat.
  • Сбор метрик: Агенты node_exporter для Prometheus собирают все эти метрики.
  • Алертинг: В Grafana или через Alertmanager настраиваю алерты, например: Диск заполнен > 85%, Load Avg (5m) > ядра*2, Память available < 10%.
  • Пример команды для анализа нагрузки диска: iostat -dx 2 покажет, какой именно диск (sdb) имеет высокую утилизацию и latency.