定时任务自动清理 ElasticSearch 中的 index

如果所有日志都将收集到 ES,容量增速较快,并且历史日志也不太会关注,为节省容量成本,需要定期清理 ES 的 index 历史数据。通过 crontab 定时任务来处理。

  1. 创建名为auto_clear_es_index.sh的shell脚本,内容如下:
#!/bin/bash
# Maintainer: KoalaWang <koala.wangyang@qq.com>
# Usage: auto clear index of ElasticSearch to reduce disk size!

# ES的账户密码
USER='elastic'
PASS='****'
ES_URL='http://es-external-svc:9200/'
# 使用内网 ES 地址

#指定日期(3个月前),使用不同的日期格式
DATE1=`date -d "3 month ago" +%Y.%m.%d`
DATE2=`date -d "3 month ago" +%Y%m%d`

#当前日期
CURRENT_TTIME=`date +%Y.%m.%d--%T`

# 查询 Index
# curl --basic -u ${USER}:${PASS} ${ES_URL}_cat/indices?v

#删除x天前的Index,时间格式为第一种
curl --basic -u ${USER}:${PASS} -XDELETE ${ES_URL}*-${DATE1}
if [ $? -eq 0 ];then
    echo "-->${CURRENT_TTIME} Clear index success.." >> /var/log/clear-es-index.log
else
    echo "-->${CURRENT_TTIME} Clear index failed.." >> /var/log/clear-es-index.log
fi

#删除x天前的Index,时间格式为第二种
curl --basic -u ${USER}:${PASS} -XDELETE ${ES_URL}*-${DATE2}
if [ $? -eq 0 ];then
    echo "--> ${CURRENT_TTIME} Clear index success.. <--" >> /var/log/clear-es-index.log
else
    echo "--> ${CURRENT_TTIME} Clear index failed.. <--" >> /var/log/clear-es-index.log
fi
  1. 创建如下的定时任务,每10个小时清理一次(偶尔会出现清理失败的情况,再执行一次脚本即可,所以设定 10小时,每天最少执行 2 次)。
    0 */10 * * * sh /root/crontab/auto_clear_es_index.sh
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容