ses-monitor/zabbix/zbx_ses_template.xml
Maksim Totmin 8dca7eb46b Initial commit: SES Monitor
Watchdog-демон для непрерывного мониторинга SES.
- Liveness-проверки API, лицензии, списка роботов
- Диалоговые сценарии из YAML с агрегацией в 6 фиксированных Zabbix-метрик
- Доставка: zabbix_sender (push) или UserParameter (poll)
- Hot-reload сценариев без перезапуска
2026-06-19 21:04:05 +07:00

466 lines
24 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>6.0</version>
<date>2026-06-19T12:00:00Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<uuid>a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6</uuid>
<template>SES Monitor</template>
<name>SES Monitor — Service Engine Server</name>
<description>Шаблон для мониторинга диалоговой сценарной машины SES.
Метрики отправляются watchdog-демоном ses-monitor через zabbix_sender (trapper).
Проверяет: доступность API, лицензию, выполнение сценариев, архив диалогов.
Сценарии задаются в YAML-файлах (config/scenarios/). Ключи метрик
формируются из поля zabbix_key в файле сценария. Примеры метрик:
- ses.scenario.{имя_сценария}.ok
- ses.scenario.{имя_сценария}.time
- ses.scenario.{имя_сценария}.error
Для каждого сценария вручную добавьте соответствующий item в этот шаблон.</description>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<!-- ============================================================ -->
<!-- Макросы (переопределяются на уровне хоста) -->
<!-- ============================================================ -->
<macros>
<macro>
<macro>{$SES_API_TIMEOUT_MS}</macro>
<value>5000</value>
<description>Порог медленного ответа API (миллисекунды)</description>
</macro>
<macro>
<macro>{$SES_UNKNOWN_THRESHOLD}</macro>
<value>10</value>
<description>Порог unknown-запросов за 5 минут</description>
</macro>
<macro>
<macro>{$SES_STEP_TIME_WARNING_MS}</macro>
<value>5000</value>
<description>Порог предупреждения: среднее время шага диалога (мс)</description>
</macro>
<macro>
<macro>{$SES_STEP_TIME_ERROR_MS}</macro>
<value>15000</value>
<description>Порог ошибки: среднее время шага диалога (мс)</description>
</macro>
</macros>
<items>
<!-- ======================================================== -->
<!-- Liveness-проверки -->
<!-- ======================================================== -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000001</uuid>
<name>SES: API доступность</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.api.liveness</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<value_type>UINT64</value_type>
<description>0 — API недоступен, 1 — работает. Проверяется GET /ses/hostname.</description>
<triggers>
<trigger>
<uuid>tr00000000000000000000000000000001</uuid>
<expression>{last()}=0</expression>
<name>SES API недоступен на {HOST.NAME}</name>
<priority>HIGH</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000002</uuid>
<name>SES: время ответа API</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.api.response_time</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>FLOAT</value_type>
<units>ms</units>
<description>Время ответа GET /ses/hostname в миллисекундах.</description>
<triggers>
<trigger>
<uuid>tr00000000000000000000000000000002</uuid>
<expression>{last()}&gt;{$SES_API_TIMEOUT_MS}</expression>
<name>SES: медленный ответ API (&gt;{$SES_API_TIMEOUT_MS} мс)</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000003</uuid>
<name>SES: статус лицензии</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.license.ok</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<value_type>UINT64</value_type>
<description>0 — проблема с лицензией, 1 — в порядке.</description>
<triggers>
<trigger>
<uuid>tr00000000000000000000000000000003</uuid>
<expression>{last()}=0</expression>
<name>SES: проблема с лицензией на {HOST.NAME}</name>
<priority>HIGH</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000004</uuid>
<name>SES: количество сценариев (роботов)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.robots.count</key>
<delay>0</delay>
<history>30d</history>
<trends>365d</trends>
<value_type>UINT64</value_type>
<description>Общее количество зарегистрированных сценариев (роботов).
Изменение значения может сигнализировать о проблемах конфигурации.</description>
</item>
<!-- ======================================================== -->
<!-- Сценарии (добавляйте items по мере создания YAML-файлов) -->
<!-- ======================================================== -->
<!--
Формат ключа: ses.scenario.{zabbix_key}.ok
Где {zabbix_key} — значение поля zabbix_key из YAML-файла сценария.
Пример для сценария с zabbix_key: "ses.scenario.my_bot":
<item>
<name>SES: сценарий my_bot</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.scenario.my_bot.ok</key>
<delay>0</delay>
<history>7d</history>
<value_type>UINT64</value_type>
<triggers>
<trigger>
<expression>{last()}=0</expression>
<name>SES: сценарий my_bot провален</name>
<priority>AVERAGE</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<name>SES: сценарий my_bot — время</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.scenario.my_bot.time</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>FLOAT</value_type>
<units>ms</units>
</item>
<item>
<name>SES: сценарий my_bot — ошибка</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.scenario.my_bot.error</key>
<delay>0</delay>
<history>7d</history>
<value_type>TEXT</value_type>
</item>
-->
<!-- ======================================================== -->
<!-- Архив диалогов -->
<!-- ======================================================== -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000030</uuid>
<name>SES: архив — всего диалогов (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.archive.total_5m</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество диалогов за последние 5 минут. 0 может означать отсутствие трафика или проблемы с коннекторами.</description>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000031</uuid>
<name>SES: архив — unknown запросы (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.archive.unknown_5m</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество нераспознанных (unknown) запросов. Рост может указывать на проблемы с моделями SEE/SMC.</description>
<triggers>
<trigger>
<uuid>tr0000000000000000000000000000031</uuid>
<expression>{last()}&gt;{$SES_UNKNOWN_THRESHOLD}</expression>
<name>SES: много unknown запросов (&gt;{$SES_UNKNOWN_THRESHOLD} за 5 мин)</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000032</uuid>
<name>SES: архив — not_found ошибки (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.archive.not_found_5m</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
</item>
<!-- ======================================================== -->
<!-- Мониторинг внутренних моделей SES -->
<!-- ======================================================== -->
<!-- SEE (распознавание намерений/сущностей) -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000040</uuid>
<name>SES: SEE — всего детекций (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.see.total</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Общее количество SEE-детекций (распознавание намерений и сущностей) за 5 минут.</description>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000041</uuid>
<name>SES: SEE — низкая уверенность (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.see.low_confidence</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество SEE-детекций с уверенностью ниже порога (по умолчанию 0.5). Рост означает проблемы с распознаванием.</description>
<triggers>
<trigger>
<uuid>tr0000000000000000000000000000041</uuid>
<expression>{last()}&gt;0</expression>
<name>SES: низкая уверенность SEE-моделей</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000042</uuid>
<name>SES: SEE — средняя уверенность (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.see.avg_confidence</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>FLOAT</value_type>
<description>Средняя уверенность (confidence) всех SEE-детекций за 5 минут (0.0 — 1.0).</description>
</item>
<!-- SMC (классификация запросов) -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000050</uuid>
<name>SES: SMC — всего классификаций (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.smc.total</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Общее количество SMC-классификаций за 5 минут.</description>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000051</uuid>
<name>SES: SMC — низкая уверенность (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.smc.low_confidence</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество SMC-классификаций с уверенностью ниже порога. Рост означает дрифт классификации.</description>
<triggers>
<trigger>
<uuid>tr0000000000000000000000000000051</uuid>
<expression>{last()}&gt;0</expression>
<name>SES: низкая уверенность SMC-классификации</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000052</uuid>
<name>SES: SMC — средняя уверенность (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.smc.avg_confidence</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>FLOAT</value_type>
<description>Средняя уверенность всех SMC-классификаций за 5 минут (0.0 — 1.0).</description>
</item>
<!-- TTS (синтез речи) -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000060</uuid>
<name>SES: TTS — голосовых ответов (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.tts.voice_present</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество ответов с синтезированным голосом за 5 минут.</description>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000061</uuid>
<name>SES: TTS — ответов без голоса (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.tts.voice_missing</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество ответов без голоса за 5 минут. Рост при наличии трафика — проблема TTS.</description>
</item>
<!-- QAS (вопросно-ответная система) -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000070</uuid>
<name>SES: QAS — всего диалогов с QAS (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.qas.total</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000071</uuid>
<name>SES: QAS — пустых ответов (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.qas.empty</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество диалогов с пустым QAS за 5 минут. Высокое значение — QAS не отвечает.</description>
<triggers>
<trigger>
<uuid>tr0000000000000000000000000000071</uuid>
<expression>{last()}&gt;0 and {ses.models.qas.total.last()}&gt;0</expression>
<name>SES: QAS возвращает пустые ответы</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<!-- SPR (распознавание речи: аудио→текст) -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000080</uuid>
<name>SES: SPR — всего диалогов с reports (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.spr.total</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000081</uuid>
<name>SES: SPR — успешных расшифровок (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.models.spr.filled</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>UINT64</value_type>
<description>Количество диалогов с успешной расшифровкой речи (непустые reports) за 5 минут.</description>
</item>
<!-- ======================================================== -->
<!-- Время шага диалога (из request.datetime / reply.datetime) -->
<!-- ======================================================== -->
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000090</uuid>
<name>SES: среднее время шага диалога (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.archive.avg_step_time_5m</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>FLOAT</value_type>
<units>ms</units>
<description>Среднее время обработки шага диалога (request.datetime -> reply.datetime) за 5 минут. Рост указывает на тормоза в пайплайне (SEE/SMC/TTS/QAS или внешние API).</description>
<triggers>
<trigger>
<uuid>tr0000000000000000000000000000090</uuid>
<expression>{last()}&gt;{$SES_STEP_TIME_WARNING_MS}</expression>
<name>SES: медленная обработка шага диалога (&gt;{$SES_STEP_TIME_WARNING_MS} мс) на {HOST.NAME}</name>
<priority>WARNING</priority>
<manual_close>YES</manual_close>
</trigger>
<trigger>
<uuid>tr0000000000000000000000000000091</uuid>
<expression>{last()}&gt;{$SES_STEP_TIME_ERROR_MS}</expression>
<name>SES: критическая задержка обработки шага (&gt;{$SES_STEP_TIME_ERROR_MS} мс) на {HOST.NAME}</name>
<priority>AVERAGE</priority>
<manual_close>YES</manual_close>
</trigger>
</triggers>
</item>
<item>
<uuid>a1b2c3d4e5f6a7b8000000000000092</uuid>
<name>SES: макс. время шага диалога (5 мин)</name>
<type>ZABBIX_TRAPPER</type>
<key>ses.archive.max_step_time_5m</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</trends>
<value_type>FLOAT</value_type>
<units>ms</units>
<description>Максимальное время обработки шага диалога за 5 минут. Показывает пиковые задержки.</description>
</item>
</items>
</template>
</templates>
</zabbix_export>