Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

Node Exporter: какие метрики реально важны

Node Exporter экспортирует сотни метрик о состоянии Linux-сервера. Большинство из них вы никогда не откроете в Grafana. Разберём, какие метрики реально говорят о проблемах — и на что смотреть в первую очередь при инциденте.

CPU: не только utilization

Простая утилизация CPU (node_cpu_seconds_total{mode="idle"}) говорит мало. Важны режимы:

iowait — процент времени, когда CPU простаивает в ожидании завершения дисковых операций. Высокий iowait (> 20%) указывает на узкое место в подсистеме хранения, а не на нехватку процессора.

# PromQL: iowait по инстансам
avg by (instance) (rate(node_cpu_seconds_total{mode="iowait"}[5m])) * 100

steal — время, украденное гипервизором у виртуальной машины. Если steal > 5% на облачной VM — сосед по гипервизору потребляет ресурсы, и надо обращаться к провайдеру.

avg by (instance) (rate(node_cpu_seconds_total{mode="steal"}[5m])) * 100

softirq и irq — высокие значения могут указывать на перегрузку сетевой подсистемы или проблемы с прерываниями.

RAM: available важнее free

Типичная ошибка — смотреть на node_memory_MemFree_bytes. На Linux свободная память — это почти всегда 0, потому что ядро использует её для кэша.

Правильная метрика — node_memory_MemAvailable_bytes: это память, которую ядро реально может отдать приложениям без свопинга (free + reclaimable cache).

# Доступная память в %
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100

Алерт при доступной памяти < 10%:

- alert: LowMemory
  expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
  for: 5m
  labels:
    severity: warning

Диски: inode и latency

Заполнение диска — очевидно. Но есть два менее очевидных показателя:

Inode: можно заполнить диск по inode при наличии свободного места. Особенно актуально для /var/log, /tmp, почтовых серверов.

# Использование inode в %
(node_filesystem_files{mountpoint="/"} - node_filesystem_files_free{mountpoint="/"}) / node_filesystem_files{mountpoint="/"} * 100

Latency дисковых операций — критична для баз данных:

# Средняя latency на запись (мс)
rate(node_disk_write_time_seconds_total[5m]) / rate(node_disk_writes_completed_total[5m]) * 1000

Латентность > 20 мс для HDD и > 2 мс для SSD — повод для расследования.

Сеть: errors и drops

Пропускная способность — не единственное, что важно в сетевых метриках.

node_network_receive_errs_total и node_network_transmit_errs_total — ошибки на сетевом интерфейсе. Ненулевые значения указывают на аппаратные проблемы или плохой кабель.

node_network_receive_drop_total и node_network_transmit_drop_total — дропы пакетов. Причины: переполнение rx/tx буферов, настройки ядра (net.core.rmem_max), перегрузка интерфейса.

# Скорость дропов
rate(node_network_receive_drop_total{device="eth0"}[5m])

Textfile Collector: кастомные метрики

Textfile collector позволяет добавить любые метрики без написания экспортера. Node Exporter читает .prom-файлы из указанной директории:

# Запуск с textfile collector
node_exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector

Пример: мониторинг результата резервного копирования:

#!/bin/bash
# /etc/cron.daily/backup-check
BACKUP_SUCCESS=1
# ... логика проверки бэкапа ...
echo "backup_last_success_timestamp $(date +%s)" > /var/lib/node_exporter/textfile_collector/backup.prom
echo "backup_success ${BACKUP_SUCCESS}" >> /var/lib/node_exporter/textfile_collector/backup.prom

USE Method: системный подход

Методология USE (Utilization, Saturation, Errors) от Брендана Грегга — структурированный способ диагностики:

  • Utilization — насколько ресурс занят (CPU %, disk %)
  • Saturation — есть ли очередь (load average, disk queue depth)
  • Errors — есть ли ошибки (disk errors, network errors)

Применяйте USE ко всем ключевым ресурсам: CPU, RAM, диски, сеть. Если Utilization < 80%, Saturation ≈ 0, Errors = 0 — ресурс в порядке. Любое отклонение — сигнал для расследования.

Мониторинг полезен только тогда, когда вы знаете, что именно смотреть. Эти метрики закрывают 90% инцидентов с производительностью в типичной Linux-инфраструктуре.

3 Ответа

  1. Про inode — золотые слова. Один раз у нас упал почтовый сервер именно по этой причине: место на диске было, а файлы создавать нельзя. С тех пор иноды в обязательном мониторинге.

  1. steal метрика очень важна в облаке. Как-то деградировала производительность непонятно почему — оказалось, steal был на уровне 15%, переехали на другой хост через поддержку и всё пришло в норму.

  1. Textfile collector недооценён — мы через него мониторим статус антивирусных сигнатур, актуальность бэкапов и даже результаты compliance-проверок. Очень гибкий инструмент.