Grok ist ein Tool, das Protokolle analysieren kann. Mit grok, können Sie unstrukturierte Log-und Event-Daten in strukturierte Daten umwandeln.
apt-get install bison ctags flex gperf libevent-dev libpcre3-dev libtokyocabinet-dev libevent-1.4-2 libtokyocabinet8 libpcre3 cd /opt wget http://semicomplete.googlecode.com/files/grok-1.20110630.1.tar.gz tar xfz grok-1.20110630.1.tar.gz rm grok-1.20110630.1.tar.gz mv grok-1.20110630.1 grok cd grok
Ab Ubuntu 11.04 wurde das verlinken der libraries mid „ld“ von „LDFLAGS“ nach „LIBS“ geändert.
dafür muss folgendes angepasst werden:
Nun kann endlich kompiliert werden
make make install
Grok kann mit div. Log-Dateien und den angegebenen Patterns getestet werden.
Man nimmt einfach eine Log-Datei und testet diese mit diesem Befehl:
grok -f test.grok
Die test.grok
füllt man mit folgendem Inhalt:
program { load-patterns: "/opt/grok/patterns/base" load-patterns: "/opt/grok/patterns/<DATEINAME>" exec "cat <PFAD_ZU_LOG-DATEI>" match { pattern: "%{IP}" pattern: "%{PATTERN1}" pattern: "%{PATTERN2}" pattern: "%{PATTERN3}" pattern: "%{PATTERN4}" pattern: "%{PATTERN5}" reaction: "Found: %{IP}" reaction: "found: %{FELD1}, %{FELD2}, ${FELD13}" } }
Im o.g. Beispiel hat man die Anweisung load-patterns:
zwei mal ausgeführt und beim zweiten mal einen andere Pattern-Datei angegeben.
Eine neue eigene Pattern-Datei muß wie folgt aussehen:
<PATTERN_NAME_IN_GROßBUCHSTABEN> <SUCHWORT_AUS_LOG-DATEI>%{<PATTERN_AUS_BASE-DATEI>:<FELDNAME>}
Hier ein Beispiel
NETSCREEN1 policy_id=%{INT:policy_id}
Möchte man diese Patterns in logstash
verwenden, muss man diese explizit mit der Directive patterns_dir ⇒
angeben.
Das sieht dann ungefähr so aus:
if [type] == "<TYPE_NAME>" { grok { patterns_dir => [ "<PFAD_ZU_PATTERNS>" ] match => { "message" => "...." } } }