Skip to main content
Version: 1.2.0

Логирование

В рамках системы реализовано логирование, логирование осуществляется с помощью таких сторонних компонентов как:

  • Filebeat - компонент для сбора логов из контейнеров приложения
  • ElasticSearch - СУБД для хранения логов
  • Kibana - Средство визуализации собранных логов и интерфейс к ElasticSearch

В рамках системы собираются аудит логи. Просмотр логов доступен с помощью Kibana. Аудит логи создаются на каждое действие пользователя.

Логи ADCP

Система ADCP поддерживает 2 типа событий:

  • чтение (query)
  • редактирование (mutation)

Далее представлен список всех логируемых событий:

№ ппНаименование событияТип событияОписание события
1account.buildInvitationLinkqueryСоздание ссылки на приглашение нового пользователя в систему
2account.createmutationСоздание новой организации (аккаунта)
3account.currentAccountqueryЗапрос информации о текущем аккаунте
4account.getqueryЗапрос на получение информации об аккаунте
5account.getAllowedByDatasetProvidersqueryЗапрос списка организаций, которые позволили запрашивать их наборы данных (список организаций в маркетплейсе)
6account.getAllowedToDatasetProvidersqueryЗапрос списка организаций, которым позволено запрашивать наши наборы данных (список организаций в настройках интеграций)
7account.getDataProviderByNamequeryПолучение информации об организации по имени
8account.getDatasetProvidersqueryПолучение списка возможных партнеров для обмена данными
9account.getGlobalOrgInfoqueryПолучение основной информации о собственной организаций
10account.getInteractionMatchingRulesqueryПолучение списка разрешений на взаимодействие всех организаций
11account.getInteractionMatchingRulesByProviderqueryПолучение списка предоставленных разрешений на взаимодействие (кто мне разрешил)
12account.getInteractionMatchingRulesToProviderqueryПолучения списка предоставляемых разрешений на взаимодействие (кому я разрешил)
13account.listqueryЗапрос на получение списка всех организаций инстанса
14account.mergemutationИзменение информации об организации
15account.selectAccountmutationСмена текущей организации
16account.sendInvitationCodeToEmailmutationОтправка приглашения в систему по Email
17account.setUserRolesmutationИзменение роли у пользователя в организации
18account.updateGlobalOrgInfomutationИзменение внешней информации об организации
19dataLabVM.createmutationЗапрос на создание Виртуальной машины
20dataLabVM.listqueryЗапрос на получение списка виртуальных машин
21dataLabVM.mergemutationЗапрос на изменение виртуальных машин
22dataLabVM.runDataLabVMmutationЗапрос на запуск виртуальной машины
23dataLabVM.uploadmutationЗапрос на загрузку данных в виртуальную машину
24dataset.getqueryПолучение информации о датасете
25dataset.listqueryПолучение списка датасетов
26datasetLogs.listqueryПолучение списка истории запроса на данные
27datasetMatchingGroup.changeStatusmutationИзменение статуса матчинг группы
28datasetMatchingGroup.checkDatasetsForMatchingqueryПроверка возможности матчинга датасетов
29datasetMatchingGroup.createmutationСоздание группы матчинга
30datasetMatchingGroup.getqueryПолучение информации о группе мачтчинга
31datasetMatchingGroup.hidemutationСкрытие группы матчинга (soft-delete)
32datasetMatchingGroup.listqueryПолучение списка матчинг групп
33datasetMatchingGroup.mergemutationРедактирование матчинг группы
34datasetMatchingGroup.runMatchingmutationФакт запуска Матчинга
35datasetMatchingGroup.runUploadmutationФакт загрузки сматченого датасета на vm
36datasetMatchingGroup.stopMatchingmutationФакт остановки матчинга
37datasetMatchingGroup.stopUploadmutationФакт остановки загрузки на VM
38datasetMatchingGroup.unhidemutationФакт отмены скрытия матчинг группы
39datasetRequest.changeStatusmutationИзменение статуса запроса на данные (согласование)
40datasetRequest.createmutationСоздание запроса на данные
41datasetRequest.createAndMoveToReviewmutationСоздание запроса на данные с последующей передачей на ревью
42datasetRequest.getqueryЗапрос детальной информации о запросе на данные
43datasetRequest.incomingListqueryЗапрос списка запросов на данные на согласование организацией
44datasetRequest.listqueryЗапрос списка запросов на данные
45datasetRequest.mergemutationИзменение запроса на данные
46datasetRequest.uploadmutationЗагрузка сматченных данных на VM
47glossaryTerm.getqueryПолучение одного бизнес термина
48glossaryTerm.listqueryПолучение списка бизнес терминов
49job.abortmutationОстановка исполнения модели CleanRoom
50job.debugmutationЗапуск модели CleanRoom в Debug режиме
51job.listqueryПолучение списка выполненных и не выполненных запуска моделей в CleanRoom
52job.runmutationЗапуск модели в Production режиме
53jobSetting.changeStatusmutationИзменение статуса модели CleanRoom
54jobSetting.createmutationСоздание модели CleanRoom
55jobSetting.getqueryПолучение информации о модели CleanRoom
56jobSetting.listqueryПолучение списка моделей CleanRoom
57jobSetting.mergemutationИзменение модели CleanRoom
58jobSetting.setSchedulemutationСоздание / изменение расписания модели CleanRoom
59metadataSeed.seedExcelDataqueryЗагрузка Excel шаблона семантического слоя
60notification.listqueryПолучение списка нотификаций
61project.addMembermutationДобавление пользователя в проект
62project.createmutationСоздание проекта
63project.getqueryПолучение информации о проекте
64project.incomingListqueryПолучение списка проектов приходящих на модерацию
65project.listqueryПолучение списка проектов
66project.mergemutationИзменение проекта
67project.removeProjectmutationСкрытие проекта (soft-delete)
68script.createmutationСоздание скрипта
69script.getqueryПолучение скрипта
70script.listqueryПолучение списка скриптов
71script.makeReviewmutationПроведение ревью скрипта
72script.mergemutationРедактирование скрипта
73script.setExecutableFilemutationУказание файла для исполнения
74user.loginmutationАвторизация пользователя
75user.sendPasswordResetCodemutationОтправка письма на сброс пароля
76user.setLanguagemutationИзменение языка пользователя
77user.setNewPasswordmutationУстановка нового пароля
78vcs.getBranchesqueryПолучения списка доступных веток репозитория
79vcs.getFilesqueryПолучение списка доступных файлов репозитория
80vcs.getRepositoriesqueryПолучение списка репозиториев

