Zabbix Exporter


Экспортёр метрик из Zabbix в формате Prometheus. Позволяет интегрировать существующую инфраструктуру мониторинга Zabbix с Астра Мониторинг.

Назначение

Zabbix Exporter периодически забирает числовые метрики из Zabbix API и отдаёт их по HTTP в формате Prometheus. Это позволяет:

  • Использовать существующие настройки мониторинга Zabbix

  • Объединить метрики из разных систем в единой платформе

  • Сохранить историю настроек и шаблонов Zabbix

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

../../_images/zabbix_exporter.jpg

Операции экспортера

Операция

Назначение

Интервал по умолчанию

discover

Обнаружение хостов и элементов данных, фильтрация по regex

5 минут

values

Получение значений метрик и формирование output

30 секунд

Поток данных

  1. Discover — запрашивает host.get и item.get из Zabbix API

  2. Фильтрация — применяются include/exclude regex для хостов и ключей

  3. Snapshot — метаданные сохраняются во временный снимок

  4. Values — читает метаданные, забирает lastvalue чанками

  5. Metrics — готовые метрики в формате Prometheus

Формат метрик

Пример выходных метрик:

# HELP zabbix_system_cpu_util CPU utilization percentage
# TYPE zabbix_system_cpu_util gauge
zabbix_system_cpu_util{host="web-server-01",hostid="10084",item_key="system.cpu.util",itemid="42336",env="production"} 15.500000

Автоматические метки

Метка

Описание

host

Имя хоста из Zabbix

hostid

ID хоста в Zabbix

item_key

Ключ элемента данных

itemid

ID элемента данных

Константные метки

Задаются в конфигурации и добавляются ко всем метрикам:

Метка

Пример значения

env

production

instance

zabbix-01

Формирование имени метрики

Имя метрики формируется по правилу: {prefix}{sanitized_item_key}

  • Специальные символы в ключе заменяются на _

  • Завершающие _ удаляются

Пример: ключ system.cpu.util с префиксом zabbix_ → метрика zabbix_system_cpu_util

Фильтрация метрик

При запросе данных (запрос к API)

При запросе к Zabbix API фильтруются только числовые значения:

  • value_type: 0 — float

  • value_type: 3 — unsigned int

После получения данных (фильтр по Regex)

После получения данных применяются фильтры из конфигурации:

Фильтр

Описание

host_include_regex

Оставить только хосты, соответствующие regex

host_exclude_regex

Исключить хосты, соответствующие regex

item_key_include_regex

Оставить только ключи, соответствующие regex

item_key_exclude_regex

Исключить ключи, соответствующие regex

Лимиты

  • max_metrics_per_host — максимальное количество метрик на один хост

Установка

Установка возможна как из внутренних репозиториев Астры, так и локально из репозитория развёрнутого бекенда Астра Мониторинг версии 1.3.1+.

Локальная установка

В разделе редактирования агента нажмите «добавить экспортер» и выберите zabbix_exporter.

Онлайн установка из репозиториев Астры

Требуется доступ до ресурса https://dl.astralinux.ru.

В разделе редактирования агента нажмите «добавить экспортер» и введите zabbix_exporter.

Примечание

Настройка экспортера для обоих вариантов установки одинакова.

Конфигурация

Полный пример конфигурационного файла

base:
  address: "0.0.0.0:9102"

schedule:
  jitter: 5s
  jobs:
    discover:
      enabled: true
      run_on_start: true
      interval: 5m
      timeout: 60s
    values:
      enabled: true
      run_on_start: false
      interval: 30s
      timeout: 20s

prom:
  prefix: "zabbix_"
  const_labels:
    env: "production"
    instance: "zabbix-01"

zabbix:
  url: "http://zabbix-host:8080/api_jsonrpc.php"
  token: "your-api-token"
  timeout: 30s
  limits:
    max_metrics_per_host: 1000
    items_per_request: 1000
  filters:
    host_include_regex: ""
    host_exclude_regex: ""
    item_key_include_regex: ""
    item_key_exclude_regex: ""

Описание параметров

Базовые настройки

Параметр

Описание

По умолчанию

base.address

Адрес и порт для HTTP-сервера

0.0.0.0:9102

Расписание

Параметр

Описание

По умолчанию

schedule.jitter

Случайная задержка для предотвращения синхронизации

5s

jobs.discover.interval

Интервал обнаружения хостов и items

5m

jobs.discover.timeout

Таймаут запроса discover

60s

jobs.discover.run_on_start

Запускать при старте

true

jobs.values.interval

Интервал сбора значений

30s

jobs.values.timeout

Таймаут запроса values

20s

Prometheus

Параметр

Описание

По умолчанию

prom.prefix

Префикс для всех метрик

zabbix_

prom.const_labels

Константные метки

Zabbix

Параметр

Описание

По умолчанию

zabbix.url

URL Zabbix API

zabbix.token

API токен авторизации

zabbix.timeout

Таймаут запросов к API

30s

limits.max_metrics_per_host

Макс. метрик на хост

1000

limits.items_per_request

Items за один запрос

1000

Переменные окружения

Конфигурацию можно переопределить через переменные окружения:

Переменная

Аналог в конфиге

ZABBIX_URL

zabbix.url

ZABBIX_TOKEN

zabbix.token

ZABBIX_TIMEOUT

zabbix.timeout

MAX_METRICS_PER_HOST

limits.max_metrics_per_host

ZABBIX_ITEMS_PER_REQUEST

limits.items_per_request

Запуск

Через конфигурационный файл агента

exporters:
  exporters:
    - name: zabbix-exporter
      start_type: args
      args: "--config /etc/zabbix-exporter/config.yaml"
      address: 0.0.0.0:9102
      labels:
        component: zabbix

Вручную через CLI

./zabbix-exporter --config config.yaml

CLI-флаги

Флаг

Сокращение

Описание

--config

-c

Путь к YAML-конфигу

--addr

-l

Адрес прослушивания (переопределяет base.address)

Эндпоинты

Эндпоинт

Описание

/metrics

Метрики в формате Prometheus

/health

Проверка работоспособности (200 OK)

Проверка работы

После запуска метрики будут доступны по адресу:

http://localhost:9102/metrics

Примечание

Замените localhost на IP-адрес хоста с экспортером.

Примеры фильтров

Сбор метрик только с production серверов

zabbix:
  filters:
    host_include_regex: "prod-.*"

Исключение тестовых хостов

zabbix:
  filters:
    host_exclude_regex: "test-.*|dev-.*"

Сбор только CPU и памяти

zabbix:
  filters:
    item_key_include_regex: "system\\.cpu\\..*|vm\\.memory\\..*"

Комбинированный фильтр

zabbix:
  filters:
    host_include_regex: "prod-.*"
    host_exclude_regex: ".*-backup"
    item_key_include_regex: "system\\..*|net\\..*"
    item_key_exclude_regex: ".*\\.log"

Требования к Zabbix

  • Версия Zabbix 5.0+

  • Включённый JSON-RPC API

  • API токен с правами чтения хостов и элементов данных