【发布时间】:2016-06-06 07:46:13
【问题描述】:
我正在使用 logstash 从输入日志文件中解析日志条目。
日志线:
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 模式:
TID:%{SPACE}\[%{INT:SourceSystemId}\]%{SPACE}\[%{DATA:ProcessName}\]%{SPACE}\[%{TIMESTAMP_ISO8601:TimeStamp}\]%{SPACE}%{LOGLEVEL:MessageType}%{SPACE}{%{JAVACLASS:MessageTitle}}%{SPACE}-%{SPACE}%{GREEDYDATA:Message}
我的 grok 模式运行良好。我将这些解析条目发送到我自己制作的 rest base api。
配置:
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}"]
}
}
在当前输出中,我得到了从日志中解析出来的日期:
电流输出:
{
"TimeStamp": "2016-05-30 23:02:02,602"
}
问题陈述:
但问题是我的 API 不期望这种格式的日期,它期望通用 xsd 类型的日期,即日期时间格式。另外,如下所述:
预期输出:
{
"TimeStamp": "2016-05-30T23:02:02:602"
}
有人可以指导我,我必须在过滤器或输出映射中添加哪些更改才能实现此目标。
【问题讨论】:
-
你确定
2016-05-30T23:02:02:602?不应该是2016-05-30T23:02:02.602,即毫秒前的句点。
标签: regex logstash logstash-grok logstash-configuration