Wyrażenia parsujące tekst
Zadaniem wyrażeń parsujących jest dostarczenie listy nazwanych wartości (par klucz-wartość) dla danego tekstu. Pola te umożliwiają późniejsze filtrowanie wiadomości, a także mogą być użyte jako liczniki lub obiekty statusu. Każde wyrażenie wymaga zadeklarowania listy zmiennych, które zostaną zwrócone przez wyrażenie.
Wartości oddzielone przecinkiem
Prawdopodobnie jest to najprostszy format do parsowania. Nazwy zmiennych opisują każdą kolumnę, a domyślnym separatorem jest przecinek.
Pary klucz wartość
Ten format jest przydatny, gdy dane są zakodowane jako serie par klucz-wartość oddzielone jednym dodatkowym separatorem. Na przykład:
from:John;val:10
W tym przypadku Separatorem par będzie ; a separatorem wartości :
innym przykładem będzie kodowanie ini*:
speed=10
acceleration=0
W tym przypadku Separatorem Par będzie \n a separatorem wartości =
Wyrażenia regularne
Wyrażenia regularne mogą być szeroko wykorzystane i są bardzo przydatne w dopasowywaniu wzorców. NetCrunch używa implementacji JavaScript wyrażenia regularnego i dopasowuje zmienną według kolejności pasujących grup.
Przykład - format dziennika Log4J
Utworzyliśmy wzorzec regexp dla popularnego formatu Log4J.
(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2},\d{3}) \[(.*?)\] ([^ ]*) +([^ ]*) - (.*)$
któremu przypisaliśmy następujące zmienna (pola)
- Data (Date)
- Czas (Time)
- Wątek (Thread)
- Ważność (Severity)
- Moduł (Module)
- Komunikat (Message)
Standardowy format dziennika Apache
Pozwala na dekodowanie wpisów Apache używających formatu Common Log Format. Wszystko, czego potrzebujesz, to podanie formatu używanego do konfiguracji danego dziennika.
Więcej informacji w dokumentacji Apache
Selektory XPath/DOM
NetCrunch obsługuje ścieżki XML do pobierania danych z XML. Obsługiwane są tylko ścieżki zwracające pojedyncze wartości.
Przykład
<doc>
<amount>10.2</amount>
<user name="John" id="123"/>
</doc>
Możemy wyciągnąć wszystkie zmienne za pomocą następujących ścieżek:
/doc/amount//user/@name//user/@id
Selektory warunkowe
Możesz wybrać atrybut elementu, wybierając element węzła za pomocą innego atrybutu. W naszym przykładzie możemy uzyskać nazwę użytkownika, wybierając element według jego identyfikatora.
//doc/user[@id='123']/@name
Slektory DOM
Wyrażenie XPath obsługuje również selektory DOM (inaczej selektory CSS). Można ich używać do wybierania wartości węzłów. Jeśli jednak potrzebujesz wartości atrybutu, nie ma możliwości określenia tego za pomocą standardowego selektora CSS. Dlatego rozszerzyliśmy składnię, dodając znak '|' , po którym można dodać nazwę atrybutu.
Tak więc poniższa ścieżka da taki sam wynik, jak powyższe XPath.
doc > amountuser|nameuser|id
JSON Path
NetCrunch obsługuje ścieżki JSON Path do pobierania danych z JSON. Obsługiwane są tylko ścieżki zwracające pojedyncze wartości.
Przykład
{
"doc" : {
"amount": 22,
"user" : {
"name" : "John",
"id" : 100
}
}
}
Możemy wyciągnąć wszystkie zmienne za pomocą następujących ścieżek:
$.doc.amount$..user.name$..user.id
Javascript
JavaScript wydaje się najlepszym rozwiązaniem do wyciągania danych, ponieważ możesz używać wyrażeń regularnych i wszystkich możliwości silnika JavaScript (V8) implementującego najnowszy standard językowy. Twój skrypt jest uruchamiany w trybie ścisłym (strict mode) w oddzielnym i 'sandboxowanym' silniku NodeJS i jest zabijany, jeśli przekroczy limit czasowy.
Wejście (Input)
Dane wejściowe skrypti znajdują się w zmiennej text.
#### Wynik (The Output)
W wyniku działania skryptu NetCrunch oczekuje, że zmienna
Wynik (The Output)
W wyniku działania skryptu NetCrunch oczekuje, że zmienna result będzie obiektem o właściwościach pasujących do zadeklarowanych zmiennych (pól).
Przykład
Wyobraźmy sobie, że otrzymujemy wiadomość e-mail zawierającą JSON. Użycie JavaScriptu do wyodrębniania potrzebnych danych będzie bardzo proste,
Test Text
{
"probe_1" : {
"temp" : 10
}
}
Zmienne
- temperature
Skrypt
const data = JSON.parse(text);
result = {
temperature : data.probe_1.temp
}