shell之刪除elasticsearch30天以前的索引
阿新 • • 發佈:2018-10-15
pro $1 one check source profile line pri 日期轉換 在elasticsearch的運維工作中,由於es每天會產生大量的日誌,如果一直保存不進行刪除的話,再大的磁盤空間也會不夠用,由此需要刪除滿足條件的index,從而釋放磁盤空間;
我們公司的es要求只保留30天的日誌即可,超出30天的index則自動進行刪除;
es-index-delete-30days-ago.sh
我們公司的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天以前的索引