Initial commit: ses-monitor watchdog for SES

Универсальный watchdog-мониторинг Service Engine Server (SES):
- Liveness-проверки (API, лицензия, роботы)
- Диалоговые сценарии из YAML с агрегацией в 6 фиксированных Zabbix-метрик
- Доставка: zabbix_sender (active push) или UserParameter (пассивный опрос)
- Поддержка Python 3.7+, Zabbix 5.0
This commit is contained in:
Maksim Totmin
2026-06-19 20:26:26 +07:00
commit 7394b14b52
27 changed files with 5175 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
# =============================================================================
# Пример сценария: диалог с несколькими шагами
# =============================================================================
# Имитирует полноценный диалог пользователя с роботом SES.
# Каждый шаг проверяет конкретные поля ответа.
#
# ИНСТРУКЦИЯ: скопируйте, переименуйте и опишите ваш диалог.
# cp example_dialog.yaml my_project_dialog.yaml
# # замените шаги и ожидания под логику вашего сценария
name: "example: диалог"
description: >
Пример многошагового диалога с проверкой промежуточных ответов.
Адаптируйте под логику вашего робота.
enabled: false # Пример выключен по умолчанию
interval: 600
timeout: 45
restart_closed: false # Не переоткрывать закрытые сессии
steps:
# Шаг 1: инициируем диалог
- send: "Привет"
expect:
- path: "error"
equals: 0
- path: "answer[0].messages[0]"
not_empty: true
# Шаг 2: продолжаем диалог
- send: "Как дела?"
expect:
- path: "error"
equals: 0
- path: "answer[0].messages[0]"
not_empty: true
# Шаг 3: завершаем
- send: "Спасибо"
expect:
- path: "error"
equals: 0
+27
View File
@@ -0,0 +1,27 @@
# =============================================================================
# Пример сценария: базовая проверка liveness робота
# =============================================================================
# Проверяет что робот отвечает на приветствие и не возвращает ошибок API.
# Подходит для любого сценария SES — достаточно заменить robot_id в config.yaml.
#
# ИНСТРУКЦИЯ: скопируйте этот файл, переименуйте и адаптируйте под ваш проект.
# cp example_liveness.yaml my_project_liveness.yaml
# # отредактируйте: name, steps, expect
name: "example: liveness"
description: >
Базовая проверка: отправляем приветствие роботу
и убеждаемся что API отвечает без ошибок.
Не зависит от конкретного сценария SES.
enabled: false # Пример выключен по умолчанию
interval: 60
timeout: 15
steps:
- send: "Здравствуйте"
expect:
- path: "error"
equals: 0
- path: "answer"
not_empty: true
+23
View File
@@ -0,0 +1,23 @@
# =============================================================================
# Сценарий: диалог с роботом МФЦ (production)
# =============================================================================
# Проверяет что робот отвечает на приветствие и возвращает меню действий.
# Выполняется каждые 60 секунд, создаёт сессию в SES.
# Результат агрегируется в ses.scenario.ok/total/failed/avg_time/max_time/error.
name: "mfc_dialog"
description: >
Проверка диалога с МФЦ: отправка приветствия,
ожидание меню действий (error=0, answer не пуст).
enabled: true
interval: 60
timeout: 15
steps:
- send: "Здравствуйте"
expect:
- path: "error"
equals: 0
- path: "answer[0].messages[0]"
not_empty: true