Skip to content

Zabbix мониторинг Prometheus метрик

Используем Zabbix сервер для мониторинга Prometheus метрик.

Для примера будем использовать TeamCity.

В этом примере будут использоваться компоненты:

  • HTTP agent элемент
  • Зависимый элемент (dependent)

Макросы

В шаблоне Zabbix (Configuration/Templates) создадим макросы:

  • {$TEAMCITY_URL}: https://teamcity.company.com
  • {$TEAMCITY_LOGIN}: userinteamcity
  • {$TEAMCITY_PASSWORD}: userpassword

Для этого необходимо создать в TeamCity пользователя, который будет иметь доступ к метрикам Prometheus.

TeamCity Prometheus URL

Перейдём на URL, по которому отображаются метрики Prometheus

https://teamcity.company.com/app/metrics

Для примера будем мониторить количество запущенных агентов

# HELP agents_running_builds Number of build agents which are running builds
# TYPE agents_running_builds gauge
agents_running_builds{nodeId="MAIN_SERVER",} 54.0

Мастер элемент

В шаблоне Zabbix создадим мастер элемент (Configuration/Template/TeamcityPrometheus/Items). Он будет собирать страницу со всеми метриками Prometheus по HTTP.

  • Type: HTTP agent
  • Key: teamcity.prometheus.metrics
  • Type of information: Text
  • URL: {$TEAMCITY_URL}/app/metrics
  • Request type: GET
  • Required status codes: 200-399
  • Retrieve mode: Body
  • HTTP authentication: Basic
  • User name: {$TEAMCITY_LOGIN}
  • Password: {$TEAMCITY_PASSWORD}
  • Update interval: 5m

Для этого используется базовая аутентификация. Есть вариант доступа по токену, для этого для пользователя нужно сгенерировать токен и использовать его в HTTP запросе с заголовком Authorization: Bearer <token-value>.

Зависимый элемент

В шаблоне Zabbix создадим зависимый элемент. Он будет обрабатывать мастер элемент, ищя в нём нужную строчку.

  • Type: Dependent item
  • Key: teamcity.prometheus.agents_running_builds
  • Type of information: Numeric (float)
  • Master item: Template Teamcity: Teamcity master item
  • Preprocessing:
    • Prometheus pattern:
      • agents_running_builds{nodeId="MAIN_SERVER",}: value
      • Type of information: Numeric (float)

В поле Master item укажем мастер элемент. Используем в шаблоне Prometheus имя метрики, которое извлекли со страницы Teamcity с метриками Prometheus.

Teamcity сервер

После создания шаблона в Zabbix, назначаем его на сервер Teamcity (Configuration/Hosts/teamcityhost). И смотрим итоговый результат в разделе Zabbix с последними данными (Monitoring/Latest data).