Pushgateway

Тема дорожной карты · Prometheus

Pushgateway — компонент Prometheus, выступающий промежуточным кешем метрик для кратковременных заданий — таких как пакетные скрипты, шаги CI-пайплайна или cron-задания — которые завершаются до того, как Prometheus успевает их опросить. Приложения отправляют свои метрики в Pushgateway через простой HTTP PUT- или POST-запрос в текстовом формате Prometheus или protobuf, после чего Prometheus опрашивает Pushgateway как любую другую цель с настроенным scrape_interval. Метрики хранятся в Pushgateway до явного удаления через DELETE-запрос к API, что означает, что устаревшие метрики завершившихся заданий могут сохраняться, если не очищать их. Каждый набор метрик, отправленных в Pushgateway, группируется по метке job и дополнительным меткам, указанным в пути URL, например http://pushgateway:9091/metrics/job/myjob/instance/myhost. Команда Prometheus рекомендует использовать Pushgateway только для пакетных заданий, где pull-модель действительно неприменима, поскольку он вводит единую точку отказа и усложняет интерпретацию метрики up.

Как это работает

Pushgateway — процессы, экспонирующие метрики системы в формате Prometheus. Распространённые: node_exporter (host-метрики — CPU, RAM, диск, сеть), blackbox_exporter (HTTP/TCP/ICMP probe снаружи), postgres_exporter, mysqld_exporter, redis_exporter, nginx_exporter, kube-state-metrics (объекты k8s API), cadvisor (метрики контейнеров). Для своих приложений — Prometheus client library (prometheus_client для Python, prom-client для Node и т.д.) — экспозиция своих /metrics.

Когда применять

node_exporter — на каждый хост (CPU, RAM, disk-метрики). Специфический exporter — на каждую зависимость (БД, кеш, очередь). Для app-метрик инструментируйте client-библиотекой — кастомные бизнес-метрики намного ценнее инфры. kube-state-metrics + node_exporter — k8s-baseline.

Типичные ошибки

Ловушки Pushgateway: запущен exporter для X (например node_exporter), но не скрейпится (данные экспонированы, никогда не собираются); экспозиция exporter-портов публично (DoS + info leak); кастомный exporter с auth — Prometheus не может скрейпить (используйте bearer_token + tls config); слишком много exporters на одном хосте (overhead).

Связанные понятия

Полезные ресурсы