一、缘由:
ELK中,如果是你使用Logstash做日志收集Agent,那么默认索引为logstash-;如果你使用Filebeat做日志收集Agent,那么默认索引为filebeat- 。
默认的索引,不利于我们区分不同的应用日志,所以要自定义索引和应用一一对应,这样才能更清晰快速的检索日志。
环境:Ubuntu18 + ELK 7.1.0 + Docker, 采用 Filebeat –> Logstash –> Elasticsearch –> Kibana
二、架构分析:
目前知道的架构方式有三种:
- Logstash –> Elasticsearch –> Kibana 弃用
- Filebeat –> Elasticsearch –> Kibana 简单需求使用
- Filebeat –> Logstash –> Elasticsearch –> Kibana 复杂需求使用
由于Filebeat和Logstash相比,更轻量更节省资源,对采集日志的机器负担最小,Agent目前普遍才用Filebeat(Beat等)。
故以上第一种架构方式基本被舍弃,如果应用少、采集日志需求简单,直接使用第二种方式;如果应用日志多、需求复杂,则要使用第三种方式。
三、解决办法:
不同的架构方式,自定义配置索引的方式不同。
1、Filebeat output 到ES(待验证):
修改filebeat.yml配置文件
# 配置输入
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/wwwlogs/access.log
json.keys_under_root: true
json.add_error_key: true
fields:
source: 'nginx-access'
- type: log
enabled: true
paths:
- /home/wwwlogs/kibana.log
json.keys_under_root: true
json.add_error_key: true
fields:
source: 'kibana-access'
# 配置输出
output.elasticsearch:
hosts: ["192.168.0.4:9200"]
indices:
- index: "%{[fields.source]}-%{+yyyy.MM.dd}"
when.contains:
fields.source: "nginx-access"
- index: "%{[fields.source]}-%{+yyyy.MM.dd}"
when.contains:
fields.source: "kibana-access"
主要是在input那里配置自定义字段fields.source,然后再output es那里使用indices+when,即实现自定义索引。
2、Filebeat output 到Logstash(已验证):
这一个需要filebeat和logstash的配合,索引的自定义在logstash的output完成。
1)修改filebet的配置
vim filebeat.yml
# 配置输入
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/logs/ca/ca.log
fields:
type: "ca"
- type: log
enabled: true
paths:
- /data/logs/ws-fund/ws-fund.log
fields:
type: "ws-fund"
# 配置输出
output.logstash:
hosts: ["192.168.0.4:5044"]
2) 修改logstash配置
vim logstash.conf
# 配置输入
input {
beats {
port => 5044
}
}
# 配置输出
output {
if [fields][type] == "ws-fund"{
elasticsearch {
hosts => ["http://es01:9200"]
index => "ws-fund-%{+YYYY.MM.dd}"
}
}else if [fields][type] == "ca"{
elasticsearch {
hosts => ["http://es01:9200"]
index => "ca-%{+YYYY.MM.dd}"
}
}else {
elasticsearch {
hosts => ["http://es01:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com