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)
- Prometheus pattern:
В поле Master item укажем мастер элемент. Используем в шаблоне Prometheus имя метрики, которое извлекли со страницы Teamcity с метриками Prometheus.
Teamcity сервер
После создания шаблона в Zabbix, назначаем его на сервер Teamcity (Configuration/Hosts/teamcityhost). И смотрим итоговый результат в разделе Zabbix с последними данными (Monitoring/Latest data).