elk四、定时删除elk日志脚本——shell

ES数据定期删除
如果不删除ES数据,将会导致ES存储的数据越来越多,磁盘满了之后将无法写入新的数据。这时可以使用脚本定时删除过期数据。
方法一、

#/bin/bash
#es-index-clear
#只保留某几天内的日志索引-5 days || 12 days ago
ST_LAST_DATA=`date -d "-7 days" "+%Y.%m.%d"`
UAT_LAST_DATA=`date -d "-15 days" "+%Y.%m.%d"`
PROD_LAST_DATA=`date -d "-30 days" "+%Y.%m.%d"`

#删除上个月份所有的索引
curl -XDELETE "http://192.168.180.6:9200/st-${ST_LAST_DATA}"
#curl -XGET "http://192.168.180.6:9200/st-${ST_LAST_DATA}"
curl -XDELETE "http://192.168.180.6:9200/uat-dev15-${UAT_LAST_DATA}"
#curl -XGET "http://192.168.180.6:9200/uat-dev15-${UAT_LAST_DATA}"
curl -XDELETE "http://192.168.180.6:9200/prod-admin-paas-${PROD_LAST_DATA}"
#curl -XGET "http://192.168.180.6:9200/prod-admin-paas-${PROD_LAST_DATA}"

#crontab -e添加定时任务:
#0 1 * * * /home/elk/clear/es-index-clear.sh

可以视个人情况调整保留的天数,这里的ip和port同样设置为不存储数据的那台机器。该脚本只需要在ES中一台机器定时运行即可。

crontab -e添加定时任务:

0 1 * * * /search/odin/elasticsearch/scripts/es-index-clear.sh

每天的凌晨一点清除索引。
注意:保证crond服务是启动的
[root@server scripts]# service crond status
方法二、

#!/bin/bash

#删除ELK30天前的日志

DATE=`date -d "30 days ago" +%Y.%m.%d`

curl -s  -XGET http://127.0.0.1:9200/_cat/indices?v| grep $DATE | awk -F '[ ]+' '{print $3}' >/tmp/elk.log

for elk in `cat /tmp/elk.log`

do

        curl  -XDELETE  "http://127.0.0.1:9200/$elk"

done

加入到定时任务

# crontab  -e

#每天凌晨1点定时清理elk索引

00      01      *      *      *      bash /server/scripts/elk.sh &>/dev/null
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值