Каждое лог сообщение имеет следующие атрибуты:

Наименование поляПример содержанияОписание
_idM5zt-IIByrvfZYSDKZXtУникальный идентификатор лог записи
_indexcdp-audit-2022.09.01Индекс (Таблица) в которой хранится запись
_type_docТип документа в ElasticSearch
@timestampSep 1, 2022 @ 15:01:06.576Дата добавления записи
accountId5bqcyjp2lqpdId инстанса участника обмена данными
container.image.nameregistry.aggregion.com/dmp-backend:feature-DMPD-918-story-6c6079a9-1225Ссылка на образ системы
duration747Длительность исполнения задачи
fields.log_typeauditТип лога
hostnameaggregion-cdp-backend-cdp-dev1-678cdc4c98-vhscjИмя хоста создавшего запись
ip94.180.208.40IP клиента инициатора события
kubernetes.container.namebackend-apiИмя контейнера
kubernetes.labels.app_kubernetes_io/componentbackend-apiИмя компонента
kubernetes.labels.app_kubernetes_io/instancecdp-dev1Имя среды
kubernetes.labels.app_kubernetes_io/nameaggregion-cdp-backend-cdp-dev1Имя пода
kubernetes.namespacecdpstage-dmpd-918-devИмя неймспейса в котором работает контейнер
kubernetes.pod.ip10.42.7.43Внутренний IP сервиса создавшего лог
kubernetes.pod.nameaggregion-cdp-backend-cdp-dev1-678cdc4c98-vhscjНаименование пода создавшего лог
level100Уровень лога
loginatl@aggregion.comИмя пользователя инициировавшего действие
msgvcs.getBranchesИмя события
namedmpНаименование платформы
operationTypequeryТип операции
pid18ID процесса
requestId589850080baa6c45cde33f52d141c96cID запроса
successИСТИНАУспешность операции
time1,662,033,666,576Unixtimestamp события
userIddebu3k2x4umjID пользователя инициатора события

