linux-labs

Вики / Службы и systemd

Prometheus (метрики)

Сервис Prometheus 2.x СлужбыМониторингСеть

Сбор метрик по pull-модели — таргеты, PromQL, экспортеры, алерты.

Prometheus собирает метрики по pull-модели: сам периодически опрашивает (scrape) HTTP-эндпоинты /metrics у целей (таргетов). Хранит временные ряды, позволяет запрашивать их языком PromQL и слать алерты.

экспортеры (node_exporter, app /metrics) ← scrape ← Prometheus → PromQL / алерты → Alertmanager

Метрики служб дают экспортеры: node_exporter (хост), nginx-exporter, и т.п.

prometheus.yml — что и как часто опрашивать:

global:
  scrape_interval: 15s
scrape_configs:
  - job_name: node
    static_configs:
      - targets: ['10.0.0.1:9100', '10.0.0.2:9100']
  - job_name: app
    metrics_path: /metrics
    static_configs:
      - targets: ['app:8000']
promtool check config prometheus.yml      # проверить конфиг
curl -s localhost:9090/-/reload -X POST   # перечитать (если включён web.enable-lifecycle)

Веб-интерфейс на :9090. Примеры запросов:

up                                  # 1/0 — жив ли таргет
rate(http_requests_total[5m])       # запросов в секунду за 5 минут
node_filesystem_avail_bytes / node_filesystem_size_bytes   # доля свободного на ФС
100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m]))*100)  # %CPU

http://<prom>:9090/targets — статус всех целей (UP/DOWN и ошибки scrape).

Таргет DOWN

Открой /targets — там причина (connection refused / timeout / 404). Проверь, что экспортер слушает (ss -tlnp | grep 9100) и порт открыт (firewall). curl http://target:9100/metrics — отдаёт ли метрики.

Нет данных по метрике

Проверь имя метрики и лейблы в UI (autocomplete). up{job="x"} — скрапится ли job.

Prometheus ест диск

Ретеншн и количество рядов. --storage.tsdb.retention.time=15d; сократи high-cardinality лейблы.

Алерты не приходят

Проверь правила (promtool check rules), связь с Alertmanager и его маршруты.

promtool check config prometheus.yml      # проверить конфиг
# UI :9090/targets — статус целей ; :9090/graph — PromQL
up ; rate(metric[5m])                      # жив ли таргет / скорость
curl http://target:9100/metrics            # отдаёт ли экспортер

См. также