// Engineering Log
Мониторинг: Часть 3 — Prometheus, Node Exporter и Grafana
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Деплой и стабильная работа.
Prometheus — система мониторинга и база данных временных рядов с открытым исходным кодом (лицензия Apache 2.0). Её создали в компании SoundCloud в 2012 году, а в 2016-м проект вошёл в Cloud Native Computing Foundation вторым после Kubernetes. Версия 3.0 вышла в ноябре 2024 года; на сентябрь 2026 года актуальна 3.14, а 3.13 объявлена выпуском с долгосрочной поддержкой (LTS).
Prometheus обычно используют вместе с Node Exporter, который отдаёт метрики Linux-сервера, Alertmanager, который рассылает оповещения, и Grafana, в которой строят панели.
Как работает Prometheus
Главная особенность — модель pull: Prometheus сам с заданным интервалом обращается к целям по HTTP и забирает метрики в текстовом формате. Каждая метрика — это имя и набор меток, например node_cpu_seconds_total{cpu="0",mode="idle"}. Метки позволяют фильтровать и группировать данные в запросах.
Компоненты экосистемы:
- Prometheus Server — собирает метрики, хранит их на локальном диске, выполняет запросы на языке PromQL и проверяет правила оповещений.
- Экспортеры — программы, которые переводят данные системы в формат Prometheus:
node_exporterдля серверов,postgres_exporterиmysqld_exporterдля баз данных,blackbox_exporterдля проверки сайтов и портов извне. - Alertmanager — принимает сработавшие оповещения, группирует их, подавляет повторы и отправляет в Telegram, на почту или в сервис дежурств.
- Pushgateway — промежуточный узел для коротких задач, например ночного резервного копирования, которые завершаются раньше, чем Prometheus успеет их опросить.
Минимальная установка
Node Exporter запускают на каждом сервере; по умолчанию он отдаёт метрики на порту 9100. Сам Prometheus читает конфигурацию из prometheus.yml:
global:
scrape_interval: 30s
evaluation_interval: 30s
rule_files:
- /etc/prometheus/rules/*.yml
alerting:
alertmanagers:
- static_configs:
- targets: ["localhost:9093"]
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: node
static_configs:
- targets:
- "192.0.2.21:9100"
- "192.0.2.22:9100"Порт 9100 должен быть доступен только серверу Prometheus: метрики раскрывают многое об устройстве системы.
Правило оповещения
Правила хранятся в отдельных файлах. Пример двух типовых правил — сервер не отвечает и заканчивается место на диске:
groups:
- name: node
rules:
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: critical
annotations:
summary: "{{ $labels.instance }} не отвечает 5 минут"
- alert: DiskSpaceLow
expr: |
node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"}
/ node_filesystem_size_bytes{fstype!~"tmpfs|overlay"} < 0.10
for: 15m
labels:
severity: warning
annotations:
summary: "{{ $labels.instance }}: свободно меньше 10 % на {{ $labels.mountpoint }}"Параметр for задаёт, сколько условие должно держаться до срабатывания, — это отсекает кратковременные всплески. Файл правил перед применением проверяют командой promtool check rules.
Маршрут в Alertmanager
Alertmanager решает, кому и как отправить оповещение. Критические — сразу в Telegram, остальные — на почту с группировкой:
route:
receiver: email
group_by: ["alertname", "instance"]
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
routes:
- receiver: telegram
matchers:
- severity="critical"
group_wait: 10s
receivers:
- name: email
email_configs:
- to: "admin@example.ru"
- name: telegram
telegram_configs:
- bot_token: "ТОКЕН_БОТА"
chat_id: 123456789Для отправки почты в блоке global дополнительно указывают SMTP-сервер (smtp_smarthost, smtp_from и учётные данные).
Grafana
У Prometheus есть простой встроенный интерфейс для запросов, но панели строят в Grafana. Она подключает Prometheus как источник данных, поддерживает десятки других источников и позволяет собирать интерактивные панели с переменными и оповещениями. Для Node Exporter есть готовые панели в каталоге Grafana, их импортируют по номеру.
С апреля 2021 года Grafana распространяется под лицензией AGPLv3 (до этого — Apache 2.0). Для внутреннего использования это ничего не меняет, но если вы изменяете код Grafana и предоставляете её как сервис другим, изменения придётся открыть.
Достоинства
- PromQL. Гибкий язык запросов: скорости изменения, процентили, агрегация по меткам.
- Экспортеры почти для всего. Базы данных, веб-серверы, очереди, сетевое оборудование по SNMP.
- Обнаружение целей. Prometheus сам находит цели в Kubernetes, Consul, облаках и по DNS.
- Зрелые оповещения. Alertmanager умеет группировать, подавлять и маршрутизировать уведомления.
- Правила записи. Тяжёлые запросы можно заранее считать и сохранять как новые метрики.
Недостатки
- Порог входа. Нужно освоить конфигурацию, PromQL и устройство меток.
- Локальное хранение. По умолчанию данные хранятся 15 дней на диске одного сервера. Для долгого хранения и нескольких серверов Prometheus используют внешние хранилища: VictoriaMetrics, Thanos, Mimir.
- Модель pull. Цели за NAT или в изолированных сетях опрашивать трудно; выручают агенты с отправкой данных (remote write) или Pushgateway.
- Высокая кардинальность. Метки с уникальными значениями — идентификаторами пользователей, полными URL — резко увеличивают число рядов и расход памяти.
Типичные ошибки
- Уникальные значения в метках. Главная причина переполнения памяти. В метки выносят только то, по чему действительно группируют.
- Нет задержки
for. Оповещения срабатывают на каждый секундный всплеск. - Мониторинг без проверки самого мониторинга. Если упал Prometheus, оповещений не будет. Нужна внешняя проверка доступности или второй экземпляр.
- Экспортеры открыты в интернет. Порт 9100 без ограничения доступа раскрывает версии, разделы дисков и сетевые интерфейсы.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Деплой и стабильная работа
Docker, CI/CD, релизы, мониторинг, observability и разбор инцидентов.
Часто с этим приходят
- Настроить деплой без ручных действий и хаоса
- Подключить мониторинг, алерты и базовую observability
- Разобрать инциденты и стабилизировать production
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related