Prometheus: документация на русском языке

Официальная документация Prometheus публикуется только на английском языке, поэтому русскоязычным инженерам приходится либо читать оригинал, либо собирать знания по переведённым статьям и гайдам. Если вы только разворачиваете систему мониторинга и ищете prometheus документацию на русском, эта статья соберёт ключевые разделы официального руководства в одном месте: архитектуру, установку, конфигурацию, язык запросов PromQL и настройку оповещений.

Материал построен как практический конспект официальной документации с пояснениями на русском. Точные параметры и поведение могут отличаться между версиями Prometheus, поэтому перед внедрением в продакшн сверяйтесь с оригинальной документацией вашей версии.

Что такое Prometheus и как он устроен

Prometheus — это система мониторинга и база данных временных рядов с открытым исходным кодом, изначально разработанная в SoundCloud и ныне являющаяся проектом Cloud Native Computing Foundation. Система работает по pull-модели: сервер сам опрашивает (скрейпит) цели по HTTP и забирает метрики в текстовом формате.

Архитектура включает несколько ключевых компонентов. Основной сервер хранит метрики во встроенной базе временных рядов (TSDB). За сбор данных отвечают экспортеры — небольшие агенты, которые преобразуют метрики сторонних систем (Linux, MySQL, HAProxy) в формат Prometheus. Для краткоживущих задач, которые нельзя скрейпить напрямую, используется Pushgateway, а оповещения обрабатывает отдельный компонент Alertmanager.

  • 📊 Prometheus Server — сбор, хранение метрик и выполнение запросов PromQL
  • 🔌 Экспортеры — node_exporter, blackbox_exporter и другие агенты сбора
  • 🔔 Alertmanager — маршрутизация, группировка и дедупликация алертов
  • 📈 Grafana — визуализация (не входит в Prometheus, но является стандартом де-факто)

Установка Prometheus: базовый сценарий

Самый простой способ начать — скачать готовый бинарный файл с официальной страницы загрузок проекта. Prometheus не требует внешних зависимостей: весь стек поставляется одним исполняемым файлом. Для Linux достаточно распаковать архив и запустить бинарник с указанием конфигурационного файла.

tar xvfz prometheus-*.tar.gz

cd prometheus-*

./prometheus --config.file=prometheus.yml

После запуска веб-интерфейс становится доступен на порту 9090. Откройте в браузере адрес http://localhost:9090 и проверьте страницу Status → Targets: там должен отображаться сам Prometheus как цель мониторинга в состоянии UP. Альтернативный путь — запуск в Docker одной командой, что удобно для тестирования.

⚠️ Внимание: по умолчанию веб-интерфейс Prometheus не имеет встроенной аутентификации. Не выставляйте порт 9090 в открытую сеть без reverse-proxy с авторизацией или firewall-правил.

☑️ Проверка после установки

Выполнено: 0 / 4

Конфигурационный файл prometheus.yml

Вся настройка сервера описывается в файле prometheus.yml в формате YAML. Документация делит конфигурацию на глобальные параметры и секции скрейпинга. Разберём минимальный рабочий пример.

global:

scrape_interval: 15s

evaluation_interval: 15s

scrape_configs:

- job_name: "prometheus"

static_configs:

- targets: ["localhost:9090"]

- job_name: "node"

static_configs:

- targets: ["localhost:9100"]

Параметр scrape_interval задаёт частоту опроса целей, а scrape_configs перечисляет задания сбора. Каждая цель автоматически получает метку job и instance, которые потом используются в запросах. После правки файла примените конфигурацию без перезапуска — отправкой сигнала SIGHUP процессу или HTTP-запросом на endpoint перезагрузки, если он включён флагом запуска.

