定制化删除ES索引数据

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

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


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


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


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


如下是执行df -h回显,

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


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



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



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



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



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



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



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


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

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


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


目录
相关文章
|
4月前
|
网络架构
ES6中数组新增了哪些扩展?
ES6中数组新增了哪些扩展?
42 1
|
6月前
|
应用服务中间件 Linux 索引
42分布式电商项目 - 修改索引库名称
42分布式电商项目 - 修改索引库名称
41 0
|
6月前
|
索引
如何在已创建的 es 索引中增加分片
如何在已创建的 es 索引中增加分片
72 0
|
8月前
|
网络架构
ES6中数组新增了哪些扩展?
ES6通过扩展元素符…,好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列
|
9月前
|
数据采集 PHP 数据格式
php清洗数据实战案例(3):关联数组键值筛选排除创建新的数组
php清洗数据实战案例(3):关联数组键值筛选排除创建新的数组
37 0
|
10月前
【ES6】字符串新增拓展
【ES6】字符串新增拓展
51 0
|
10月前
|
JavaScript 前端开发 索引
【ES6】数组新增拓展
【ES6】数组新增拓展
60 0
|
10月前
|
存储 移动开发
H5新增的存储方案
H5新增的存储方案
49 0
|
11月前
|
测试技术 索引
ES数据删除优化
分享一下ES数据删除优化的相关经历,根据业务需要一共优化了3次,包含了其中踩到的坑和一些花时间解决的问题.
810 0
|
存储 固态存储 数据挖掘
ES索引规划方案
《ES索引规划方案》是研发部门针对审计系统需求,对海量日志数据进行实时存储和查询的解决方案,经过不断完善整理成册,以供后续相关开发人员学习使用
215 0
ES索引规划方案