【问题标题】:Logstash - Add fields from the log - GrokLogstash - 从日志中添加字段 - Grok
【发布时间】:2016-12-22 01:21:35
【问题描述】:

我正在学习 logstash,我正在使用 Kibana 查看日志。我想知道是否有使用 message 属性中的数据添加字段。

比如日志是这样的:

@timestamp:December 21st 2016, 21:39:12.444 port:47,144  
appid:%{[path]} host:172.18.0.5 levell:level message:
{"@timestamp":"2016-12-22T00:39:12.438+00:00","@version":1,"message":"Hello","logger_name":"com.empresa.miAlquiler.controllers.UserController","thread_name":"http-nio-7777-exec-1","level":"INFO","level_value":20000,
"HOSTNAME":"6f92ae402cb4","X-Span-Export":"false","X-B3-SpanId":"8f548829e9d18a8a","X-B3-TraceId":"8f548829e9d18a8a"} 

我的logstash conf是这样的:

filter {
grok {
match => {
  "message" =>
  "^%{TIMESTAMP_ISO8601:timestamp}\s+%{LOGLEVEL:level}\s+%{NUMBER:pid}\s+---\s+\[\s*%{USERNAME:thread}\s*\]\s+%{JAVAFILE:class}\s*:\s*%{DATA:themessage}(?:\n+(?<stacktrace>(?:.|\r|\n)+))?$"
}
}
 date {
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]
}
mutate {
remove_field => ["@version"]
add_field => {
  "appid" => "%{[path]}"
}
add_field => {
  "levell" => "level"
}

} }

我想获取级别(日志中为 INFO)和消息(日志中为 Hello)并将它们添加为字段。

有没有办法做到这一点?

【问题讨论】:

标签: elasticsearch logstash logstash-grok logstash-configuration


【解决方案1】:

如果你使用mutate 做这样的事情会怎样:

filter { 
  mutate { 
    add_field => ["newfield", "%{appid} %{levell}"] <-- this should concat both your appid and level to a new field
  } 
} 

你可以看看这个thread

【讨论】:

  • 感谢您的回答@Kulasangar! ,我训练做add_field =&gt; {"tipo" =&gt; "%{evel}"},但该字段明确显示:“%{level}”,插入值,例如“INFO”。
  • 你确定你的变异有效吗?我的意思是你在哪里得到 `level 值:add_field => { "levell" => "level" }
  • 我想是的,logstash conf 文件,看起来像:mutate { remove_field =&gt; ["@version"] add_field =&gt; {"level_type" =&gt; "%{levell}"} } 我不知道该怎么办。
  • 可能是该属性出现在日志中,但在“消息”字段中出现的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多