6.8. Интеграция с Zabbix #

Zabbix — это популярная платформа мониторинга для отслеживания ИТ-инфраструктуры и визуализации её состояния. Если на машине развёрнут Postgres Pro, может возникнуть необходимость отправлять метрики, собранные с этого экземпляра СУБД, в Zabbix. Один из распространённых инструментов для решения этой задачи — mamonsu — активный агент для сбора и отправки метрик в Zabbix, написанный на Python. pgpro-otel-collector также можно использовать для этой цели.

6.8.1. Настройка Zabbix #

mamonsu и pgpro-otel-collector придерживаются одинаковой схемы экспорта метрик в Zabbix. Эта схема показана на Рисунке 6.1.

Рисунок 6.1. Схема экспорта метрик в Zabbix

Схема экспорта метрик в Zabbix

Здесь:

  • Template (Шаблон) — это шаблон, который необходимо загрузить пользователю перед запуском активного агента.

  • Active agent (Активный агент) — это служба, которая отправляет значения метрик по протоколу sender.

В mamonsu шаблон генерируется следующей командой:

mamonsu zabbix template export template.xml

В pgpro-otel-collector готовый шаблон поставляется вместе с пакетом установки. За инструкциями по установке pgpro-otel-collector обратитесь к Главе 5.

Чтобы импортировать шаблон, выполните шаги ниже.

  1. Перейдите на вкладку Templates (Шаблоны) в разделе Data collection (Сбор данных).

  2. Нажмите кнопку Import (Импорт) в правом верхнем углу. Обратитесь к Рисунку 6.2.

    Рисунок 6.2. Шаблон Zabbix

    Шаблон Zabbix

  3. После успешного импорта шаблона перейдите на вкладку Hosts (Узлы сети) и нажмите Create host (Создать узел сети) в правом верхнем углу, как показано на Рисунке 6.3.

    Рисунок 6.3. Узел сети Zabbix

    Узел сети Zabbix

  4. Заполните поля следующим образом:

    • Host name (Имя узла сети): Prometheus

    • Templates (Шаблоны): OTel Template

    • Host groups (Группы узлов сети): Prometheus

  5. Нажмите кнопку Add (Добавить). Узел сети с нужным шаблоном успешно создан.

6.8.2. Настройка экспортёра zabbix #

Теперь настроим экспортёр zabbix в pgpro-otel-collector:

  1. В разделе конфигурации zabbixexporter укажите адрес и порт, на которых расположен Zabbix. Адрес узла по умолчанию задаётся как имя машины, на которой развёрнут pgpro-otel-collector. В этом примере адрес узла — Prometheus:

    receivers:
      postgrespro:
        endpoint: postgres_host:5432
        database: postgres
        username: postgres
        password: postgres
        collection_interval: 60s
        initial_delay: 1s
        max_threads: 3
        plugins:
          version:
            enabled: true
          databases:
            enabled: true
            databases:
              - name: postgres
    exporters:
      zabbixexporter:
        endpoint: zabbix_host:10051 # Заполнить адрес
        host: Prometheus                        # Заполнить адрес узла при необходимости
        batch_max_size: 100                  # Задать количество метрик, отправляемых в одном запросе к Zabbix
    service:
      pipelines:
        metrics:
          receivers:
            - postgrespro
          exporters:
            - zabbixexporter

    За подробностями настройки ресивера postgrespro обратитесь к разделу Working with Metrics.

  2. Отредактируйте файл службы:

    sudo systemctl edit --full pgpro-otel-collector.service
  3. Измените путь к файлу конфигурации:

    ...
    [Service]
    ...
    ExecStart=/usr/bin/pgpro-otel-collector --config /etc/pgpro-otel-collector/zabbix.yml
    ...
  4. Перезапустите службу и проверьте её статус:

    sudo systemctl restart pgpro-otel-collector.service
    sudo systemctl status pgpro-otel-collector.service

    В журналах должны отображаться следующие записи, указывающие на успешную доставку метрик в Zabbix:

    2025-09-23T14:28:21.855+0300  info  zabbixexporter/exporter.go:64       send discovery to zabbix succeeded   {"resource": {"service.instance.id": "0440f9d8-00de-427a-a8af-19e81d6d080a", "service.name": "pgpro-otel-collector", "service.version": "v0.4.0"}, "otelcol.component.id": "zabbixexporter", "otelcol.component.kind": "exporter", "otelcol.signal": "metrics", "processed": 2, "failed": 0, "total": 2, "spent_seconds": 0.000083}
    2025-09-23T14:28:33.199+0300  info  zabbixexporter/metrics_queue.go:88  send metrics to zabbix succeeded     {"resource": {"service.instance.id": "0440f9d8-00de-427a-a8af-19e81d6d080a", "service.name": "pgpro-otel-collector", "service.version": "v0.4.0"}, "otelcol.component.id": "zabbixexporter", "otelcol.component.kind": "exporter", "otelcol.signal": "metrics", "processed": 33, "failed": 0, "total": 33, "spent_seconds": 0.000229}
  5. Проверьте наличие данных на вкладке Latest data (Последние данные) в разделе Monitoring (Мониторинг). Данные должны успешно отправляться в Zabbix (Рисунок 6.4).

    Рисунок 6.4. Мониторинг Zabbix

    Мониторинг Zabbix

6.8.3. Советы по миграции с mamonsu #

Обратите внимание, что ключи элементов, отправляемые pgpro-otel-collector, отличаются от ключей mamonsu:

  • pgpro-otel-collector: postgresql.databases.size_bytes[postgres]

  • mamonsu: pgsql.db.size["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","postgres"]

Набор метрик также отличается. Проверьте правильность ключей в существующих используемых средствах автоматизации, если они есть. Шаблон, поставляемый с pgpro-otel-collector, не содержит графиков или прототипов графиков. Поэтому рекомендуется использовать связку экспортёра prometheus, Prometheus и Grafana.