如何在 Logstash 配置中格式化日期
How to format date in Logstash Configuration
我正在使用 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 模式运行良好。我将这些解析条目发送到我自己制作的休息基地 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-30 23:02:02,602
到 XSD 日期时间格式
2016-05-30T23:02:02.602
您只需添加一个 mutate/gsub
filter 即可将 space 字符替换为 T
并将 ,
字符替换为 .
filter {
mutate {
gsub => [
"TimeStamp", "\s", "T",
"TimeStamp", ",", "."
]
}
}
我正在使用 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 模式运行良好。我将这些解析条目发送到我自己制作的休息基地 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-30 23:02:02,602
到 XSD 日期时间格式
2016-05-30T23:02:02.602
您只需添加一个 mutate/gsub
filter 即可将 space 字符替换为 T
并将 ,
字符替换为 .
filter {
mutate {
gsub => [
"TimeStamp", "\s", "T",
"TimeStamp", ",", "."
]
}
}