热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell实现按日期删除elk系统产生的logstash日志索引数据

分享一个简单的按日期删除elk系统产生的logstash日志索引数据的shell脚本,直接上代码:#binbash#author:johnli#createdat2017

分享一个简单的按日期删除elk系统产生的logstash日志索引数据的shell脚本,直接上代码:

#/bin/bash
#author: john li
#created at 2017/9/15 16:00

if test ! -f "/var/log/elkDailyDel.log" ;then
touch /var/log/elkDailyDel.log
fi
#请将该行当中的localhost:9200改成你自己elasticsearch服务对应的Ip及端口
indices=$(curl -s "localhost:9200/_cat/indices?v"|grep 'logstash'|awk '{print $3}')
#可将60改成你所需要的时间段,改成40则保留最近40天的日志数据,以此类推
sixtyDaysAgo=$(date -d "$(date "+%Y%m%d") -60 days" "+%s")
function DelOrNot(){
if [ $(($1-$2)) -ge 0 ] ;then
echo 1
else
echo 0
fi
}
for index in ${indices}
do
indexDate=`echo ${index}|cut -d '-' -f 2|sed 's/\./-/g'`
indexTime=`date -d "${indexDate}" "+%s"`
if [ `DelOrNot ${indexTime} ${sixtyDaysAgo}` -eq 0 ] ;then
#请将下行当中的localhost:9200改成你自己elasticsearch服务对应的Ip及端口
delResult=`curl -s -XDELETE "localhost:9200/${index}"`
echo "delResult is ${delResult}" >> /var/log/elkDailyDel.log
if [ `echo ${delResult}|grep 'acknowledged'|wc -l` -eq 1 ] ;then
echo "${index} had already been deleted!" >> /var/log/elkDailyDel.log
else
echo "there is something wrong happend when deleted ${index}" >> /var/log/elkDailyDel.log
fi
fi
done

在上面的shell脚本当中,首先会检测是否存在/var/log/elkDailyDel.log文件,没有的话会创建该文件。接着利用curl命令调用elasticsearch的restful api获取全部以logstash开头的索引名。此时定义了一个函数判断是否应该删除,思路是通过date命令获取60天前的时钟秒数,然后解析logstash-xxxx.xx.xx索引名后面的日期字符串将其转换成对应的时钟秒数,然后将两个时钟秒数相减判断该索引是不是60天之前产生的。如果是就调用elasticsearch的delete api将该索引删除。调用结果会打印到/var/log/elkDailyDel.log中
基本思路就是这样,配合linux的crontab命令每日定时执行,就可以实现elk系统只保留最近的60天日志数据的功能,假设该脚本名称为dailyDel.sh,放置于/usr/bin/目录下。对应linux命令如下:

chmod 744 /usr/bin/dailyDel.sh #确保该sh具有执行权限
crontab -e #进入任务编辑页面,跟vi编辑器是一样
0 0 * * * /usr/bin/dailyDel.sh #在编辑页面里面输入该行后按 :wq保存退出即可

此时就全部设置完成了,这个shell就会每天的00:00:00执行一次,被删除的索引可以在/var/log/elkDailyDel.log里面看到对应的记录,也可以查看/var/log/cron看定期任务的执行情况。


推荐阅读
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Crontab 是 Linux 系统中用于设置定时任务的强大工具。为了高效地管理和使用 Crontab,首先需要编写相应的 Shell 脚本来定义具体的任务逻辑。此外,还需要对 Crontab 进行适当的配置,以确保任务能够按时准确地执行。本文将详细介绍如何编写和管理 Crontab 定时任务,包括常见的配置选项和最佳实践,帮助用户提高任务调度的效率和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 如何在Linux系统中利用crontab定时执行Shell脚本任务?
    在Linux系统中,如何实现定时执行任务脚本?在服务器日常运维过程中,经常需要定期执行某些任务,例如数据库备份、日志文件切割等。通过使用crontab工具,可以轻松配置这些周期性任务,确保它们按时自动运行,提高系统管理效率和可靠性。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
author-avatar
lqk
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有