Ich verwende logstash, um Protokolleinträge aus einer Eingabeprotokolldatei zu analysieren.Formatieren des Datums in der Logstash-Konfiguration
Logline:
TID: [0] [] [2016-05-30 23:02:02,602] INFO {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService} - Configured Registry in 572ms {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService}
Grok Muster:
TID:%{SPACE}\[%{INT:SourceSystemId}\]%{SPACE}\[%{DATA:ProcessName}\]%{SPACE}\[%{TIMESTAMP_ISO8601:TimeStamp}\]%{SPACE}%{LOGLEVEL:MessageType}%{SPACE}{%{JAVACLASS:MessageTitle}}%{SPACE}-%{SPACE}%{GREEDYDATA:Message}
Mein grok Muster funktioniert gut. Ich sende diese Parse-Einträge zu einer von mir selbst erstellten Rest-Base-API.
Konfigurationen:
output {
stdout { }
http {
url => "http://localhost:8086/messages"
http_method => "post"
format => "json"
mapping => ["TimeStamp","%{TimeStamp}","CorrelationId","986565","Severity","NORMAL","MessageType","%{MessageType}","MessageTitle","%{MessageTitle}","Message","%{Message}"]
}
}
In der aktuellen Ausgabe, erhalte ich das Datum, wie es aus den Protokollen analysiert wird:
Stromausgang:
{
"TimeStamp": "2016-05-30 23:02:02,602"
}
Problemstellung:
Aber das Problem ist, dass meine API das Datum in einem solchen Format nicht erwartet, es erwartet das Datum im generischen xsd-Typ, datetime Format. Auch, wie unten erwähnt:
Erwartete Ausgabe:
{
"TimeStamp": "2016-05-30T23:02:02:602"
}
Kann jemand bitte leite mich, welche Änderungen ich habe in meinem Filter oder Ausgangszuordnung hinzufügen, um dieses Ziel zu erreichen.
Sind Sie sicher über '201 6-05-30T23: 02: 02: 602'? Sollte es nicht "2016-05-30T23: 02: 02.602" sein, d.h. mit einer Periode vor den Millisekunden. – Val