Prometheus (База данных временных рядов)

⌘K

Prometheus (База данных временных рядов)

Prometheus — это система мониторинга и сбора метрик с временными метками (time series), разработанная для высокой надёжности, гибкости и интеграции с современными распределёнными системами. Она активно используется в DevOps, SRE и облачной инженерии как ключевой компонент для наблюдаемости (observability).

Prometheus имеет встроенную time-series базу данных, собственный язык запросов — PromQL (Prometheus Query Language) — и механизм генерации алертов. Он способен собирать метрики из тысяч источников: от серверов и контейнеров до приложений, экспортёров и облачных API.


📦 Ключевые компоненты Prometheus:

  • Time Series DB — собственное хранилище данных, оптимизированное под временные метки;
  • PromQL — мощный язык запросов, позволяющий аггрегировать, фильтровать и вычислять значения на лету;
  • Alertmanager — отдельный компонент, управляющий отправкой уведомлений по заданным правилам;
  • Exporters — плагины/агенты, собирающие метрики из внешних систем (Node Exporter, Blackbox Exporter, PostgreSQL Exporter и др.);
  • Service Discovery — автоматическое обнаружение сервисов в Kubernetes, EC2, Consul и других источниках.

🔍 Что можно мониторить:

  • Загрузка CPU, использование памяти, сетевой трафик;
  • Время ответа сервисов, ошибки, задержки, таймауты;
  • Пользовательские метрики из приложений (через HTTP endpoint
    /metrics
    );
  • Kubernetes-кластеры: поды, ноды, ingress, контейнеры;
  • Системные компоненты CI/CD, баз данных, брокеров сообщений и др.

🔗 Интеграция с Grafana:

Хотя Prometheus имеет собственный интерфейс, в продакшн-средах чаще используется вместе с Grafana — платформой визуализации. Grafana подключается к Prometheus как источник данных и отображает метрики на дашбордах в виде графиков, таблиц и алертов.


⚙️ Почему Prometheus стал стандартом:

  • 📈 Высокая точность и детализация данных;
  • ⚙️ Простота развертывания (один бинарник);
  • 🔄 Интеграция с Kubernetes “из коробки”;
  • 🧩 Open Source — развитая экосистема, поддержка сообществом;
  • 📡 Pushgateway и federation — поддержка гибкой архитектуры сбора метрик в разных слоях системы.

Prometheus идеально подходит для микросервисов, event-driven-систем и облачной инфраструктуры, где важно быстро обнаруживать деградацию или сбои. Благодаря своей расширяемости и отказоустойчивости он стал основой мониторинга во многих крупных компаниях и open-source-решениях.


⚙️ Пример конфигурации Prometheus (
prometheus.yml
)

global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'node-exporter' static_configs: - targets: ['192.168.1.100:9100'] - job_name: 'my-app' metrics_path: /metrics static_configs: - targets: ['my-app.default.svc.cluster.local:8080']

🔍 Что делает этот файл:

  • Устанавливает глобальный интервал опроса — 15 секунд;
  • Мониторит Node Exporter по IP (сбор системных метрик);
  • Сканирует HTTP endpoint
    /metrics
    у пользовательского приложения (например, Go, Python, Java).

🔎 Примеры PromQL-запросов

📊 Использование CPU по ядрам (в процентах):

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

📈 Память, доступная на ноде:

node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100

🔥 Количество HTTP 5xx-ошибок за 5 минут:

sum(rate(http_requests_total{status=~"5.."}[5m]))

⏱ Среднее время ответа приложения:

rate(http_request_duration_seconds_sum[1m]) / rate(http_request_duration_seconds_count[1m])

💡 Практика: что делать дальше

  1. Развернуть Prometheus и Node Exporter (можно через Helm:
    helm install prometheus prometheus-community/prometheus
    );
  2. Настроить
    prometheus.yml
    — указать источники метрик;
  3. Подключить Grafana и выбрать Prometheus как data source;
  4. Создать дашборды или использовать готовые (например, Node Exporter Full).

🚨 Пример alert-правил (
alertrules.yaml
)

groups: - name: node-alerts rules: - alert: HighCPUUsage expr: avg by(instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])) > 0.85 for: 2m labels: severity: warning annotations: summary: "Высокая загрузка CPU на {{ $labels.instance }}" description: "CPU usage > 85% в течение 2 минут." - alert: InstanceDown expr: up == 0 for: 1m labels: severity: critical annotations: summary: "Экземпляр {{ $labels.instance }} недоступен" description: "Инстанс не отвечает на опросы Prometheus более 1 минуты."

📌 Эти правила:

  • Сигнализируют о высоком CPU (выше 85%);
  • Отслеживают недоступность узла;
  • Отправляют метаданные (
    summary
    ,
    description
    ) в Alertmanager.

Подключается в

prometheus.yml
:

rule_files: - "alertrules.yaml"

📊 Сравнение систем мониторинга

ХарактеристикаPrometheusGrafana LokiZabbixDatadog
Тип данныхМетрики (time series)ЛогиМетрики, логи, триггерыМетрики, логи, трассировки
Язык запросовPromQLLogQLНативные выраженияПроприетарный
ХранениеВстроенная TSDBВстроенное (BoltDB+chunks)СУБД (MySQL/PostgreSQL)Облако
ИнтерфейсВеб UI + GrafanaЧерез GrafanaВеб UIВеб-интерфейс
AlertingЧерез AlertmanagerЧерез Prometheus/AlertmanagerВстроенныйВстроенный
Поддержка KubernetesОтличная (SD + exporters + Helm)Отличная (через
fluent-bit
,
promtail
)
ОграниченнаяОтличная (через агенты + интеграции)
Модель лицензированияOpen Source (Apache 2.0)Open SourceOpen Source / EnterpriseSaaS (платно)
УстановкаПростой (один бинарник / Helm)Быстрая (Helm или binary)Более сложнаяБез установки (облачный агент)
Кейс: локальный кластер✅ Полный контроль✅ Для логов✅ Но требует настройки СУБД⚠️ Ограничено
Кейс: enterprise-cloud✅ Через Thanos, Cortex✅ В связке с Prometheus⚠️ Меньше гибкости✅ Сильная поддержка

Даже в глоссарии есть повод сэкономить

Дарим 1 месяц к году оплаты VPS. Код: NEWCOM

Месяц в подарок
COPIED
NEWCOM COPIED