Кастомные экспортеры
Тема дорожной карты · Prometheus
Пользовательские экспортёры позволяют предоставлять метрики любого приложения или системы, для которой ещё нет готового экспортёра Prometheus, путём реализации текстового формата экспозиции Prometheus на HTTP-эндпоинте. Prometheus предоставляет официальные клиентские библиотеки для Go, Python, Java, Ruby и Rust, которые упрощают определение и регистрацию метрик — счётчиков, датчиков, гистограмм и сводок — в собственном коде. Пользовательский экспортёр обычно прослушивает выделенный порт (например, в диапазоне 9100–9999) и обслуживает метрики по пути /metrics, которые Prometheus затем опрашивает с настроенным scrape_interval. При написании пользовательского экспортёра важно следовать соглашениям об именовании Prometheus — например, использовать суффикс _total для счётчиков и суффикс _seconds для длительностей — чтобы метрики органично интегрировались со стандартными дашбордами и правилами оповещений. Пользовательские экспортёры являются мощной точкой расширения для интеграции мониторинга Prometheus в проприетарные или устаревшие системы.
Как это работает
Кастомные экспортеры — процессы, экспонирующие метрики системы в формате 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.
Типичные ошибки
Ловушки Кастомные экспортеры: запущен exporter для X (например node_exporter), но не скрейпится (данные экспонированы, никогда не собираются); экспозиция exporter-портов публично (DoS + info leak); кастомный exporter с auth — Prometheus не может скрейпить (используйте bearer_token + tls config); слишком много exporters на одном хосте (overhead).