2016-05-16 7 views
0

Ich erstelle Protokolle von Ereigniszählern von mehreren Servern im JSON-Format und verwende dann logstash, um die Zähler in Graphite/Grafana zu setzen. Das funktioniert, aber ich sehe nicht das gewünschte Format in Grafana. Ich möchte mehrere Counter zusammen basierend auf dem Server anzeigen können. Im Moment erscheint alles in der ersten Metrik (einschließlich des Servers). Wenn ich den Server auswähle, gibt es keine zweite Metrik, die für die Anzeige des Zählers verfügbar ist. Ich denke, dass das Format, das ich an Graphite sende, nicht korrekt ist.Formatierung von Logstash-Daten für Graphite

Dies ist ein Protokoll. Jede Zeile ist ein Server (der gleiche Server in jedem Protokoll), ein Datum und ein Zähler. Ich kann das Protokollformat ändern, wenn es benötigt wird.

{"Server":"10.254.70.52","@timestamp":"2016-05-13T20:58:24.0920228Z","oneLevelSearchOps":"11.07"} 
{"Server":"10.254.70.52","@timestamp":"2016-05-13T20:58:24.0920228Z","searchOps":"12.92"} 
{"Server":"10.254.70.52","@timestamp":"2016-05-13T20:58:24.0920228Z","errors":"0"} 

Dies ist der logstash .conf

input { 
file { 
    path => "/home/local/scott/difData-10.254.70.51.txt" 
    codec => "json" 
    sincedb_path => "/dev/null" 
    start_position => "beginning" 
} 
} 
output { 
stdout { codec => rubydebug } 
graphite{ 
    codec => "plain" 
    fields_are_metrics => true 
    host => "127.0.0.1" 
    port => "2003" 
} 
} 

Mit fields_are_metrics benötigt wird, Datei oder nichts zu Graphite gesendet. sincebd_path und start_position dienen zum Debuggen.

Hier ist eine Zeile vom stdout

{ 
     "Server" => "10.254.70.51", 
    "@timestamp" => "2016-05-13T21:28:40.918Z", 
"modifyEntryOps" => "0.10", 
     "@version" => "1", 
      "path" => "/home/local/NV/sfoley/difData-10.254.70.51.txt", 
      "host" => "lab-graphite" 
} 

Sollte dies Graphit der Lage sein, richtig zu interpretieren? Da ich dem Protokoll mehr Daten hinzufüge, würde ich lieber das json-formatierte Protokoll ändern, anstatt der logstash-.conf-Datei für jeden Zähler Filter hinzuzufügen, wenn dies erforderlich ist, aber ich könnte beides tun.

Danke für jede Hilfe.

Antwort

0

Ich schaute mehr in Graphit und änderte das Protokoll, um nur einen Eintrag (neben dem Datum) mit dem Server-Namen und Zählerdaten getrennt durch einen Punkt zu haben. Also server.counter Das hat mir was ich wollte.

{"@timestamp":"2016-05-13T20:59:37.5815457Z","predr01.oneLevelSearchOps":"5.6"} 
Verwandte Themen