Какие инструменты для мониторинга баз данных вы знаете?

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

Ответ

В DevOps-практике мониторинг баз данных — критически важная задача для обеспечения производительности и доступности. Я использую несколько инструментов в зависимости от стека и требований.

Основные инструменты:

  • Prometheus + экспортеры — стандартный стек для сбора метрик. Для PostgreSQL использую postgres_exporter, для MySQL — mysqld_exporter. Prometheus отлично интегрируется с алертингом через Alertmanager.
  • Grafana — для визуализации метрик из Prometheus, InfluxDB или других источников. Создаю дашборды с ключевыми метриками: скорость запросов, использование соединений, размеры таблиц, репликация.
  • Percona Monitoring and Management (PMM) — специализированное решение для мониторинга MySQL, MariaDB, PostgreSQL и MongoDB. Включает готовые дашборды Grafana и расширенный анализ запросов (Query Analytics).
  • Datadog — облачный мониторинг с агентами для всех популярных СУБД. Использую, когда нужна комплексная observability (метрики, логи, трассировка) в одном месте.
  • Zabbix — для мониторинга через шаблоны. Настраиваю триггеры на критические события, такие как остановка репликации или нехватка соединений.

Пример конфигурации Prometheus для мониторинга PostgreSQL:

# prometheus.yml
scrape_configs:
  - job_name: 'postgres'
    static_configs:
      - targets: ['postgres-exporter:9187']
        labels:
          environment: 'production'
          db_role: 'primary'

Ключевые метрики, за которыми слежу:

  1. Производительность: pg_stat_database (tup_fetched, tup_inserted), время выполнения запросов.
  2. Ресурсы: использование памяти, дискового I/O, количество активных соединений (pg_stat_activity).
  3. Репликация: лаг репликации (pg_stat_replication).
  4. Рост данных: размер баз и таблиц.

Инструменты интегрирую в общий пайплайн мониторинга, чтобы алерты из БД приходили в тот же канал (Slack, PagerDuty), что и алерты с инфраструктуры.