2016-11-01 79 views
0

ich die logstash config-Datei verwenden, die ich von diesem Artikel ...Import sysdig Daten in elastische

http://logz.io/blog/sysdig-elk-stack/

Der Inhalt /etc/logstash/sysdig-logstash.conf

input { 
    stdin { } 
} 

filter { 
     grok { 
     pattern => "^%{NUMBER:num:int} %{NUMBER:time:float} %{INT:cpu:int} %{NOTSPACE:procname} %{NOTSPACE:tid} (?<direction>[<>]) %{WORD:event} %{DATA:args}$" 
    } 

date { 
    match => [ "time", "UNIX" ] 
} 

    if [args] { 
     kv { 
     source => "args" 
     remove_field => "args" 
     } 
    } 
} 

output { 
    #stdout { codec => rubydebug } 
    elasticsearch { 
     } 
} 

Wenn ich versuche, die Daten in elastisch mit logstash, erhalte ich einen Fehler zu Dump ...

# sysdig -t a "not(proc.name = sysdig)" | bin/logstash -f /etc/logstash/sysdig-logstash.conf 

hat eine ungültige Konfiguration abgerufen

Was ist die korrekte Konfigurationsdatei für die Verarbeitung von sysdig-Daten?


Update:

Nach der Korrektur => kann ich den Text zu elastischen einzuloggen. Aber mit einem Problem. Die gesamte Protokollzeile wurde als Nachrichtenfeld gespeichert, wobei das in der Konfigurationsdatei erwähnte grok-Muster ignoriert wurde. Für z.B. Dies ist die Ausgabe, wenn ich stdout zu rubydebug aktiviert habe.

{ 
     "message" => "1894246 1478069107.694757379 1 sysdig (16910) > switch next=0 pgft_maj=0 pgft_min=1658 vm_size=97364 vm_rss=7816 vm_swap=0 ", 
     "@version" => "1", 
    "@timestamp" => "2016-11-02T06:45:07.725Z", 
      "host" => "ip-172-31-0-192", 
      "tags" => [ 
     [0] "_grokparsefailure" 
    ] 
} 

Der Artikel erwähnt separate Felder für CPU, procname usw.

+1

Stellen Sie sicher, alle Vorkommen von '= >' durch '=>' – Val

+0

zu ersetzen Ich erhalte keinen Fehler nach der Änderung zu =>, aber ich bekomme immer noch nicht die Felder korrekt verarbeitet in elastischen. Mit anderen Worten, der Grok-Filter wird nicht angewendet, und die gesamte Zeile wird im Feld "Nachricht" angezeigt. – shantanuo

Antwort

1

Der richtige Weg, um die grok Filter zu spezifizieren, wie das ist, das heißt match nicht pattern

filter { 
    grok { 
    match => {"message" => "^%{NUMBER:num:int} %{NUMBER:time:float} %{INT:cpu:int} %{NOTSPACE:procname} %{NOTSPACE:tid} (?<direction>[<>]) %{WORD:event} %{DATA:args}$" } 
    } 
} 
+0

konnten Sie das ausprobieren? – Val

0

mit Versuchen Sie, die grok debugger mit den Grob debuggen. Definitiv einige Probleme mit dem Codebeispiel oben.