Monitoring zdarzeń platformowych

Wymagania

  • aktywna aplikacja Router2 z EximeeEvents

    • aplikacja dostarczana z platformą Eximee od wersji 2.3167.0

  • aktywna aplikacja WebformsRest

    • aplikacja dostarczana z platformą Eximee

  • aktywna aplikacja MonitoringLogProcessor

    • aplikacja dostarczana z platformą Eximee 2.3019.0

  • aktywna baza przechowująca zdarzenia

    • do działania aplikacji wymagany jest PostgreSQL w wersji >=9.5

  • aktywna instancja Kafki

    • platforma Eximee dostarcza Kafka w odpowiedniej wersji

    • w przypadku chęci wykorzystania Kafki istniejącej w banku polecamy wersję >= 3.4

  • aktywna instancja Grafana min 8.X.X

    • przykładowy dashboard monitoringu jest przekazywany z platformą w pliku grafana.json

Uruchomienie funkcjonalności w platformie sterowane jest przez dodanie do zmiennej COMPOSE_PROFILES wartości "monitoring".

Założenia działania

Aplikacja Webforms generuje zdarzenia związane ze stanem wniosków.

Możliwe są różne implementacje logowania zdarzeń aktywne w tym samym czasie. Zależy to od konfiguracji oraz wdrożenia. EximeeEventsConnector (jedna z możliwych implementacji) zbiera zdarzenia i wysyła je do EximeeEvents.

EximeeEvents zapisuje je na odpowiedni topic Kafki.

MonitoringEventProcessor czyta zdarzenia z kafki, weryfikuje je i zapisuje do bazy danych (PostgreSQL) w sposób możliwy do odczytania przez Grafanę.

Zdarzenia w bazie danych mogą zostać odczytane przez zewnętrzne aplikacje w celu wizualizacji lub analizy. Razem z platformą dostarczana będzie konfiguracja Grafany w celu wizualizacji zdarzeń.

Ilustracja 1. Architektura rozwiązania monitorowania zdarzeń

Aplikacja Router2 z EximeeEvents

Przeznaczenie

EximeeEvents to plugin do aplikacji Router2. Udostępnia on endpoint przyjmujący zdarzenia, które są następnie zapisywane na odpowiednim topicu Kafki.

Konfiguracja

Konfiguracja oraz więcej informacji tutaj [Rejestracja zdarzeń procesu]

Aplikacja MonitoringLogProcessor

Przeznaczenie

Zadaniem aplikacji jest wypełnianie bazy danych (aktualnie tylko PostgreSQL) zdarzeniami platformowymi.

Aplikacja czyta zdarzenia ze źródła (Kafka) i weryfikuje czy jest to zdarzenie systemowe (pochodzące z platformy). Następnie zdarzenia systemowe są dostosowywane pod Grafanę i zapisywane do bazy danych.

Konfiguracja

Klucz
Wymagalność
Przykład
Opis

Baza danych - docelowe miejsce do przechowywania zdarzeń

MONITORING_LOG_PROCESSOR_DATABASE_DIALECT

TAK

org.hibernate.dialect.PostgreSQL95Dialect

Dialekt bazy danych przeznaczonej do przechowywania zdarzeń.

MONITORING_LOG_PROCESSOR_DATABASE_URL

TAK

Namiar na bazę danych.

MONITORING_LOG_PROCESSOR_DATABASE_USERNAME

TAK

db_user

Użytkownik z uprawnieniami do zapisu zdarzeń.

MONITORING_LOG_PROCESSOR_DATABASE_PASSWORD

TAK

db_pass

Hasło użytkownika dostępowego do bazy danych.

Kafka

Źródło danych
Wymagalność

MONITORING_LOG_PROCESSOR_KAFKA_URL

TAK

Namiar na Kafkę

MONITORING_LOG_PROCESSOR_KAFKA_TOPIC

TAK

all

Topic, na który trafią wiadomości ze zdarzeniami

MONITORING_LOG_PROCESSOR_KAFKA_GROUP

TAK

eximee-events

Grupa zdarzeń eximee

Zapisywane zdarzenia

