События обогащения
В ходе обогащения система публикует события в RabbitMQ. На них построен журнал обогащения и уведомления пользователю, а также к ним можно подключиться из внешних систем.
Конвейер событий
Обменник srm_exchange — типа topic, durable. Все события публикуются в него; потребители подписываются по маске ключа маршрутизации.
Что происходит по пути в журнал:
- Logstash забирает события по маске
srm.statistic.*. - Подставляет в текст сообщения значения из
msg_vars:Found {count_cis} ci(s).превращается вFound 12 ci(s).. - Переводит тип события и статус на русский — поля
event_type_ru,status_ru. - Приводит список ошибок к структуре
errors.items. - Убирает служебные поля
timestamp,caller_id,notification_id,msg_vars,debug. - Складывает результат в посуточный индекс событий OpenSearch.
Раз в минуту фоновая свёртка группирует события по root_task_id и считает по каждому запуску сводку: время начала и окончания, длительность, число уникальных КЕ, разбивку по статусам, итоговый статус и признак завершённости. Именно эту сводку показывает таблица запусков.
Пользовательские события
Публикуются для оповещения пользователя о начале и завершении обогащения.
Начало обогащения
Ключ маршрутизации: srm.enrichment.Started
Время публикации: в момент начала обогащения
{
"notification_id": "UUID", // Идентификатор для доставки уведомления пользователю
"ci_id": "UUID", // Идентификатор обогащаемой КЕ
"ci_type_name": "string" // Системное имя типа КЕ
}
Завершение обогащения
Ключ маршрутизации: srm.enrichment.Finished
Время публикации: после окончания всех операций обогащения
{
"notification_id": "UUID", // Идентификатор уведомления
"target_ci_id": "UUID", // Стартовая КЕ запуска
"target_ci_name": "string", // Имя стартовой КЕ
"target_ci_type": "string", // Системное имя типа стартовой КЕ
"target_ci_type_label": "string", // Отображаемое имя типа стартовой КЕ
"start_time": "datetime", // Начало запуска
"end_time": "datetime", // Окончание запуска
"duration_ms": 0, // Длительность запуска в миллисекундах
"updated_at": "datetime", // Время формирования события
"summary_status": "OK", // Итоговый статус запуска: OK | WARNING | ERROR
"enrichment_metrics": {
"total_ci_count": 0, // Всего обработано КЕ
"enriched_successfully": 0, // Из них без замечаний
"enriched_with_warning": 0, // Из них с предупреждениями
"enriched_with_error": 0 // Из них с ошибками
},
"by_ci_type": [ // Разбивка по типам КЕ
{
"ci_type_name": "string", // Системное имя типа КЕ
"ci_type_label": "string", // Отображаемое имя типа КЕ
"doc_count": 0, // Количество событий по типу
"ci_count": 0 // Количество КЕ этого типа
}
]
}
События статистики
Публикуются на каждом шаге обогащения — из них складывается журнал обогащения.
Общие поля
Эти поля есть у всех событий статистики:
| Поле | Тип | Описание |
|---|---|---|
message | string | Текст сообщения с плейсхолдерами вида {name} |
msg_vars | object | Значения для подстановки в message |
errors | array | Список ошибок: тип исключения, заголовок, детализация, контекст |
status | string | OK, WARNING или ERROR |
task_id | UUID | Идентификатор задачи — обогащения одной КЕ |
root_task_id | UUID | Идентификатор запуска обогащения |
ci_id | UUID | Идентификатор КЕ |
ci_type_name | string | Системное имя типа КЕ |
ci_type_label | string | Отображаемое имя типа КЕ |
timestamp | datetime | Время события |
Поле errors заполняется автоматически из текущего исключения. Если исключение не является ошибкой приложения, в errors попадает его тип и последние строки трассировки — именно они видны в столбце Ошибки журнала.
События по КЕ
Ключи маршрутизации: srm.statistic.CIEnrichmentSuccess, srm.statistic.CIEnrichmentWarning, srm.statistic.CIEnrichmentError
К общим полям добавляется:
| Поле | Тип | Описание |
|---|---|---|
ci_name | string | Имя КЕ |
Когда публикуются:
Success— начало и завершение обогащения КЕ, завершение этапа атрибутов, завершение этапа связей, начало и завершение обработки дополнительных связей.Warning— идентификация переопределила КЕ; не удалось подготовить TQL-фильтр дополнительной связи.Error— критический сбой обогащения КЕ; ошибка подготовки фильтра для поиска КЕ.
События по атрибутам
Ключи маршрутизации: srm.statistic.AttrEnrichmentSuccess, srm.statistic.AttrEnrichmentWarning, srm.statistic.AttrEnrichmentError
К общим полям добавляется:
| Поле | Тип | Описание |
|---|---|---|
attr_name | string | Системное имя атрибута |
attr_label | string | null | Отображаемое имя атрибута |
attr_type | string | Тип значения атрибута |
Когда публикуются:
Success— после сохранения значения атрибута.Warning— не удалось получить данные для атрибута.Error— полученные данные не удалось сохранить в атрибут.
У событий по атрибутам нет поля ci_name: на момент их публикации имя КЕ ещё не присвоено — это происходит позже, на этапе присвоения имени.
События по связям
Ключи маршрутизации: srm.statistic.LinkEnrichmentSuccess, srm.statistic.LinkEnrichmentWarning, srm.statistic.LinkEnrichmentError
К общим полям добавляется:
| Поле | Тип | Описание |
|---|---|---|
ci_name | string | Имя КЕ |
cit_link_id | UUID | Идентификатор настройки связи в ТКЕ |
link_type_name | string | Системное имя типа связи |
link_type_label | string | Отображаемое имя типа связи |
dst_ci_type_name | string | Системное имя типа связанного КЕ |
dst_ci_type_label | string | Отображаемое имя типа связанного КЕ |
Когда публикуются:
Success— после обработки связи и после обработки дополнительной связи.Warning— повторное обогащение КЕ в рамках запуска; несколько элементов конфигурации схлопнулись в одну КЕ; связанную КЕ пришлось пропустить; не удалось заполнить атрибуты связи.Error— не удалось получить или разобрать конфигурацию связи; не удалось создать связанную КЕ.
Завершение запуска
Ключ маршрутизации: srm.statistic.AdditionalLinkFinished
Время публикации: после обработки дополнительных связей по всему запуску
| Поле | Тип | Описание |
|---|---|---|
message | string | Текст сообщения |
msg_vars | object | Значения для подстановки |
root_task_id | UUID | Идентификатор запуска обогащения |
status | string | OK или ERROR |
По этому событию запуск переходит в статус Завершено в таблице запусков.