Аудит та журналювання подій
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний опис підходу
Усі події відправки повідомлень користувачам системою фіксуються у журналі аудиту з повним контекстом. Для реалізації вимоги необхідно розширити підсистему аудиту наступним чином:
-
Ввести окрему категорію подій аудиту для фіксації службових операцій:
-
EVENT_TYPE = SYSTEM_EVENT
-
-
Розширити перелік службових операцій:
-
SEND_USER_NOTIFICATION
-
Детальніше з дизайном підсистеми "Журнал аудиту" можна ознайомитися за посиланням |
audit:
kafka:
topic: audit-events
schemaRegistryUrl: http://kafka-schema-registry:8081
2. Структура події аудиту
Нижче наведено структуру події аудиту та її відповідність структурі та значенням отриманого через Kafka-топік повідомлення про необхідність відправки нотифікації користувачу.
Атрибут | Значення |
---|---|
timestamp |
now() |
application_name |
"notification-service" |
name |
"SEND_USER_NOTIFICATION" |
type |
"SYSTEM_EVENT" |
request_id |
<MDC.traceId> |
source_system |
<context.system> |
source_application |
<context.application> |
source_business_process |
<context.businessProcess> |
source_business_process_definition_id |
<context.businessProcessDefinitionId> |
source_business_process_instance_id |
<context.businessProcessInstanceId> |
source_business_activity |
<context.businessActivity> |
source_business_activity_id |
<context.businessActivityInstanceId> |
context |
<JSON-представлення деталей операції та результату її виконання> |
2.1. Структура контексту події аудиту для каналів зв’язку
{
"notification": {
"channel:": "email",
"subject": "<Заголовок повідомлення>",
"message": "<Повідомлення>",
"recipient": {
"id": "<Ідентифікатор користувача - optional>",
"email": "<Поштова адреса користувача>"
}
}
}
{
"notification": {
"channel:": "inbox",
"subject": "<Заголовок повідомлення>",
"message": "<Повідомлення>",
"recipient": {
"id": "<Ідентифікатор користувача>"
}
}
}
{
"notification": {
"channel:": "diia",
"externalTemplateId": "<Ідентифікатор шаблону>",
"templateName": "<Службова назва шаблону>",
"distributionId": "<Ідентифікатор розсилки>",
"recipient": {
"id": "<Ідентифікатор користувача>",
"rnokpp": "<ІПН користувача>",
"parameters": [
{
"key": "<key>",
"value": "<value>"
}
]
}
}
}