ELK stack技術篇之filebeat如何對應多個redis key鍵

ELK stack技術篇之filebeat如何對應多個redis key鍵

背鍋俠的我又來了,今天繼續ELK技術篇我們來談談標題的這個問題,相信很多人都遇到過並且現在ELK stack已經是6.0 版本了他跟5.0版本的支持方式還是有差別的呦

我們之前使用filebeat過程中可能一臺機器上只有一個日誌需要收集,此時我們的filebeat只需要收集這一個日誌,那麼redis中存儲的就一個key值.如果我們有多個日誌呢?redis如何使用多個key呢?下面我們就來看看吧

註釋: 我們主要是根據log的字段以及類型來實現多個鍵值,filebeat還提供了when.contains,條件判斷這裡我們先不談有疑問的同學可以在下方留言,如果你需要更多的條件判斷

接下來我們就來談談filebeat中的redis.output中的keys字段,這裡我們先講新版本的filebeat6.X是如何實現的

判斷依據:主要是根據log類型在6.X版本中我們使用fields字段來指定不同的log類型下面先上一個截圖

ELK stack技術篇之filebeat如何對應多個redis key鍵

新增一個fields字段,service : tomcat_gateway都是自己定義的,定義完成後使用Logstash的if 判斷,條件為if [fields][service] == "tomcat_gateway"即可,那麼如何指定到多個redis key呢?

廢話不多說,直接上代碼

filebeat截圖配置:

output.redis:
hosts: ["localhost"]
key: "default_list"
keys:
- key: "info_list" # send to info_list if `message` field contains INFO
when.contains:
message: "INFO"
- key: "debug_list" # send to debug_list if `message` field contains DEBUG
when.contains:
message: "DEBUG"
- key: "%{[fields.service]}"
mappings:
tomcat_gateway: "你的redis自定義key"

logstash 截圖配置

ELK stack技術篇之filebeat如何對應多個redis key鍵

看到了麼只需要一個mappings就可以實現嘍!

那麼在5.X版本中呢,你們應該知道了我們使用的是document_type字段那麼這個字段怎麼對應多個redis key鍵呢?

還是那句話直接上代碼:

logstash配置:

output {
stdout { codec => rubydebug }
if ( [type] == "message-sms" ) {
elasticsearch {
index => "message-sms-%{+YYYY-MM-dd}"
hosts => ["172.31.225.217:9200"]
user => elastic
password => "xxxxxxxx"
}
}
if ( [type] == "message-center" ) {
elasticsearch {
index => "message-center-%{+YYYY-MM-dd}"
hosts => ["172.31.225.217:9200"]
user => elastic
password => "xxxxxxxxxx"
}
}
}

filebeat配置

output.redis:
hosts: ["localhost"]
key: "default_list"
keys:
- key: "info_list" # send to info_list if `message` field contains INFO
when.contains:
message: "INFO"
- key: "debug_list" # send to debug_list if `message` field contains DEBUG
when.contains:
message: "DEBUG"
- key: "%{[type]}"

mapping:
"tomcat_gateway": "你的redis key名稱"


分享到:


相關文章: