定制化删除ES索引数据

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 定制化删除ES索引数据

我们有一台ES服务器,设置了每天02:00执行一次清理索引数据的定时任务,但这两天总是出现磁盘空间抖动,一线一看见超了阈值,就打电话报警,可能整晚要被叫几次,ES作为日志平台的一部分,只是为了方便我们检索日志,不影响实际业务,这就比较烦了。

除了挂起报警,一种暴力的方法,就是再设置一些定时作业时间点,简单是简单,但弊端就是有可能到点儿了,空间还有,不需要删除,但仍执行了删除,可见的数据就少了,而且如果间隔时间设置不合理,很有可能还会超阈值。

今儿单位值班,就简单思考一下,既然报警是有阈值的,那么执行删除的操作,是不是可以参考执行?

以下实现采用了shell脚本,简单的方式,当然你用python,甚至重一些的java,都可以实现类似的功能,实现原理相同,实现方式不同,无伤大雅。我们一步一步拆解来看,如何实现这一个功能。

如下是执行df -h回显,
定制化删除ES索引数据

这里我要监控的是/opt/app路径,要做的判断就是如果此路径空间使用率超过90%,则执行删除ES索引数据的操作。

首先需要获取/opt/app的空间使用率,df -h中第四列,已经给出了使用率百分比,为了获取这个值,可以使用awk命令,来截取这个值。awk接收df -h的输出,作为输入,$4表示打印第四列(空格或者TAB隔开),

定制化删除ES索引数据

我其实只是需要/opt/app对应的信息,df -h指定/opt/app路径,

定制化删除ES索引数据

再进一步,我只需要百分比数据,只检索包含/opt/app这行,

定制化删除ES索引数据

这里是百分比,我需要数字进行阈值比较,因此需要删除%,用了sed做值替换,即将%换为空,

定制化删除ES索引数据

现在我们得到了当前使用率,要和阈值进行比较了,其中CURRENT是当前使用率,THRESHOLD是阈值,如果CURREN=THRESHOLD,则执行curl -XDELETE $URL操作,进行ES索引数据的清理工作,

定制化删除ES索引数据

可以将其中的变量,设为参数,便于统一管理,还可以log一些信息,

定制化删除ES索引数据

以上脚本加入crontab中,定时10分钟执行一次,就可以实现,根据磁盘空间阈值,来做索引数据删除的操作。一个比较简单的功能需求,涉及了awk、管道、sed这些常用的指令,用起来就可以慢慢理解了。

完整的shell脚本可以从GitHub上来下载,

https://github.com/bisal-liu/oracle/blob/master/crontab_es_del.sh

如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:bisal的个人杂货铺,您的支持是对我最大的鼓励!共同学习,共同进步:)

定制化删除ES索引数据 定制化删除ES索引数据
本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 定制化删除ES索引数据


 上一篇
MySQL的rpm和源码两种安装操作 MySQL的rpm和源码两种安装操作
相比于传统行业,互联网浪潮中MySQL一直是数据库的主力军,无论是曾经的SUN,还是现在的Oracle,虽然可能商业策略不同,但发展方向还是平稳向前的,因此说自己不会MySQL,还真有些不好意思了。 我只能算是MySQL中的小小白,研究生毕
下一篇 
一张几亿的分区表,能改名么? 一张几亿的分区表,能改名么?
要先恭喜北京女排,击败天津进军全运会四强,继续加油! 一个微信群中有位朋友问“一张几亿的分区表,能改名么?”。我想他要表达的,不是语法上是否可以改名,而是改名是否有什么影响? 是否有影响,需要看看背后做了什么。 创建测试表, creat