设置参数 `node.name` 可以自定义 Elasticsearch 节点的名字。 此条 Tips 由 medcl 贡献。

logstash获取filebeat中添加的fields字段

Logstash | 作者 maoyikun | 发布于2018年01月23日 | 阅读数:26413

    如题,我使用filebeat同时在一台服务器上面收集多个应用的日志,配置文件片段如下:
 #ui日志
- paths:
- /tomcat日志路径/catalina.out
fields:
#定义日志来源,添加了自定义字段
log_source: bbc-ui

#passport日志
- paths:
- /tomcat日志路径/catalina.out
fields:
#定义日志来源,添加了自定义字段
log_source: bbc-passport
......
    现在我把收集到的日志都发送到logstash,我想根据我定义的log_source这个字段来判断日志是来自哪一个应用的,然后再定义不同的索引发送到es里面。
 
    请问在logstash的conf配置文件中我要如何才能获取到log_source这个字段以及它的值呢?
 
    logstash,filebeat,kibana使用的版本都是5.0.0
    
    求大神们解救。谢谢。
已邀请:

medcl - 今晚打老虎。

赞同来自: luohuanfeng

先配置一个 console 的 output,看看 message 的结构。

ziyou - 一个学习ELK的Java程序员

赞同来自: yoling1985

fields_under_root: true
fields: 
    type: filebeat
 
想要像document_type这样使用字段,需要添加配置fields_under_root。

luohuanfeng

赞同来自:

[fields][log_source]

浅扉浅蓝

赞同来自:

同样是这样的问题,我是在filebeat里面添加document_type字段,然后在logstash里面通过判断type来输出到不同的es索引中,不知道为什么就是 不行

企业微信截图_4505296a-8eb5-41dc-9f76-da90975efe42.png


111111.png

 

maoyikun - 90后IT民工

赞同来自:

已经解决了这个问题,在filebeat中添加fields字段之后再logstash中是用
%{[fields][添加的字段名]}
就可以获取到添加的字段的值了

yoling1985

赞同来自:

if [fields][log_source]=="web_ui" {
 
             index => "agent-%{[fields][web_ui]-%{+YYYY.MM.dd}
}"
}
 
这样?

yaogang732

赞同来自:

6.x不好用啊。。 求私聊

要回复问题请先登录注册