起因是公司ES日志过多,每隔一段时间就会造成分配空间被占满,日志不能存入新的,只能读取日志。
网上查询了之后自己写了一个脚本,linux定时执行后定时删除ES日志,分为特殊日志和普通日志,这两种删除时间不同,可配置。
#!/bin/bash
#需要修改的注意 IP 索引名称 普通索引删除时间 特殊索引删除时间
index1="biz-mca-mf-log"
index2="maint-collect-server"
# 获取出所有索引,排除掉index1,index2
Indexs=`curl 'http://172.39.8.9:9200/_cat/indices' | awk '{print $3}' | egrep -v "^\." | egrep -v "^${index1}|^${index2}"`
# 只获取index1,index2
Indexs2=`curl 'http://172.39.8.9:9200/_cat/indices' | awk '{print $3}' | egrep -v "^\." | egrep "^${index1}|^${index2}"`
#普通索引删除时间 -7表示7天
LAST_DATE=$(date -d "-7 days" "+%Y-%m-%d")
#特殊索引删除时间 -30表示30天
LAST_DATE2=$(date -d "-30 days" "+%Y-%m-%d")
#删除普通索引
for index in $Indexs;
do
echo $index | egrep "[0-9]{4}.[0-9]{2}.[0-9]{2}"
if [ $? == 0 ];
then
Now_time=`echo $index | egrep -o "[0-9]{4}.[0-9]{2}.[0-9]{2}" | awk -F '.' '{print $1$2$3}'`
if expr $LAST_DATE ">=" $Now_time;
then
curl -XDELETE "http://172.39.8.9:9200/${index}"
fi
fi
done
#删除特殊索引
for index2 in $Indexs2;
do
echo $index2
echo $index2 | egrep "[0-9]{4}.[0-9]{2}.[0-9]{2}"
if [ $? == 0 ];
then
Now_time2=`echo $index2 | egrep -o "[0-9]{4}.[0-9]{2}.[0-9]{2}" | awk -F '.' '{print $1$2$3}'`
if expr $LAST_DATE2 ">=" $Now_time2;
then
curl -XDELETE "http://172.39.8.9:9200/${index2}"
fi
fi
done
只需批量替换路径,index1和index2为特殊日志,其他都是普通日志