Logstash 1.4.2 神交过滤器:_grokparsefailure
Logstash 1.4.2 grok filter: _grokparsefailure
我正在尝试解析此日志行:
- 2014-04-29 13:04:23,733 [main] INFO (api.batch.ThreadPoolWorker) 此 运行 的命令行选项:
这是我使用的 logstash 配置文件:
input {
stdin {}
}
filter {
grok {
match => [ "message", " - %{TIMESTAMP_ISO8601:time} \[%{WORD:main}\] %{LOGLEVEL:loglevel} %{JAVACLASS:class} %{DATA:mydata} "]
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
output {
elasticsearch {
host => "localhost"
}
stdout { codec => rubydebug }
}
这是我得到的输出:
{
"message" => " - 2014-04-29 13:04:23,733 [main] INFO (api.batch.ThreadPoolWorker) Commans run:",
"@version" => "1",
"@timestamp" => "2015-02-02T10:53:58.282Z",
"host" => "NAME_001.corp.com",
"tags" => [
[0] "_grokparsefailure"
]
}
如果有人能帮我找出gork模式的问题所在。
我试图在 http://grokdebug.herokuapp.com/ 中解析该行,但它仅解析时间戳、%{WORD} 和 %{LOGLEVEL},其余部分将被忽略!
您的配置有两个错误。
第一
GROK
中的错误是JAVACLASS
,您必须在模式中包含(
)
,例如:\(%{JAVACLASS:class}\
。
第二
date
过滤器 match
有两个值,第一个是您要解析的 field
,因此在您的示例中它是 time
,而不是 timestamp
.第二个值是日期模式。可以参考here
这是配置
input {
stdin {
}
}
filter {
grok {
match => [ "message", " - %{TIMESTAMP_ISO8601:time} \[%{WORD:main}\] %{LOGLEVEL:loglevel} \(%{JAVACLASS:class}\) %{GREEDYDATA:mydata}"
]
}
date {
match => [ "time" , "YYYY-MM-dd HH:mm:ss,SSS" ]
}
}
output
{
stdout {
codec => rubydebug
}
}
仅供参考。希望这可以帮到你。
我正在尝试解析此日志行: - 2014-04-29 13:04:23,733 [main] INFO (api.batch.ThreadPoolWorker) 此 运行 的命令行选项: 这是我使用的 logstash 配置文件:
input {
stdin {}
}
filter {
grok {
match => [ "message", " - %{TIMESTAMP_ISO8601:time} \[%{WORD:main}\] %{LOGLEVEL:loglevel} %{JAVACLASS:class} %{DATA:mydata} "]
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
output {
elasticsearch {
host => "localhost"
}
stdout { codec => rubydebug }
}
{
"message" => " - 2014-04-29 13:04:23,733 [main] INFO (api.batch.ThreadPoolWorker) Commans run:",
"@version" => "1",
"@timestamp" => "2015-02-02T10:53:58.282Z",
"host" => "NAME_001.corp.com",
"tags" => [
[0] "_grokparsefailure"
]
}
如果有人能帮我找出gork模式的问题所在。 我试图在 http://grokdebug.herokuapp.com/ 中解析该行,但它仅解析时间戳、%{WORD} 和 %{LOGLEVEL},其余部分将被忽略!
您的配置有两个错误。
第一
GROK
中的错误是JAVACLASS
,您必须在模式中包含(
)
,例如:\(%{JAVACLASS:class}\
。
第二
date
过滤器 match
有两个值,第一个是您要解析的 field
,因此在您的示例中它是 time
,而不是 timestamp
.第二个值是日期模式。可以参考here
这是配置
input {
stdin {
}
}
filter {
grok {
match => [ "message", " - %{TIMESTAMP_ISO8601:time} \[%{WORD:main}\] %{LOGLEVEL:loglevel} \(%{JAVACLASS:class}\) %{GREEDYDATA:mydata}"
]
}
date {
match => [ "time" , "YYYY-MM-dd HH:mm:ss,SSS" ]
}
}
output
{
stdout {
codec => rubydebug
}
}
仅供参考。希望这可以帮到你。