一、简介
在使用Filebeat采集日志并输出到Elasticsearch时,自动创建索引模板主要包括以下重要配置:
关闭ILM(Index Lifecycle Management):新版本的Filebeat默认开启了ILM,这可能导致索引的命名规则被ILM策略控制。为了自定义索引模板,需要关闭ILM。
setup.ilm.enabled: false
定义索引模板:通过setup.template相关的配置,可以自定义索引模板的名称、模式和设置。
setup.template.name: "my_custom_template"
setup.template.pattern: "my_custom_index-*"
设置索引模板的详细配置:在template部分,可以定义索引的详细设置,如分片数量、副本数量、编码方式等。
template:
settings:
index:
number_of_shards: 1
number_of_replicas: 0
codec: lz4
配置输出到Elasticsearch:在output.elasticsearch部分,指定Elasticsearch的主机地址和索引名称。
output.elasticsearch:
hosts: ["localhost:9200"]
index: "my_custom_index-%{+yyyy.MM.dd}"
二、写入到ES集群
1.单个数据源写入到ES集群同一个索引
cat >01-docker-to-es.yaml<<'EOF'
filebeat.inputs:
#docker日志文件采集
- type: container
paths:
- '/var/lib/docker/containers/*/*.log'
tags: ["docker-log-json"]
#将所有JSON字段放在根级别
json.keys_under_root: true
#将错误消息记录到error字段中
json.add_error_key: true
#如果有重复字段,则覆盖它们
json.overwrite_keys: true
#指定输出端为ES集群
output.elasticsearch:
hosts: ["http://192.168.77.176:9200","http://192.168.77.177:9200","http://192.168.77.178:9200"]
#指定索引
index: "docker-log-json-%{+yyyy.MM.dd}"
#禁用索引声明管理周期ILM
setup.ilm.enabled: false
#指定索引模板的名称
setup.template.name: "docker-log-json"
#指定索引模板的匹配模式
setup.template.pattern: "docker-log-json-*"
#覆盖原有的索引模板
setup.template.overwrite: true
#索引模板详细配置
setup.template.settings:
#指定分片数量为5
index.number_of_shards: 5
#指定副本数量为2
index.number_of_replicas: 2
EOF
2.多个数据源根据标签tag写入到ES集群不同索引中
cat >02-system-docker-log-to-es.yaml<<'EOF'
filebeat.inputs:
- type: filestream
paths:
- /var/log/messages*
- /var/log/*/*.log
tags: ["system"]
- type: container
paths:
- '/var/lib/docker/containers/*/*.log'
json.keys_under_root: true
json.add_error_key: true
json.message_key: log
tags: ["docker"]
output.elasticsearch:
hosts: ["http://192.168.77.176:9200","http://192.168.77.177:9200","http://192.168.77.178:9200"]
indices:
- index: "alibaby-app-log-system-%{+yyyy.MM.dd}"
when.contains:
tags: "system"
- index: "alibaby-app-log-docker-%{+yyyy.MM.dd}"
when.contains:
tags: "docker"
setup.ilm.enabled: false
setup.template.name: "alibaby-app-log"
setup.template.pattern: "alibaby-app-log-*"
setup.template.overwrite: true
setup.template.settings:
index.number_of_shards: 5
index.number_of_replicas: 2
EOF
三、创建索引模式 数据查看