定时删除elasticsearch索引
从去年搭建了日志系统后,就没有去管它了,最近发现大半年各种日志的index也蛮多的,就想着写个脚本定时清理一下,把一些太久的日志清理掉。
脚本思路:通过获取index的尾部时间与我们设定的过期时间进行对比,如果是属于过期时间那么就进行删除,并写入日志。如果不是则不进行处理。
完整的脚本:(今天准备写个,翻下笔记发现去年就已经写好了)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #!/bin/bash ###################################################### # $Name: clean_amazon_index.sh # $Version: v1.0 # $Function: clean amazon log index # $Author: djx # $Create Date: 2017-10-18 # $Description: shell ###################################################### #本文未加文件锁,需要的可以加 #脚本的日志文件路径 CLEAN_LOG= "/var/log/clean_amazon_index.log" #索引前缀 INDEX_PRFIX= "amazon-mysql-log" #elasticsearch 的主机ip及端口 SERVER_PORT=192.168.1.123:9200 #取出已有的索引信息 INDEXS=$(curl -s "${SERVER_PORT}/_cat/indices?v" | grep "${INDEX_PRFIX}" | awk '{print $3}' ) #删除多少天以前的日志,假设输入10,意味着10天前的日志都将会被删除 DELTIME=10 # seconds since 1970-01-01 00:00:00 seconds SECONDS=$( date -d "$(date +%F) -${DELTIME} days" +%s) #判断日志文件是否存在,不存在需要创建。 if [ ! -f "${CLEAN_LOG}" ] then touch "${CLEAN_LOG}" fi #删除指定日期索引 echo "----------------------------clean time is $(date +%Y-%m-%d_%H:%M:%S) ------------------------------" >>${CLEAN_LOG} for del_index in ${INDEXS} do indexDate=$( echo ${del_index} | cut -d "-" -f 4,5,6 ) #根据索引的名称的长度进行切割,不同长度的索引在这里需要进行对应的修改 indexSecond=$( date -d ${indexDate} +%s ) if [ $(( $SECONDS- $indexSecond )) -gt 0 ] then echo "${del_index}" >>${CLEAN_LOG} #取出删除索引的返回结果 delResult=`curl -s -XDELETE "${SERVER_PORT}/" ${del_index} "?pretty" | sed -n '2p' ` #写入日志 echo "clean time is $(date)" >>${CLEAN_LOG} echo "delResult is ${delResult}" >>${CLEAN_LOG} fi done |
然后将脚本添加到定时任务定期执行即可(crontab)。
作者:理想三旬
本人承接各种项目维护和python项目开发, 如果觉得文章写得不错,或者帮助到您了,请点个赞,加个关注哦。运维学习交流群:544692191
本文版权归作者所有,欢迎转载,如果文章有写的不足的地方,或者是写得错误的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