Ответ
Постоянный мониторинг ресурсов — основа стабильности инфраструктуры. Я отслеживаю следующие ключевые метрики, используя как базовые утилиты 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.