Inhaltsverzeichnis

Grok

Grok ist ein Tool, das Protokolle analysieren kann. Mit grok, können Sie unstrukturierte Log-und Event-Daten in strukturierte Daten umwandeln.

Installation

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 testen

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}"
  }
}

Eigene Patterns

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" => "...." }
                }
        }