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:
@@ -0,0 +1,94 @@
|
||||
# =============================================================================
|
||||
# Основная конфигурация системы мониторинга SES (шаблон)
|
||||
# =============================================================================
|
||||
# Скопируйте в config.yaml и заполните свои значения.
|
||||
# cp config.yaml.example config.yaml
|
||||
# Формат: YAML 1.2
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Настройки подключения к SES серверу
|
||||
# ---------------------------------------------------------------------------
|
||||
ses:
|
||||
# Базовый URL SES API
|
||||
base_url: "http://YOUR_SES_HOST:6190"
|
||||
|
||||
# ID робота (сценария) для проверок.
|
||||
# Узнать ID: GET /ses/robot/list или /ses/robot/listall
|
||||
# Каждый сценарий может переопределить robot_id в своём YAML-файле
|
||||
robot_id: "YOUR_ROBOT_ID"
|
||||
|
||||
# Эндпоинт для получения списка роботов:
|
||||
# /ses/robot/list — только опубликованные
|
||||
# /ses/robot/listall — все (включая черновики)
|
||||
robot_list_endpoint: "/ses/robot/listall"
|
||||
|
||||
# Канал для мониторинговых запросов (не влияет на реальных пользователей)
|
||||
channel: "monitoring"
|
||||
|
||||
# Таймаут HTTP-запросов в секундах
|
||||
request_timeout: 30
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Настройки интеграции с Zabbix
|
||||
# ---------------------------------------------------------------------------
|
||||
zabbix:
|
||||
# Включить отправку метрик в Zabbix
|
||||
enabled: true
|
||||
|
||||
# Режим доставки: "sender" (zabbix_sender) или "userparameter" (Zabbix агент)
|
||||
# sender — активный push через zabbix_sender (trapper)
|
||||
# userparameter — пассивный опрос Zabbix агентом (через JSON-файл)
|
||||
mode: "userparameter"
|
||||
|
||||
# Имя хоста в Zabbix (техническое имя узла сети).
|
||||
host: "YOUR_ZABBIX_HOST"
|
||||
|
||||
# ---- Настройки режима "sender" (zabbix_sender) ----
|
||||
server: "YOUR_ZABBIX_SERVER_IP"
|
||||
port: 10051
|
||||
sender_path: "/usr/bin/zabbix_sender"
|
||||
|
||||
# ---- Настройки режима "userparameter" (Zabbix агент) ----
|
||||
metrics_file: "/var/tmp/ses_monitor/metrics.json"
|
||||
agentd_config_dir: "/opt/ses-monitor/config"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Настройки мониторинга
|
||||
# ---------------------------------------------------------------------------
|
||||
monitoring:
|
||||
# Интервал liveness-проверок (секунды)
|
||||
liveness_interval: 30
|
||||
|
||||
# Интервал проверки архива диалогов (секунды)
|
||||
archive_check_interval: 600
|
||||
|
||||
# Включить чтение логов через POST /ses/log (ресурсоёмко)
|
||||
log_enabled: false
|
||||
|
||||
# Каталог с YAML-файлами сценариев
|
||||
scenarios_dir: "/opt/ses-monitor/config/scenarios"
|
||||
|
||||
# Таймаут выполнения сценария по умолчанию (секунды)
|
||||
scenario_default_timeout: 30
|
||||
|
||||
# Мониторинг времени обработки шага диалога из архива
|
||||
step_time_monitoring: false
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Мониторинг внутренних моделей SES (SEE, SMC, TTS, QAS, SPR)
|
||||
# ---------------------------------------------------------------------------
|
||||
models_monitoring:
|
||||
enabled: true
|
||||
see_confidence_threshold: 0.5
|
||||
smc_confidence_threshold: 0.5
|
||||
tts_enabled: true
|
||||
qas_enabled: true
|
||||
spr_enabled: true
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Настройки логирования
|
||||
# ---------------------------------------------------------------------------
|
||||
logging:
|
||||
level: "INFO"
|
||||
file: "/var/log/ses-monitor/monitor.log"
|
||||
format: "%(asctime)s [%(levelname)s] %(name)s: %(message)s"
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,13 @@
|
||||
# UserParameter для ses-monitor.
|
||||
#
|
||||
# Подключение: добавьте в /etc/zabbix/zabbix_agentd.conf строку:
|
||||
# Include=/opt/ses-monitor/config/zbx_agentd_ses.conf
|
||||
#
|
||||
# После этого перезапустите агента:
|
||||
# sudo systemctl restart zabbix-agent
|
||||
#
|
||||
# Шаблон для Zabbix 5.0: zabbix/zbx_ses_template_5.0_up.xml
|
||||
# Master-элемент: ses.metrics (JSON)
|
||||
# Dependent-элементы: ses.* с JSONPath препроцессингом
|
||||
|
||||
UserParameter=ses.metrics,/opt/ses-monitor/scripts/zbx_get.py
|
||||
Reference in New Issue
Block a user