定時刪除elasticsearch索引


從去年搭建了日志系統后,就沒有去管它了,最近發現大半年各種日志的index也蠻多的,就想着寫個腳本定時清理一下,把一些太久的日志清理掉。

腳本思路:通過獲取index的尾部時間與我們設定的過期時間進行對比,如果是屬於過期時間那么就進行刪除,並寫入日志。如果不是則不進行處理。

完整的腳本:(今天准備寫個,翻下筆記發現去年就已經寫好了)

#!/bin/bash
######################################################
# $Name:        clean_amazon_index.sh
# $Version:     v1.0
# $Function:    clean amazon log index
# $Author:      djx
# $Create Date: 2017-10-18
# $Description: shell
######################################################
#本文未加文件鎖,需要的可以加
#腳本的日志文件路徑
CLEAN_LOG="/var/log/clean_amazon_index.log"
#索引前綴
INDEX_PRFIX="amazon-mysql-log"
#elasticsearch 的主機ip及端口
SERVER_PORT=192.168.1.123:9200
#取出已有的索引信息
INDEXS=$(curl -s "${SERVER_PORT}/_cat/indices?v" |grep "${INDEX_PRFIX}"|awk '{print $3}')
#刪除多少天以前的日志,假設輸入10,意味着10天前的日志都將會被刪除
DELTIME=10
# seconds since 1970-01-01 00:00:00 seconds
SECONDS=$(date -d  "$(date  +%F) -${DELTIME} days" +%s)
#判斷日志文件是否存在,不存在需要創建。
if [ ! -f  "${CLEAN_LOG}" ]
then
touch "${CLEAN_LOG}"
fi
#刪除指定日期索引
echo "----------------------------clean time is $(date +%Y-%m-%d_%H:%M:%S) ------------------------------" >>${CLEAN_LOG}
for del_index in ${INDEXS}
do
        indexDate=$( echo ${del_index} |cut -d "-" -f 4,5,6 )
	#根據索引的名稱的長度進行切割,不同長度的索引在這里需要進行對應的修改
        indexSecond=$( date -d ${indexDate} +%s )
        if [ $(( $SECONDS- $indexSecond )) -gt 0 ]
                then
                        echo "${del_index}" >>${CLEAN_LOG}
			#取出刪除索引的返回結果
                        delResult=`curl -s  -XDELETE "${SERVER_PORT}/"${del_index}"?pretty" |sed -n '2p'`
			#寫入日志
                        echo "clean time is $(date)" >>${CLEAN_LOG}
                        echo "delResult is ${delResult}" >>${CLEAN_LOG}

        fi
done

 然后將腳本添加到定時任務定期執行即可(crontab)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM