ELK 5.6.5无法使用Curator 3.4.1删除日志求解决方案
解决Curator与Elasticsearch 5.6.5不兼容的问题
这问题我之前帮人排查过,核心原因很明确:你用的Curator 3.4.1只支持Elasticsearch 1.x到2.x版本,而你的ES是5.6.5,版本完全不匹配,所以才会抛出那个版本范围错误。下面给你两种可行的解决思路:
方案一:升级Curator到兼容版本(推荐)
Curator 5.x系列是官方专门为Elasticsearch 5.x打造的适配版本,步骤如下:
1. 先卸载旧版Curator
sudo apt-get remove --purge elasticsearch-curator sudo apt-get autoremove
2. 添加Curator官方源(Debian/Ubuntu系统)
创建源配置文件:
echo "deb [arch=amd64] https://packages.elastic.co/curator/5/debian stable main" | sudo tee /etc/apt/sources.list.d/curator.list
导入官方GPG密钥验证包合法性:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
3. 安装Curator 5.x
更新源后安装:
sudo apt-get update sudo apt-get install elasticsearch-curator
安装完成后用curator --version确认版本,应该是5.x系列(比如5.8.1,是5.x分支的最后一个稳定版)。
4. 重新执行你的删除命令
原有命令在Curator 5.x下可以直接正常运行,不需要修改:
curator delete indices --older-than 14 --time-unit days --timestring %Y.%m.%d --regex '^logstash-'
方案二:直接用Elasticsearch API删除旧索引(无需升级Curator)
如果暂时不想折腾Curator升级,也可以通过ES的REST API直接操作,用curl就能搞定:
1. 先确认要删除的索引(避免误删)
先列出所有符合命名规则的logstash索引:
curl -XGET 'http://localhost:9200/_cat/indices/logstash-*?v&h=index' | grep -E 'logstash-[0-9]{4}\.[0-9]{2}\.[0-9]{2}'
2. 删除14天前的索引
用bash的日期计算生成目标日期,然后删除对应索引:
# 计算14天前的日期,格式和你的索引命名一致(YYYY.MM.DD) OLD_DATE=$(date -d "-14 days" +%Y.%m.%d) # 删除所有早于该日期的logstash索引 curl -XDELETE "http://localhost:9200/logstash-*$OLD_DATE*"
如果你的ES开启了账号密码验证,记得在curl命令里加上-u 用户名:密码参数。
内容的提问来源于stack exchange,提问作者Mohammad Ramadan Abdel-Hafiez
相关产品推荐
相关产品推荐

