ELK日志系统通过系统crontab命令设置定期删除日志索引

导读:本篇文章讲解 ELK日志系统通过系统crontab命令设置定期删除日志索引,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1、需求

  在前面部署的ELKB日志系统,在实际应用过程中,每天都会产生大量的日志信息,尤其是在开发环境,由于日志级别比较低,每天都会产生大量的日志。为了避免ELK系统过度消耗磁盘和内存,需要考虑定期删除Elasticsearch中的相关日志索引。这里通过Linux系统的crontab命令,并结合Elasticsearch的api实现定期删除日志的目的。

2、编写删除日志索引的脚本

1>、编辑deleteEsData.sh文件

#!/bin/bash
#filename:deleteEsData.sh
today=`date +%Y.%m.%d`;
echo "今天是${today}"
# 获得要删除的日期
# 不指定参数时,默认删除3天前以tomcat-开头的数据(因为是凌晨删除,所以不含当天)
daynum=3
esday=`date -d '-'"${daynum}"' day' +%Y.%m.%d`;
echo "${daynum}天前是${esday}"
curl -XDELETE http://192.168.0.182:9200/tomcat-${esday}
echo "${today}执行完成,tomcat-${esday}文件已经被删除或不存在."

其中,“curl -XDELETE http://192.168.0.182:9200/tomcat-${esday}”是通过调用Elasticsearch的API实现删除指定日期的目的。需要注意的是,Elasticsearch的IP和端口号,同时需要注意索引的格式,我这里使用”tomcat-yyyy.mm.dd”的格式,如下所示:
在这里插入图片描述
2>、设置脚本权限

chmod 777 deleteEsData.sh

3>、通过执行脚本,验证是否正确。

[root@hostnode soft]# ./deleteEsData.sh 
今天是2020.07.09
3天前是2020.07.06
{"acknowledged":true}2020.07.09执行完成

如果执行脚本出现“permission denied”错误,一般都是因为第二步设置权限没有执行或者执行不正确造成的。

3、执行crontab命令,设置定期任务

1>、查看crontab服务状态

service crond status

在这里插入图片描述

2>、设置定时计划
首先,如下命令,进入编辑状态(每天晚上两点执行删除日志命令)

crontab –e

然后,输入定时的脚本,如下所示,并保存。

0 2 * * * sh /usr/local/soft/deleteEsData.sh >> /usr/local/soft/deleteEsDataRun.log>&1

在这里插入图片描述
3>、查看定时任务

crontab -l

在这里插入图片描述

4、设置过程中的异常

1>、运行deleteEsData.sh报错-bash: ./deleteEsData.sh: Permission denied。

权限不够,需要执行下面命令即可。

chmod 777 deleteEsData.sh
#或
chmod +x  deleteEsData.sh

2>、设置定时计划时,出现/tmp/crontab bad minute。

"/tmp/crontab.sdXvj4":5: bad minute

errors in crontab file, can't install.

Do you want to retry the same edit? 

出现上述错误时,一般都是crontab格式错误,即没有按照规则写。修改完显示“crontab: installing new crontab”表示成功。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68818.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!