【踩坑】ELK6.0已取消filebeat配置document_type
阿新 • • 發佈:2018-03-28
document_type elk logstash filebeat 一、起因
?在使用ELK5.5的時候,如果遇到需要在同一臺機器上收集不同類型的日誌,比如:同時收集一臺機器上的java log和nginx log!而又需要分別存儲到不同索引的時候,我們會在filebeat的prospectors裏面配置document_type類型,然後在logstash裏面使用if [type] == "string" 來匹配,針對不同的判斷做不同的處理。
?6.0以前filebeat部分配置如下:
- input_type: log paths: - /opt/tengine/logs/access.log document_type: nginx-log json.keys_under_root: true ignore_older: 24h - input_type: log paths: - /opt/java/logs/java.log document_type: java-log json.keys_under_root: true ignore_older: 24h
?6.0以前logstash部分配置如下:
output { if [type] == "nginx-log" { elasticsearch { hosts => ["172.18.238.2:9200","172.18.238.3:9200","172.18.238.4:9200"] index => "%{type}-%{+YYYY.MM.dd}" } } else if [type] == "java-log" { elasticsearch { hosts => ["172.18.238.2:9200","172.18.238.3:9200","172.18.238.4:9200"] index => "%{type}-%{+YYYY.MM.dd}" } } }
二、踩坑
?在使用了6.2.3版本的ELK以後,使用如上配置,if [type]匹配不到在filebeat裏面使用document_type定義的字符串。在多次調試和詢問後,發現在6.0版本以上已經取消了document_type的定義。如果要實現以上的配置只能使用如下配置
三、解決方案
?解決方案為在filebeat裏面新增一個fields字段,service : GameStatis都是自己定義的,定義完成後使用Logstash的if 判斷,條件為if [fields][service] == "GameStatis".就可以了。
?filebeat配置:
?logstasht配置:
【踩坑】ELK6.0已取消filebeat配置document_type