Crontab命令定时执行shell脚本删除ES索引
这里实现描述一个crontab的实际应用的例子:如何定时删除es集群的索引?
一、准备工作:
1、找一个linux服务器,确保上面安装了Crontab,以及会使用crontab命令,如何安装和使用请看我的另一篇文章:
http://www.cnblogs.com/wynjauu/articles/9370948.html
2、elasticsearch的curator知识请看另一篇文章:
http://www.cnblogs.com/wynjauu/articles/9372659.html
http://www.elastic.co/guide/en/elasticsearch/client/curator/5.5/filtertype_age.html
https://www.jianshu.com/p/7975fa063d99
二、实现
我用的是5.5.2版本的es集群,首先在/opt/software/curator/shell/es5目录下面制作了一个.sh文件,里面是要执行的脚本。
脚本的具体内容是:
#!/bin/bash #curator_cli --host 10.37.149.88 --port 9600 --timeout 150 --logfile /opt/software/curator/logs/show_indices_appserver.log show_indices --filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":1},{"filtertype":"pattern","kind":"prefix","value":"dsa"},{"filtertype":"pattern","kind":"regex","value":"dsa-webserver-201[6,7]-0[4,6,7]-0[4,5,7,8]-*","exclude": "True"}]' echo "---------------------------------start-delete-indices--------------------------------------------" curator_cli --host 10.x.x.171 --port 9600 --timeout 150 --logfile /opt/software/curator/logs/delete_indices_es5bpm.log delete_indices --filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"weeks","unit_count":8},{"filtertype":"pattern","kind":"prefix","value":"ctbpm"}]'
简单说明一下:在10.x.x.171需要删除以ctbpm开头的距离当前时间8周外的索引(即保存8周的索引),执行的日志打印在:
/opt/software/curator/logs/delete_indices_es5bpm.log
然后:通过# crontab -e命令,再使用在Esc+i(vi编译的命令)添加定时执行的记录:
*/5 * * * * /opt/software/curator/shell/es5/delete_indices_es5bpm.sh
这里我是测试而已,用的是每五分钟执行一次。也可以执行./delete_indices_estbpm.sh立即执行,注意在执行./delete_indices_estbpm.sh命令是
要是提示linux perminssion denied 权限问题时,执行:chmod 777 delete_indices_estbpm.sh可配置权限。
然后可以通过head插件查看es的索引可以被定时删除了。
三、其他实例
网上另一个博客也是es+crontab+linux做定时的运用:https://www.cnblogs.com/java-zhao/p/5900590.html
本文版权归作者所有,欢迎转载,请在文章页面明显位置给出原文连接:https://www.cnblogs.com/wynjauu/articles/9372621.html