2017-07-20 4 views
1

Ich möchte Daten (Zeitstempel und Nachricht) über Xpath-Plugin in Logstash aus XML-Dateien extrahieren, um nur sie in Felder in kibana anzuzeigen.Extrahieren von Daten mit Logstash und Xpath

XML Beispiel:

<log4j:event logger="logger4test" timestamp="1496297008092"><log4j:message>sample message</log4j:message></log4j:event> 

Logstash conf:

input { 
    file { 
      path => "/opt/logs/*" 
      start_position => beginning 
      sincedb_path => "/dev/null" 
      type => "xml" 
    } 
} 

filter { 
    xml { 
      remove_namespaces => true 
      source => "file" 
      store_xml => false 
      xpath => [ 
        "//event/@timestamp", "time", 
        "//message/text()", "lmessage" 
      ] 
    } 

    if [type] == "xml" { 
      mutate { 
        replace => [ 
          "time", "%{time}", 
          "lmessage", "%{lmessage}" 
        ] 
      } 
    } 
} 

jedoch das Ergebnis in lmessage ist der Wert% {lmessage} und in der Zeit:% {time} und nicht wie erwartet die echte Nachricht und Zeit.

Kann mir bitte jemand helfen? Es gibt auch keine Fehler in den Logstash-Protokollen.

Antwort

0

Das Problem wurde behoben. Das Problem war das Feld "Quelle". Ich musste "file" durch "message" ersetzen, da logstash diese Informationen von wo es liest Daten und "message" ist das passende Attribut von logstash.

xml { 
     remove_namespaces => true 
     source => "message" 
     store_xml => false 
     xpath => [ 
       "//event/@timestamp", "time", 
       "//message/text()", "lmessage" 
     ] 
}