Интеграция с 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 согласно принятой политики именования и разграничения доступа в компании. Окно Templates (:numref:`Рис.%s. `) """"""""""""""""""""""""""""" .. _templates: .. figure:: ./images/templates.png :align: center *Окно Templates* 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 (:numref:`Рис.%s. `) """"""""""""""""""""""""""""" .. _items: .. figure:: ./images/items.png :align: center *Окно New Item* Аналогично создайте 7 элементов под метрики, зависимых от item ``ADB Status``. Для этого нужно указать у них Type: Dependent Item и в Master Item сослаться на ``ADB Status``. Для настройки шага предобработки метрики зайдите в Items -> Preprocessing и выберите тип Preprocessing Name Structured Data -> JSONPath. Все параметры перечислены в таблице ниже: .. csv-table:: Items для метрик :header: "Name", "Key", "Preprocessing Step Parameters" :widths: 20, 45, 45 "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" Общий вид метрик должен быть следующим: .. figure:: ./images/items_all.png :align: center *Окно Items* 4. Создание триггеров ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Зайдите в созданный шаблон и в разделе Triggers нажмите кнопку Create Trigger. Создайте следующие Триггеры для части метрик: .. csv-table:: Triggers для метрик :header: "Severity", "Name", "Problem", "Recovery" :widths: 10, 20, 30, 30 "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" Общий вид триггеров должен быть следующим: .. figure:: ./images/triggers_all.png :align: center *Окно Triggers* Это обязательные компоненты для мониторинга метрик Arenadata DB. Остальные компоненты (Graphs, Dashboards, Discovery Rules, Web Scenarios) настриваются выборочно, согласно принятым в компании стандартам, опираясь на заданные Items и Triggers.