日志傳輸路徑如下:
filebeat->redis->logstash->es
在filebeat配置文件中,收集日志的時候配置的有如下參數:
fields:
log_source: messages
表示的是會把log_source作為fields的二級字段
若是配置如下,表示的是會把log_source作為頂級字段:
fields:
log_source: messages
fields_under_root: true
使用這個字段來作為區分不同應用日志的來源;
在logstash中從redis讀取后,output給es的時候,根據上述不同的字段來創建不同的應用日志索引。
常見的寫法是多使用if條件進行區分,如下所示:
if [fields][log_source] == 'test_custom' {
elasticsearch {
hosts => ["http://172.17.107.187:9203", "http://172.17.107.187:9201","http://172.17.107.187:9202"]
index => "filebeat_test_custom-%{+YYYY.MM.dd}"
user => "elastic"
password => "escluter123456"
}
}
if [fields][log_source] == "test_user" {
elasticsearch {
hosts => ["http://172.17.107.187:9203","http://172.17.107.187:9201","http://172.17.107.187:9202"]
index => "filebeat_test_user-%{+YYYY.MM.dd}"
user => "elastic"
password => "escluter123456"
}
}
這樣寫也能使用,但是考慮到假設這個區分字段比較多的話,那這得寫多少個if條件呀,所以可以使用如下的用法:
在創建索引的時候使用上這個區分用的字段,具體如下:
elasticsearch {
hosts => ["http://172.17.107.187:9203","http://172.17.107.187:9201","http://172.17.107.187:9202"]
index => "filebeat_%{[fields][log_source]}-%{+YYYY.MM.dd}"
user => "elastic"
password => "escluter123456"
}
說明:%{[fields][log_source]}
表示的是獲取區分字段的值
若是頂級字段則是這樣的用法:%{[log_source]}