С какими экспортерами Prometheus вы работали?

«С какими экспортерами Prometheus вы работали?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В моих проектах я активно использовал стандартные и сторонние экспортеры для сбора метрик из различных компонентов инфраструктуры и приложений.

Основные экспортеры в моем опыте:

  • Node Exporter: Для сбора системных метрик с Linux-серверов (CPU, память, дисковое пространство, сетевые интерфейсы, нагрузка). Это основа мониторинга хостов.
  • cAdvisor (Container Advisor): Интегрировал для сбора метрик по использованию ресурсов (CPU, память, сеть, файловая система) работающими контейнерами в Docker и Kubernetes-средах.
  • Blackbox Exporter: Использовал для мониторинга доступности внешних сервисов по протоколам HTTP, HTTPS, TCP, ICMP и DNS. Например, для проверки, что веб-сайт возвращает код 200 и содержит определенный текст в ответе.
  • Экспортеры для баз данных:
    • PostgreSQL Exporter для метрик подключений, производительности запросов, репликации.
    • MySQLd Exporter для аналогичных метрик СУБД MySQL.
    • MongoDB Exporter для мониторинга состояния кластеров MongoDB.
  • Экспортеры для очередей и кэшей:
    • RabbitMQ Exporter для мониторинга очередей, потребителей, скорости обработки сообщений.
    • Redis Exporter для отслеживания использования памяти, количества ключей, количества команд в секунду.

Пример конфигурации Prometheus для сбора метрик с Node Exporter и cAdvisor:

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['node-exporter:9100']

  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']

  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets:
        - https://example.com
        - https://api.example.com/health
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: blackbox-exporter:9115

Также имею опыт работы с экспортерами для Nginx, HAProxy, Kafka и с написанием собственных простых экспортеров на Python с использованием библиотеки prometheus_client для кастомных метрик приложений.