Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Register
  • Sign in
  • N noc
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 448
    • Issues 448
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 20
    • Merge requests 20
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Container Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • noc
  • noc
  • Issues
  • #1694
Closed
Open
Issue created Oct 18, 2021 by Dmitry Volodin@dvOwner

Correlator dispose protocol

На настоящий момент времени коррелятор обрабатывает очередь dispose, из которой приходят события, которые могут как открывать аварии, так и закрывать. Таким образом коррелятор может создавать и закрывать аварии только на основе событий. В связи с этим, в случае необходимости создавать аварии напрямую, приходится манипулировать ими в обход коррелятора. Для унификации механизма обработки и корреляции аварий необходимо все открываемые и закрываемые аварии пропускать через коррелятор.

Предлагаемое решение

Сделать протокол dispose расширяемым, с возможностью задавать новые форматы сообщений. Сообщения остаются в формате JSON, но добавляется дополнительное поле:

{
  "$op": "<operation>"
}

Поле $op задает тип сообщения и его формат. Для обратной совместимости, если поле $op не задано, оно считается равным event.

Типы сообщений

event

Классическое сообщение dispose, имеет поля:

  • $op - имеет значение event
  • event - структура данных события

Передает событие, которое может как открыть аварию, так и закрыть ее

raise

Принудительное создание аварии.

  • $op - имеет значение raise
  • class - строчное название Alarm Class
  • managed_object - объект
  • reference - опциональный ключ, по которому может быть адресована авария
  • groups - список групп, в которые необходимо добавить аварию
    • reference - уникальное имя группы
    • name - имя группы для оператотра
  • vars - список значений, состоит из объектов вида:
    • key - название параметра
    • value - значениие
  • remote_system - опционально - код внешней системы, откуда импортирована авария
  • remote_id - опционально - код аварии во внешней системе

Если авария уже существует, ее группы и значения обновляются.

clear

Принудительная очистка аварии.

  • $op - имеет значение clear
  • reference - опциональный код, по которому создавалась авария
  • remote_system - опционально - код внешней системы
  • remote_id - опционально - код аварии во внешней системе

Для закрытия аварии можно использовать либо reference, либо пару remote_system и remote_id. В случае указание обеих параметров приоритет имеет поле reference.

ensure_group

Оставить только актуальные аварии в группе, закрыть все неактуальные.

  • $op - имеет значение ensure_group
  • reference - уникальный код группы
  • name - имя группы
  • alarms - список открытых аварий
    • Структура совпадает с сообщением raise без поля $op

Как и в сообщении clear для идентификации аварии может использовать как reference, так и пара remote_system и remote_id. Метод ensure_group обновляет в группе перечисленные аварии, создает новые, все остальные аварии группы закрываются.

Вызов метода ensure_group с пустым списком аварий эквивалентен закрытию группы.

Edited Oct 19, 2021 by Dmitry Volodin
Assignee
Assign to
Time tracking