Płynie strumień płynie…

Dane w formie strumienia? W dobie rosnącej ilości urządzeń generujących i wysyłających komunikaty w sposób ciągły, jak również danych pozyskiwanych ze źródeł takich jak logi aplikacji możemy mówić właśnie o danych przekazywanych w formie strumienia. Oczywiście można brać pod uwagę przechwycenie takiego strumienia i odłożenie danych do późniejszego wykorzystania, jednak skoro dane pozyskiwane są w sposób ciągły, to czemu by nie analizować ich również w czasie rzeczywistym.

W tym miejscu pojawia się pierwsza potrzeba. Strumień danych należy przechwycić. Z pomocą przychodzą w tym scenariuszu komponenty platformy Azure, a dokładnie dwa z nich:

  • Event Hub
  • Stream Analytics

Event Hub to nic innego jak interfejs przyjmujący pojedyncze komunikaty przesyłane/generowane przez urządzenia. W ramach podstawowych elementów konfiguracji Event Huba pojawia się informacja o partycjach, w ramach których gromadzone będą przechwycone dane, jak również retencja, czyli informacja o tym jak długo dane będą przechowywane w Hubie przed ich automatycznym nadpisaniem. Tak, należy pamiętać, że Event Hub nie służy długoterminowemu przechowywaniu danych. Jego zadaniem jest przechwycenie komunikatu, który następnie może być przetworzony, w tym również składowany np. w postaci rekordu w bazie danych, czy pliku odłożonym w ramach przestrzeni dyskowej np. Azure Storage. Element, który pozwala wykonać dokładnie taką aktywność to Stream Analytics. Zadanie (job) stream analytics pobiera dane, z wcześniej wspominanego Event Huba i już na tym etapie pozwala dokonać wstępnej analizy danych. Dla przykładu można dokonać w tym miejscu wstępnego filtrowania czy grupowania danych. Co ciekawe, aby dokonać takich operacji posłużyć można się klasycznym zapytaniem SQL,w którym źródłami danych zamiast tabel, są zdefiniowane punkty wejściowe (input) – przykładem takiego elementu wejściowego może być właśnie Event Hub. A co dzieje się z danymi, które zostały przetworzone w ramach działającego zadania Stream Analytics? Mogę być one przekazane bezpośrednio do elementu wyjścia (output), który może być repozytorium danych np. tabeli w bazie, plik w ramach storage lub data set, stanowiący źródło dla wizualizacji np. Power BI.

W praktyce przepływ strumienia może wyglądać tak.

StreamAnalytics.png

W powyższym przykładzie informacje dot. wykrytych adresów IPsą w czasie rzeczywistym przesyłane przez aplikację do Event Hub’a(ipfilter). Na poziomie Stream Analytics następuje złączenie przychodzących adresów z listą adresów zakazanych(ipblacklist), a następnie wyniki przesyłane są do PowerBI(ipfilteroutput), gdzie na przygotowanym raporcie/pulpicie nawigacyjnym są zliczane i wizualizowane m.in. na osi czasu.
Dodatkowo korzystając z opcji alertów w Power BI, informacje o wykrytych adresach z czarnej listy od razu generują powiadomienie do odbiorcy, zarówno w formie mailowej jak i informacji w aplikacji mobilnej oraz portalu PowerBI.

Alertt