elasticsearch-数据自动删除

最近我使用elasticsearch作为日志的存储分析引擎。用来存储团队开发人员的日志。使用es的过程中,索引越来越多,没有及时删除,就导致集群某台实例oom了。


解决办法:

编写一个shell脚本,然后使用linux的crontab,每天0点执行下。


1.寻找索引的规律

我们的日志索引格式如下:

以logstach开头,以年.月.日结尾

于是,我就想到使用正则匹配,即 logstash-*-12.15.11。


2.编写shell脚本

#!/bin/bash
echo "start delete es data"
echo `date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
dateStr=`date -d -32day +%Y.%m.%d`
echo delete time is ${dateStr}
#`curl -XDELETE 'http://10.240.47.81:9200/logstash-v4_insert_log-"${dateStr}'`
echo curl -XDELETE 'http://10.240.47.81:9200/logstash-*-'${dateStr}
result=`curl -XDELETE 'http://10.240.47.81:9200/logstash-*-'${dateStr}`
sleep 3
echo delete result ${result}


3.添加linux crontab

vim /etc/crontab

然后在最后加一行

0 0 * * * root sh /data/apps/es/cleanupesdata/cleanup.sh >> /data/apps/es/cleanupesdata/clean.log 


4.总结

类似shell,crontab这些知识,es的知识,我们可以不是很精通,但是遇到的时候,最好能写一次。因为,我们不写,没有人能替我们写,除非这个事情有团队帮忙做。带团队不容易,一些小的细节要认真处理。解决一个坑算一个。


补充:

昨天验证了下,脚本是没问题的。为了确保最终的准确性,今天再次验证。没问题。


脚本运行日志:

start delete es data

2018-01-26 00:00:01

delete time is 2017.12.25

curl -XDELETE 10.240.47.81:9200/logst

delete result {"acknowledged":true}


es数据确实删除了。这样就能保证我们的es日志集群不至于爆掉。阿弥陀佛。

请使用浏览器的分享功能分享到微信等