Интеграция с Zabbix¶
Введение¶
Zabbix часто является корпоративным стандартом для мониторинга. Обычно в этом случае в компаниях все системные метрики по каждому хосту уже получают из операционной системы через Zabbix-агентов, и мониторинг кластера Arenadata DB не используется. Тем не менее, часть метрик, относящихся к СУБД (секция Database в Grafana), может быть получена только или напрямую из Graphite, или также через Zabbix-агента с мастер-сервера с помощью предварительно созданного шаблона. Данная инструкция описывает шаги по созданию шаблона для подключения 7 ADB-специфичных метрик к Zabbix. Для расширенных возможностей мониторинга СУБД на основе Postgres используйте инструкцию с официального сайта Zabbix по адресу https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/postgresql.
Important
Данная инструкция показывает создание шаблона на базе Zabbix версии 5.4
Шаги по созданию шаблона Zabbix¶
1. Включение “echo ADB-specific metrics”¶
Зайдите в ADCM кластера в сервис Monitoring Clients -> Configuration и включите галочку “Enable echo ADB-specific metrics” и запустите action Reinstall для сервиса Monitoring Clients. После успешного завершения в файле $GPADMIN_HOME/arenadata_configs/arenadata_segments_monitor.sh
появится в строка echo с выводом метрик для Zabbix:
echo "{\"DATABASE_AVAILABLE\" : $DATABASE_AVAILABLE, \"TOTAL_PRIMARIES\" : $TOTAL_PRIMARIES, \"TOTAL_SEGMENTS\" : $TOTAL_SEGMENTS, \"MIRRORS_AS_PRIMARIES\" : $MIRRORS_AS_PRIMARIES, \"UP_SEGMENTS\" : $UP_SEGMENTS, \"LONGEST_XACT_SESS_ID\" : $LONGEST_XACT_SESS_ID, \"LONGEST_XACT_TIME\" : $LONGEST_XACT_TIME}"
В логе arenadata_segments_monitor.log
также будет отражаться состояние метрик с заданной периодичностью.
2. Создание нового шаблона¶
Зайдите в Zabbix и в разделе Configuration -> Templates нажмите кнопку Create template. Заполните поля Template Name и Groups согласно принятой политики именования и разграничения доступа в компании.
3. Создание элементов шаблона¶
Зайдите в созданный шаблон и в разделе Items нажмите кнопку Create item. Создайте Item для Zabbix-агента:
Name: ADB Status Type: Zabbix agent Key: adb.status[“{$ADB.MASTER.SERVER}”,”{$ADB.PORT}”,”{$ADB.DATABASE}”,”{$ADB.USER}”] Type of information: Text Update interval: 1m History storage period: 1d Trend storage period: Do not keep trends
Окно Items (Рис.132.)¶

Рис. 132. Окно New Item
Аналогично создайте 7 элементов под метрики, зависимых от item ADB Status
. Для этого нужно указать у них Type: Dependent Item и в Master Item сослаться на ADB Status
. Для настройки шага предобработки метрики зайдите в Items -> Preprocessing и выберите тип Preprocessing Name Structured Data -> JSONPath. Все параметры перечислены в таблице ниже:
Name | Key | Preprocessing Step Parameters |
---|---|---|
ADB Availability | Arenadata.DB.database.available.is_available | $.DATABASE_AVAILABLE |
ADB Mirrors as Primary | Arenadata.DB.database.segments.MIRRORS_AS_PRIMARY | $.MIRRORS_AS_PRIMARIES |
The Current Longest Transaction Time (sec) | Arenadata.DB.database.sessions.LONGEST_XACT_TIME | $.LONGEST_XACT_TIME |
The Longest Transaction Session ID | Arenadata.DB.database.sessions.LONGEST_XACT_SESS_ID | $.LONGEST_XACT_SESS_ID |
Total Primary Segments | Arenadata.DB.database.segments.TOTAL_PRIMARY_SEGMENTS | $.TOTAL_PRIMARIES |
Total Segments | Arenadata.DB.database.segments.TOTAL_SEGMENTS | $.TOTAL_SEGMENTS |
Up Segments | Arenadata.DB.database.segments.UP_SEGMENTS | $.UP_SEGMENTS |
Общий вид метрик должен быть следующим:

Рис. 133. Окно Items
4. Создание триггеров¶
Зайдите в созданный шаблон и в разделе Triggers нажмите кнопку Create Trigger. Создайте следующие Триггеры для части метрик:
Severity | Name | Problem | Recovery |
---|---|---|---|
High | ADB is unavailable | last(/ADB Monitoring/ Arenadata.DB.database.available.is_available)=1 | last(/ADB Monitoring/Arenadata.DB.database.available.is_available)=0 |
Warning | Primary and Mirror segments switched | last(/ADB Monitoring/ Arenadata.DB.database.segments.MIRRORS_AS_PRIMARY)>0 | last(/ADB Monitoring/ Arenadata.DB.database.segments.MIRRORS_AS_PRIMARY)=0 |
High | Some segments is not Up | last(/ADB Monitoring/ Arenadata.DB.database.segments.TOTAL_SEGMENTS)<>last(/ADB Monitoring/Arenadata.DB.database.segments.UP_SEGMENTS) | last(/ADB Monitoring/ Arenadata.DB.database.segments.TOTAL_SEGMENTS)=last(/ADB Monitoring/ Arenadata.DB.database.segments.UP_SEGMENTS) |
Warning | Too long running transaction | last(/ADB Monitoring/ Arenadata.DB.database.sessions.LONGEST_XACT_TIME)>14400 | last(/ADB Monitoring/ Arenadata.DB.database.sessions.LONGEST_XACT_TIME)<=14400 |
Общий вид триггеров должен быть следующим:

Рис. 134. Окно Triggers
Это обязательные компоненты для мониторинга метрик Arenadata DB. Остальные компоненты (Graphs, Dashboards, Discovery Rules, Web Scenarios) настриваются выборочно, согласно принятым в компании стандартам, опираясь на заданные Items и Triggers.