我正在尝试按照json
格式化的某些Elasticsearch
,因此我直接从Filebeat
转到Elasticsearch,而不是通过Logstash
。这是使用docker-compose
:
version: '2.2'
services:
elasticsearch:
container_name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node
- cluster.name=docker-
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
networks:
- esnet
filebeat:
container_name: filebeat
build:
context: .
dockerfile: filebeat.Dockerfile
volumes:
- ./logs:/var/log
- ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
networks:
- esnet
elastichq:
container_name: elastichq
image: elastichq/elasticsearch-hq
ports:
- 8080:5000
environment:
- HQ_DEFAULT_URL=http://elasticsearch:9200
- HQ_ENABLE_SSL=False
- HQ_DEBUG=FALSE
networks:
- esnet
networks:
esnet:
但是,当我打开ElasticHQ
时,索引名称已标记为filebeat-7.5.2-2020.02.10-000001
,并带有日期戳。我在index
中将Sample
名称指定为filebeat.yml
。我缺少什么,还是这种行为正常吗?
这里是我的filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.json
json.keys_under_root: true
json.add_error_key: true
#----------------------------- Elasticsearch output --------------------------------
output.elasticsearch:
hosts: ["elasticsearch:9200"]
index: "sample-%{+YYYY.MM.dd}"
setup.template.name: "sample"
setup.template.pattern: "sample-*"
知道预定义的内容会更实际,因此,如果我使用Postman而不是ElasticHQ,则可以开始查询数据,而不必寻找index
名称。
我认为Filebeat ILM可能取代了已配置的索引名称。
[从7.0版开始,Filebeat通过以下方式使用索引生命周期管理:连接到支持生命周期的群集时的默认设置管理。 Filebeat会自动加载默认策略,并且将其应用于Filebeat创建的任何索引。
并且当启用ilm时,将忽略Filebeat Elasticsearch output索引设置
当索引生命周期管理为已启用。如果您要将事件发送到支持索引的群集生命周期管理,请参阅将索引生命周期管理配置为了解如何更改索引名称。
您可能需要禁用ILM或更好,但使用ILM rollover_alias配置所需的文件名。