ELK學習筆記之Elasticsearch刪除指定日期的數據(腳本+定時任務)


0x00 概述

目前使用的ES版本為6.3.x,經過長時間的積累,ES內數據越來越多,需要刪除指定日志之前的日志。

例如只要求保留60天的日志,那么就要刪除60天之前的所有索引和日志。

 

0x01 ES刪除XX天之前的索引和數據

#!/bin/sh
# ES版本為6.3.x


function delIndex()
{
        #此處輸入要刪除的索引名字,例如要刪除filebeat-xxx索引的日志,此處要輸入‘filebeat-’
        index_name=$1
        # 此處輸入要數據保留的天數,例如要保留最近60天的數據,此處要輸入60
        savedays=$2
        # $3變量也是天數,例如你要保留60天的數據,此處輸入90,就是會刪除第60到90天這段時間的數據,60<=90
        while [ $savedays -le $3 ]
        do
                # 此處是es內索引的日期格式,有的是2019.11.26,有的是2019-11-26
                format_day='%Y.%m.%d'
                #format_day='%Y-%m-%d'
                
                #此處通過date命令組成索引的時間戳部分,例如2019.11.26或者2019-11-26
                sevendayago=`date -d "-${savedays} day " +${format_day}`
                
                #此處組成完整的es數據的索引,數據格式filebeat-2019.11.26或者filebeat-2019-11-26
                index=$index_name$sevendayago
                #echo $sevendayago
                echo $index
                curl -XDELETE "http://127.0.0.1:9200/${index}"
                #exit 0
                
                #刪除完第60天的索引后,開始刪除第61天的索引,直到第90天
                savedays=`expr $savedays + 1`
        done
}

# 刪除索引前,要關閉索引,然后再刪除索引
# 邏輯與上面刪除的邏輯一致
function closeIndex()
{
        index_name=$1
        savedays=$2
        while [ $savedays -le $3 ]
        do

                format_day='%Y.%m.%d'
                #format_day='%Y-%m-%d'
                sevendayago=`date -d "-${savedays} day " +${format_day}`
                index=$index_name$sevendayago
                #echo $sevendayago
                echo $index
                curl -XPOST "http://127.0.0.1:9200/${index}/_close?pretty"
                #exit 0
                savedays=`expr $savedays + 1`
        done
}

# 關閉第60天到第90天的索引
closeIndex ‘filebeat-’ 60 90

# 刪除第60天到第90天的索引
deleteIndex ‘filebeat-’ 60 90

 

0x03 總結

可以將上面的shell內容做成腳本,加入crontab定時任務。

 


免責聲明!

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



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