ПараметрНазначениеТипичное значение
scrape_intervalКак часто опрашивать цели15s – 1m
evaluation_intervalКак часто вычислять правила и алерты15s – 1m
scrape_timeoutТаймаут одного опроса цели10s (не больше интервала)
rule_filesПути к файлам с правилами записи и алертамиrules/*.yml
📊 Как вы разворачиваете Prometheus?
Бинарник на сервере
Docker / Docker Compose
Kubernetes (Prometheus Operator)
Только изучаю, ещё не ставил

Язык запросов PromQL: основы

PromQL — собственный язык запросов Prometheus, и именно он вызывает больше всего вопросов у новичков. Запрос может быть простым именем метрики, например up, или сложным выражением с функциями, агрегациями и селекторами по меткам.

# Средняя загрузка CPU по всем ядрам за 5 минут

rate(node_cpu_seconds_total{mode="user"}[5m])

Топ-3 процесса по потреблению памяти

topk(3, node_memory_MemAvailable_bytes)

Ключевая концепция — различие между instant vector (мгновенное значение) и range vector (диапазон за период, указывается в квадратных скобках). Функции вроде rate() и increase() принимают только диапазон. Метрики делятся на четыре типа: counter (только растущий счётчик), gauge (произвольное значение), histogram и summary (распределения с квантилями).

Настройка алертов и Alertmanager

Правила оповещений описываются в отдельных YAML-файлах, которые подключаются через секцию rule_files. Каждое правило содержит PromQL-выражение, длительность срабатывания for и аннотации с текстом уведомления.

groups:

- name: example

rules:

- alert: InstanceDown

expr: up == 0

for: 5m

annotations:

summary: "Цель {{ $labels.instance }} недоступна"

Сам Prometheus только вычисляет правила и отправляет сработавшие алерты в Alertmanager. Уже Alertmanager отвечает за группировку одинаковых событий, подавление дублей (inhibition), периоды тишины (silences) и доставку в каналы: email, Slack, Telegram через webhook-интеграции. Параметр for: 5m критически важен — без него алерт сработает на единичный пропуск скрейпа и завалит вас ложными уведомлениями.

⚠️ Внимание: синтаксис и доступные функции PromQL меняются между версиями. Перед копированием примеров из статей проверяйте, к какой версии Prometheus они относятся, и сверяйтесь с changelog проекта.
Где искать официальную документацию

Полная документация доступна на официальном сайте проекта prometheus.io в разделе Docs. Русскоязычного официального перевода не существует — все русские материалы являются любительскими переводами или авторскими гайдами. Исходный код и спецификации ведутся в репозиториях проекта на GitHub, там же можно отслеживать изменения между версиями.

Популярные экспортеры и интеграции

Экосистема экспортеров — одна из главных сил Prometheus. Для мониторинга серверов на Linux стандартом считается node_exporter, который отдаёт метрики CPU, памяти, дисков и сети на порту 9100. Для проверки доступности сайтов и сетевых сервисов «снаружи» применяется blackbox_exporter, умеющий выполнять HTTP-, TCP-, ICMP- и DNS-пробы.

Многие приложения (например, Traefik, etcd, Kubernetes) экспортируют метрики в формате Prometheus нативно, без отдельных агентов. Для собственных приложений существуют официальные клиентские библиотеки для Go, Python, Java и других языков — они позволяют добавить endpoint /metrics прямо в код сервиса.

Часто задаваемые вопросы

Существует ли официальная документация Prometheus на русском?

Нет, официальный перевод отсутствует — документация ведётся только на английском языке. Русскоязычные материалы представлены сторонними гайдами, переводами отдельных разделов и статьями сообщества, качество и актуальность которых нужно оценивать самостоятельно.

Чем Prometheus отличается от Zabbix?

Главное отличие — модель сбора и хранения: Prometheus опрашивает цели сам (pull) и хранит данные как временные ряды с метками, а запросы выполняются через PromQL. Zabbix исторически ориентирован на push-агентов и реляционную БД. Prometheus лучше подходит для динамических сред вроде Kubernetes, Zabbix — для классической инфраструктуры с готовыми шаблонами.

Как долго Prometheus хранит метрики?

По умолчанию локальное хранилище ограничено периодом retention, который задаётся флагом запуска (исторически — 15 дней, в новых версиях параметр может настраиваться по времени или объёму). Для долгосрочного хранения используются внешние системы через remote write: например, VictoriaMetrics, Thanos или Mimir.

Можно ли мониторить Windows-серверы через Prometheus?

Да, для Windows существует экспортер windows_exporter (ранее известный как wmi_exporter), который собирает метрики системы через WMI/Performance Counters. Принцип настройки тот же: экспортер ставится на целевой хост, а его адрес добавляется в scrape_configs.

Нужна ли Grafana, если у Prometheus есть свой веб-интерфейс?

Встроенный интерфейс Prometheus подходит для отладки запросов и проверки целей, но не для построения дашбордов. Для визуализации в продакшне практически всегда используют Grafana, которая подключается к Prometheus как к источнику данных и предоставляет готовые дашборды для популярных экспортеров.