1. 程式人生 > >shell之刪除elasticsearch30天以前的索引

shell之刪除elasticsearch30天以前的索引

pro $1 one check source profile line pri 日期轉換

在elasticsearch的運維工作中,由於es每天會產生大量的日誌,如果一直保存不進行刪除的話,再大的磁盤空間也會不夠用,由此需要刪除滿足條件的index,從而釋放磁盤空間;
我們公司的es要求只保留30天的日誌即可,超出30天的index則自動進行刪除;
es-index-delete-30days-ago.sh

#!/bin/bash
##############################################
#Author: Liuzhengwei - [email protected]
#QQ:1135960569
#Last modified: 2018-10-15 16:29
#Filename:es-index-delete-30days-ago
#Description: 通過任務計劃自動刪除es中30天以前的索引,以釋放空間
##############################################
source /etc/profile
#定義刪除30天以前的函數
delete_indices(){
    check_day=`date -d ‘-30 days‘ ‘+%F‘`
    index_day=$1
    #將日期轉換為時間戳
    check_day_timestamp=`date -d "$check_day" +%s`
    index_day_timestamp=`date -d "$index_day" +%s`
    #當索引的時間戳值小於當前日期30天前的時間戳時,刪除此索引
    if [ ${index_day_timestamp} -lt ${check_day_timestamp} ];then
        #轉換日期格式
        format_date=`echo $1 | sed ‘s/-/\./g‘`
        curl -XDELETE http://10.78.1.184:9200/*$format_date
    fi
}

curl -XGET http://10.78.1.184:9200/_cat/indices | awk -F" " ‘{print $3}‘ | awk -F"-" ‘{print $NF}‘ | egrep "[0-9]*\.[0-9]*\.[0-9]*" | sort | uniq  | sed ‘s/\./-/g‘ | while read LINE
do
    #調用索引刪除函數
    delete_indices $LINE
done

任務計劃,每天執行一次:

0 2 * * * /server/scripts/es-index-delete-30days-ago.sh &> /dev/null

shell之刪除elasticsearch30天以前的索引