Так-же каждое лог сообщение имеет дополнительный набор полей, характерный для каждого события, более детальный разбор представлен в разделах далее.

Логирование событий аутентификации пользователей

Логирование событий аутентификации пользователей заносится в лог audit и находится в контейнере keycloak. События аутентификации, связанные с регистрацией нового пользователя, блокировкой/удалением пользователя, неуспешном входе логируются на уровне провайдера аутентификации.

Типы логируемых событий:

  • Успешный вход пользователя (login) - вход пользователя с использованием Identity Provider.
  • Выход пользователя (logout) - не логируются события истечения токена. Т.к. это не является выходом.
  • Обновление токена (Refresh token) - обновление токена по имеющемуся refresh token.
  • Неуспешный вход пользователя (login error) - возникает при ошибке аутентификации стороннего провайдера. Как правило, логин пользователя не записывается, т.к. информация не приходит от Identity Provider.

Сообщение содержит информацию о входе пользователя через стороннего провайдера аутентификации:

Наименование поляПример содержанияОписание
_idrj-0xIUBosQ-Sp5Lc2M_Уникальный идентификатор лог записи
_indexcdp-audit-2023.01.18Индекс (Таблица) в которой хранится запись
_type_docТип документа в ElasticSearch
@timestampJan 18, 2023 @ 14:47:17.335Дата добавления записи
container.image.nameregistry.aggregion.com/keycloak:dcp-master-e32f1b74-10Ссылка на образ системы
fields.log_typeauditТип лога
hostnamekeycloak19-dev1-0Имя хоста создавшего запись
ip94.180.208.40IP клиента инициатора события
kubernetes.container.namekeycloakИмя контейнера
kubernetes.labels.app_kubernetes_io/componentkeycloakИмя компонента
kubernetes.labels.app_kubernetes_io/instancekeycloak19-dev1Имя среды
kubernetes.labels.app_kubernetes_io/namekeycloakИмя пода
kubernetes.labels.controller-revision-hashkeycloak19-dev1-57799c87f6Hash ревизии
kubernetes.labels.helm_sh/chartkeycloak-10.1.0Образ чарта
kubernetes.namespacecdpstage-dmpd-918-devИмя неймспейса в котором работает контейнер
kubernetes.pod.ip192.168.214.159Внутренний IP сервиса создавшего лог
kubernetes.pod.namekeycloak19-dev1-0Наименование пода создавшего лог
level20Уровень лога
level_textDEBUGНазвание уровня логирования в текстовом виде от Keycloak. Отдельно собирается keycloak.events, который доступен только из уровня DEBUG. Общий уровень логирования Keycloak=INFO.
moduleorg.keycloak.eventsМодуль лога Keycloak. В audit используется только keycloak.events.
msgtype=LOGIN, realmId=e8de6d9f-0492-40fb-aa75-42ba3065baa4, clientId=dcp, userId=fe9a6a10-d3f6-482f-8af7-ca165b1f4a16, ipAddress=176.52.98.94, identity_provider=aggregion-oidc, response_type=code, redirect_uri=https://dev1.dcp.bm.dev.aggregion.com/oauth/callback, consent=no_consent_required, identity_provider_identity=dev1@aggregion.com, code_id=e9d1772e-47b7-4658-a9a8-4e32a9dbb6cd, username=dev1@aggregion.com, response_mode=query, authSessionParentId=e9d1772e-47b7-4658-a9a8-4e32a9dbb6cd, authSessionTabId=1iLsHoNbB8MИмя события
timestampJan 18, 2023 @ 14:47:17.334Unixtimestamp события

