ELK 常见错误
filebeat 上传数据到 elasticsearch 问题汇总
filebeat 上传数据到 elasticsearch 报错
适用版本信息说明
- filebeat 7
- elasticsearch 7
filebeat 7.5.2 上传数据到 Elasticsearch 报错:
journalctl -f -u filebeat |
此错误原因是由于 Elasticsearch 的集群中打开的分片数量超过了集群的最大分片限制。在 Elasticsearch 中,每个索引由多个分片组成,而集群有一个设置的最大分片数限制。这个限制是为了防止分片数过多导致性能问题。
错误消息 {"type":"illegal_argument_exception","reason":"Validation Failed: 1: this action would add [2] total shards, but this cluster currently has [6924]/[3000] maximum shards open;"}
显示当前集群已有 6924 个分片,超过了 3000 个的限制。
要解决这个问题,可以考虑以下几个选项:
调整 Elasticsearch 集群设置,增加最大分片数限制
可以通过更改 Elasticsearch 配置来增加最大分片数的限制。但请注意,这可能会导致性能问题,尤其是如果硬件资源有限的话。
这可以通过修改
cluster.max_shards_per_node
设置来实现PUT /_cluster/settings
{
"persistent": {
"cluster.max_shards_per_node": "新的分片数限制"
}
}获取 Elasticsearch 集群的最大分片数限制
curl -X GET "http://[your_elasticsearch_host]:9200/_cluster/settings?include_defaults=true&pretty"
删除一些不必要的索引 :如果有些索引不再需要,可以删除它们来减少分片数。
curl -X DELETE "localhost:9200/my_index"
curl -X DELETE "localhost:9200/logstash-2021.11.*"合并一些小索引:如果有很多小的索引,可以考虑将它们合并为更大的索引,以减少总分片数。
优化现有索引的分片策略:可以优化索引的分片数量,例如,通过减少每个索引的主分片数量。
filebeat 错误
filebeat 配置上传数据到 elasticsearch 报错
适用版本信息说明
- filebeat 7
- elasticsearch 7
使用以下 filebeat 配置文件
filebeat.inputs: |
filebeat 启动后报错,elasticsearch 上未创建相应的索引,关键错误信息 Failed to connect to backoff(elasticsearch(http://1.57.115.214:9200)): Connection marked as failed because the onConnect callback failed: resource 'filebeat-7.5.2' exists, but it is not an alias
journalctl -f -u filebeat |
这表明 Filebeat 无法正常连接到 Elasticsearch 集群。出现这个问题的主要原因可能为:
索引/别名冲突: Filebeat 试图创建或使用一个名为
filebeat-7.5.2
的索引或别名,但这个资源在 Elasticsearch 中已存在且不是一个别名。解决方法为 删除或重命名冲突索引ILM 配置问题
使用此配置文件,解决 索引/别名冲突 问题后,filebeat 运行正常,但是 Elasticsearch 上未创建配置中的索引
logstash-admin-*
,而是将数据上传到了索引filebeat-7.5.2-*
。这个问题是由ILM
导致,可以禁用ILM
。参考以下配置,禁用ILM
(setup.ilm.enabled: false
)/etc/filebeat/filebeat.yml filebeat.inputs:
- type: log
paths:
- /home/logs/laravel-2023*
tags: ["admin-log"]
close_timeout: 3h
clean_inactive: 72h
ignore_older: 70h
close_inactive: 5m
output.elasticsearch:
hosts: ["1.56.219.122:9200", "1.57.115.214:9200", "1.52.53.31:9200"]
username: "elastic"
password: "passwd"
index: "logstash-admin-%{+yyyy.MM.dd}"
setup.ilm.enabled: false
setup.template.enabled: true
setup.template.name: "logstash-admin"
setup.template.pattern: "logstash-admin-*"