hostprofi.ru
Подобрать хостинг
Термин·буква P

Prometheus

краткое определение

Prometheus — система мониторинга и сбора метрик с открытым исходным кодом, разработанная в SoundCloud. Хранит метрики в виде временных рядов, поддерживает гибкий язык запросов PromQL и интегрируется с Grafana для визуализации.

Prometheus — open-source система мониторинга и алертинга, написанная на Go. Разработана в SoundCloud в 2012 году, передана в CNCF (Cloud Native Computing Foundation) в 2016 году. Собирает метрики через HTTP-эндпоинты (/metrics), хранит в локальной TSDB и предоставляет язык запросов PromQL. Де-факто стандарт мониторинга в Kubernetes-окружениях.

Архитектура Prometheus

Модель работы — pull-based: Prometheus сам опрашивает (scrape) целевые сервисы по расписанию (обычно каждые 15–30 секунд). Это отличает его от push-систем (StatsD, InfluxDB с telegraf) и упрощает обнаружение отказов — если сервис перестал отвечать, это видно сразу.

Компоненты экосистемы:

  • Prometheus Server — основной процесс: scraping, хранение TSDB, вычисление alerting rules
  • Alertmanager — маршрутизация алертов в PagerDuty, Slack, email; дедупликация и группировка
  • Pushgateway — для кратковременных задач (cron jobs), живущих короче периода scraping
  • Exporters — агенты для систем без нативной поддержки: node_exporter (CPU, RAM, диски), nginx-prometheus-exporter, postgres_exporter, blackbox_exporter

PromQL — язык запросов

PromQL позволяет вычислять производные метрики в реальном времени. Примеры:

  • Нагрузка CPU: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
  • Свободная RAM в %: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100
  • RPS сервера: rate(http_requests_total[1m])
  • Диск заполнен более 85%: node_filesystem_free_bytes / node_filesystem_size_bytes * 100 < 15

Алертинг настраивается через rules-файлы: при выполнении PromQL-условия дольше заданного времени (for: 5m) Alertmanager получает fire-событие и отправляет уведомление.

История

Prometheus создали Мэтт Прауд (Matt Proud) и Джулиус Вольц (Julius Volz) в SoundCloud в 2012 году. Вдохновлён системой Borgmon из Google (внутренняя, не открытая). В 2016 году передан в CNCF и стал вторым после Kubernetes incubating-проектом. В 2018 году достиг статуса Graduated (зрелый проект CNCF). В 2022 году выпущен Prometheus 2.40 с улучшенной производительностью TSDB.

Prometheus в хостинге

Для VPS и выделенных серверов минимальный стек: Prometheus + node_exporter + Grafana. node_exporter устанавливается на каждый целевой сервер и экспортирует системные метрики на порту 9100. Grafana подключается к Prometheus как datasource и отображает готовые дашборды (ID 1860 — Node Exporter Full, самый популярный). Весь стек разворачивается за 30 минут через Docker Compose.

Для долгосрочного хранения метрик (более 15 дней) используют VictoriaMetrics или Thanos как remote storage. По сравнению с Nagios, Prometheus не требует установки агентов: достаточно добавить /metrics эндпоинт в приложение или запустить exporter.

Мониторинг хостинга: что отслеживать

Для типичного VPS рекомендуемый минимальный набор метрик Prometheus через node_exporter: загрузка CPU (iowait > 30% — признак проблем с диском), использование оперативной памяти, свободное место на диске (< 15% — критично), IOPS (операции ввода-вывода), сетевой трафик (bytes in/out), количество TCP-соединений. Алерты настраиваются в Alertmanager: при disk_free < 10% — warning, < 5% — critical.

Ключевые метрики для мониторинга серверов

Обязательный минимум метрик для мониторинга через node_exporter:

  • CPU: node_cpu_seconds_total — нагрузка по ядрам и режимам (user, system, iowait)
  • RAM: node_memory_MemAvailable_bytes — свободная память; алерт при <10%
  • Диск: node_filesystem_free_bytes — свободное место; алерт при <15%
  • Сеть: node_network_receive_bytes_total и node_network_transmit_bytes_total — входящий и исходящий трафик
  • Нагрузка: node_load1 — средняя нагрузка за 1 минуту

Для алертинга на уровне сервиса: prometheus_http_requests_total (HTTP RPS и коды ответов), process_open_fds (открытые файловые дескрипторы — признак утечки ресурсов). Интеграция с PagerDuty через Alertmanager настраивается за 10 минут и обеспечивает немедленное уведомление дежурного при сработавшем алерте.

Другие термины