Zdarzenia muszą być pochodzenia systemowego (origin = SYSTEM).

Typy zdarzeń są modyfikowane na typ biznesowy. Typ, który nie posiada odpowiednika w zdarzeniu biznesowym, dostaje pustą wartość. Informacja o zamianie typów zdarzeń znajduje się poniżej:

Zdarzenie systemowe (eximee)
Zdarzenie biznesowe
Opis

FORM_NEW_STARTED

FORM_ENTRY

Wejście na wniosek

FORM_NEXT_PAGE FORM_PREVIOUS_PAGE

PAGE_SAVE

Zapisanie stanu aktualnej strony - przejście na kolejną lub poprzednią stronę

FORM_CLIENT_PAGE_CHANGED

PAGE_ENTRY

Zmiana strony - wejście na inną stronę.

FORM_SAVE

FORM_SAVE

Wysłanie wniosku

FORM_DRAFT_SAVE

FORM_DRAFT_SAVE

Zapisanie roboczej wersji wniosku

FORM_DRAFT_RESTORE

FORM_DRAFT_RESTORE

Przywrócenie roboczej wersji wniosku

Struktura bazy danych (PostgreSQL)

Określona struktura bazy danych ze zdarzeniami biznesowymi.

Schema
monitoring_events

Tabela

events

Nazwa pola

Typ

nullable

Opis

id

bigserial

FALSE

Kolejne identyfikatory zdarzeń

origin

text

FALSE

Pochodzenie zdarzenia (SYSTEM / BUSINESS)

type

text

FALSE

Typ zdarzenia biznesowego (tabela z typem zdarzeń znajduje się wyżej)

timestamp

timestamp

FALSE

Czas wywołania zdarzenia (data i godzina)

payload

jsonb

TRUE

Dane zdarzenia w postaci JSONa, jeśli zdarzenie posiada dodatkowe dane.

Skrypty migracyjne

Skrypty migracyjne do stworzenia i modyfikowania tabeli zapisywane są w archiwum do przekazania razem z platformą.

Aplikacja Webforms z logowaniem zdarzeń

Przeznaczenie

Mechanizm logowania zdarzeń ma za zadanie zbierać zdarzenia związane ze zmianą stanu wniosków z całej platformy. Zdarzenia są wysyłane w paczkach do Kafki przy pomocy EximeeEvents.

Konfiguracja

W celu aktywowania zbierania zdarzeń, należy odpowiednio ustawić konfigurację webforms.xml. Poniżej fragment konfiguracji, który odpowiada za aktywny przepływ zbierania zdarzeń.

Connector do eximeeEvents jest dostarczany w libie eximee-events

<?xml version="1.0" encoding="UTF-8" ?>
<webforms>
   ....
   <server>
      ...
      <features>
         ...
         <eventLog>
            <enabled>true</enabled>
            <coreExecutorPoolSize>5</coreExecutorPoolSize>
            <maxExecutorPoolSize>10</maxExecutorPoolSize>
            <eximeeEventsProcessor>
               <enabled>true</enabled>
               <url>http://localhost:9002</url>
            </eximeeEventsProcessor>
         </eventLog>
      </features>
   </server>
</webforms>

Oraz tabela przedstawiająca konfigurację instalacyjną.

Klucz instalacyjny
Klucz w konfiguracji
Przykładowa wartość
Opis

Akywny mechanizm zbierania zdarzeń

server.features.eventLog.enabled

true

Aktywność mechanizmu zbierania zdarzeń

server.features.eventLog.coreExecutorPoolSize

5

Liczba wątków w ramach przetwarzania zdarzeń

server.features.eventLog.maxExecutorPoolSize

10

Maksymalna liczba wątków w ramach przetwarzania zdarzeń

Aktywny mechanizm logowania zdarzeń

server.features.eventLog.eximeeEventsProcessor.enabled

true

Aktywność mechanizmu EximeeEvents

server.features.eventLog.eximeeEventsProcessor.url

Namiar na aplikację EximeeEvents do zapisywania zdarzeń na kafce

Last updated

Was this helpful?