Splunk

Komendy własne na platformie Splunk

2019-11-26
Podziel się

SPL, czyli język zapytań Splunk jest przebogaty. Zdarzają się jednak wymogi funkcjonalne, którym łatwiej sprostać wykorzystując języki ogólnego przeznaczenia. Na szczęście, Splunk oferuje rozwiązanie umożliwiające integrację najpopularniejszych języków programowania z platformą. Dzięki temu możliwy jest w zasadzie nieograniczony rozwój jej funkcjonalności poprzez pisanie własnych poleceń, wplecionych w sekwencję komend SPL.

W niniejszym artykule skupię się na praktycznym aspekcie tego zagadnienia. Wyjaśnię, czym są i kiedy używać komend własnych, a także pokażę przykład ich implementacji. Komenda własna to operacja w łańcuchu komend SPL realizujących zapytanie Splunk, która wykracza poza wbudowane polecenia. Poniższy pseudo kod pokazuje schematycznie miejsce komendy własnej w łańcuchu poleceń SPL.

Miejsce komendy w łańcuchu poleceń SPL

Komendy własne bazują na wybranym przez dewelopera SDK (ang. Software Development Kit), czyli na zestawie narzędzi przygotowanych przez Splunk dla programistów, którzy chcą rozwijać funkcjonalność platformy. Aktualnie, zestawy takich narzędzi dostępne są dla  języków: Python, Java, JavaScript oraz C#, tak więc jest z czego wybierać. Dokumentacja i same narzędzia udostępniane są na stronie http://dev.splunk.com/sdks.

Jak obrazuje powyższy pseudo kod, polecenie my_command zostało wplecione w łańcuch standardowych operacji SPL. To od nas zależą szczegóły implementacji tej komendy. Od nas jako autorów polecenia zależy, w którym z preferowanych języków wygodniej nam będzie zrealizować oczekiwaną funkcjonalność i jakie będą jej rezultaty. Spróbujmy wyobrazić sobie konkretyzację polecenia my_command.

Przypuśćmy, że naszym celem, jako analityka z działu AML, jest przygotowanie raportu zawierającego listę transakcji powiązanych o podwyższonym ryzyku za wybrany okres. Załóżmy też, że w tym celu należy:

  • sprowadzić kwotę surową transakcji do wspólnego mianownika (powiedzmy, USD), zgodnie z obowiązującym na dany dzień taryfikatorem walut, udostępnionym przez NBP jako API (obecne pod konkretnym adresem http);
  • uwzględnić fakt ciągłego napływu transakcji – dat księgowania – przy braku odpowiedników czasowych w taryfikatorze walut (wymóg projekcji przy nominalnych „lukach” w datach taryfikatora);
  • uzależnić obecność rekordu na docelowym raporcie od faktu obecności beneficjenta na zewnętrznej liście sankcyjnej (tzw. czarna lista);
  • uzależnić obecność rekordu na docelowym raporcie od adresu zleceniodawcy i od adresu beneficjenta transakcji, co wiąże się z przeczesaniem zewnętrznej listy rekordów, tzw. biur wirtualnych, czyli firm nieposiadających fizycznej siedziby.

Napisanie własnego polecenia wydaje się tu naturalnym rozwiązaniem. Szczególnie że powyższe wymogi funkcjonalne wiążą z wykorzystaniem takich konstruktów jak pętle, których w SPL po prostu brakuje.

Inna sytuacja, która zachęca do wykorzystania komend własnych to obecność na gruncie wybranego języka programowania gotowych już bibliotek, realizujących wybraną funkcjonalność, a która poszerza możliwości samej platformy. Dojrzałe języki ogólnego przeznaczenia dysponują ekosystemem bibliotek, z którego Splunk może czerpać garściami. Poniższy schemat pokazuje miejsce komendy własnej w standardowym szkielecie aplikacji Splunk.

Schemat pokazuje miejsce komendy w aplikacji Splunk

Jak widać, SDK pobrane ze strony Splunk, umożliwiające pisanie komend własnych, trafia do dedykowanego katalogu bin ze skryptami, natomiast deklaracje poleceń (obecne w pliku commands.conf), do których odwołujemy się w łańcuchu komend docelowego zapytania, trafiają do katalogu default.

Poniżej prezentuję przykład wykorzystania istniejącej biblioteki JavaScript (D3.js) do wizualizacji powiązań w zakresie przepływów finansowych pomiędzy firmami, na podstawie ich sprawozdań finansowych zawartych w plikach JPK (nowy standard sprawozdawczości).

Powiązania między podmiotami

Oprócz niestandardowych wizualizacji możemy użyć komend własnych i odwołać się do gotowych, zaawansowanych bibliotek analitycznych. Poniżej prezentuję przykład wykorzystania jednej z wielu bibliotek analitycznych języka Python z domeny analizy grafów do wykrywania w morzu transakcji takich, w ramach których przepływy pieniężne wędrują po tzw. zamkniętych obwodach. Wartość praktyczna takiej analizy leży, chociażby w tym, że dzięki niej można dokładnie wskazać, a tym samym i kontrolować, rzeczywistych beneficjentów transakcji.

Przepływy transakcji w zamkniętych obwodach

Mam nadzieję, że zachęciłem Cię korzystania z możliwości, jakie daje wykorzystanie komend własnych na platformie Splunk. Jeżeli chciałbyś zagłębić się w arkana pisania takich poleceń, zapraszamy na nasze szkolenia Splunk. Służymy również wsparciem w zakresie implementacji oczekiwanych przez klienta funkcjonalności.

Jeżeli chciałbyś przeczytać podobne artykuły lub masz pytania, pisz w komentarzach 😉

Powiązane wpisy:

Przyspieszamy: indeksy sumaryczne na platformie Splunk

Zobacz również