Содержание msg от Keycloak:

Наименование поляПример содержанияОписание
typeLOGINТип события Keycloak: Login - Пользователь вошел в систему. Logout - Пользователь вышел (не учитывается событие истечения токена). Code to Token - Обмен кода на токен в Identity Provider. Refresh Token - Приложение или клиент обновило токен.
realmIde8de6d9f-0492-40fb-aa75-42ba3065baa4Id realm в который произведен вход
clientIddcpКлиент, через который осуществляется вход. Для dcp, atlas, kibana и grafana отдельные клиенты.
userIdfe9a6a10-d3f6-482f-8af7-ca165b1f4a16Идентификатор пользователя в Keycloak.
ipAddress176.52.98.94Ip-адрес с которого произведен вход.
identity_provideraggregion-oidcIdentity Provider, использованный для входа в систему.
response_typecodeТип ответа при успешном логине
redirect_urihttps://dev1.dcp.bm.dev.aggregion.com/oauth/callbackURI на который перешел пользователь после успешной аутентификации в стороннем провайдере.
consentno_consent_requiredИспользуется ли consent auth flow. То есть информация о необходимости согласия пользователя об использовании данных, передаваемых от провайдера аутентификации.
identity_provider_identitydev1@aggregion.comИдентификатор пользователя в identity provider использованном при входе
code_ide9d1772e-47b7-4658-a9a8-4e32a9dbb6cdId полученного от провайдера аутентификации кода
usernamedev1@aggregion.comИмя авторизовавшегося пользователя
response_modequeryТип ответа
authSessionParentIde9d1772e-47b7-4658-a9a8-4e32a9dbb6cdId родительской сессии
authSessionTabId1iLsHoNbB8MId сессии

Логирование событий обращения к данным

Обращение к данным в полной мере логируется в blockchain. Доступ к информации по обращению к данным есть через:

  • Интерфейс системы - описание в руководстве пользователя.
  • Просмотр сообщений об истории обращения к данным - описание в руководстве администратора, раздел Смарт-контракты
  • Просмотр информации от Data-service о факте записи лога обращения к данным в blockchain - пример приводится ниже.

Пример лога:

ПолеСодержимоеКомментарий
_idNKSHEYYBosQ-Sp5Lg6AE
_indexcdp-log-2023.02.02
_score1
_type_doc
@timestampFeb 2, 2023 @ 12:48:51.832
container.image.nameregistry.aggregion.com/dataservice:dcp-master-2297e450-128
datasetLogs._ id63db86f8b27dc70011040156
datasetLogs.availableToJun 2, 2023 @ 12:48:40.380
datasetLogs.businessGoalПроект для оценки покупательской способности клиентовНаименование бизнес-цели обращения к данным
datasetLogs.dataset43qbpyznywtrId датасета к которому произошло обращение
datasetLogs.downloadedAtFeb 2, 2023 @ 12:48:40.380Время загрузки датасета для обработки
datasetLogs.operationcleanroomВид обращения matching - матчинг, upload - выгрузка на VM, cleanroom - запуск модели с использованием данных
datasetLogs.project63aace849cf72100195017d3
datasetLogs.providedBy23hatqocqlndId владельца данных
datasetLogs.providedTo23hatqocqlndId получателя данных
hostnameaggregion-cdp-dataservice-cdp-test1-6b9b4f84df-fsj4g
kubernetes.container.namedataservice-api
kubernetes.labels.app_kubernetes_io/componentdataservice
kubernetes.labels.app_kubernetes_io/instancecdp-test1
kubernetes.labels.app_kubernetes_io/nameaggregion-cdp-dataservice-cdp-test1
kubernetes.namespacecdpstage-dmpd-918-test
kubernetes.pod.ip192.168.129.224
kubernetes.pod.nameaggregion-cdp-dataservice-cdp-test1-6b9b4f84df-fsj4g
level10
moduleTokenService
msgDatasetLogs were sent to 23hatqocqlnd, 23hatqocqlnd successfullyСообщение в логе
namedataservice-api
pid17
time1,675,331,331,832