ELK中创建的索引格式为log_appname-2020.12.31
,需要根据后面的日期判断是否过期并删掉过期索引。
脚本代码如下:
#!/bin/bash
###################################
es_ipaddr=http://192.168.100.100:9200
function delete_indices() {
echo "入参:$1"
comp_date=`date -d "7day ago" +"%Y-%m-%d"`
echo "7天前的时间: $comp_date"
date1="$1 00:00:00"
date2="$comp_date 00:00:00"
t1=`date -d "$date1" +%s`
echo "t1: $t1"
t2=`date -d "$date2" +%s`
echo "t2: $t2"
if [ $t1 -le $t2 ]; then
echo "$1时间早于$comp_date,进行索引删除"
#转换一下格式,将类似2017-10-01格式转化为2017.10.01
format_date=`echo $1| sed 's/-/\./g'`
echo "格式化后即将删除的索引日期: $format_date"
curl -XDELETE $es_ipaddr/*$format_date
fi
}
curl -XGET $es_ipaddr/_cat/indices | awk -F" " '{print $3}' | awk -F "_" '{print $NF}' | awk -F "-" '{print $NF}'|sort | uniq | egrep "[0-9]*\.[0-9]*\.[0-9]*" |sed 's/\./-/g'| while read LINE
do
#调用索引删除函数
delete_indices $LINE
echo "=========================================="
done
执行结果:
每天定时调用这个脚本就可以了。
linux下定时调用可以使用crontab
工具