ELK日誌定期清理 ES索引資料

不会游泳的鱼丶發表於2024-06-03

ELK 清理ES 索引資料

這個是清理前十天的索引資訊,只保留十天的索引日誌 目前我是手動執行的指令碼、如有需要可以自行新增定時任務

#!/bin/bash
#sticsearch的基本資訊  
ES_HOST="127.0.0.1"  
ES_PORT="9200"  
ES_USER="elastic"  
ES_PASS="slastic"  
  
# 獲取當前日期的前20天的日期格式  
TWENTY_DAYS_AGO=$(date -d "10 days ago" +%Y.%m.%d)  
  
# 函式:刪除指定的Elasticsearch索引  
function delete_index {  
    local index_name=$1  
    echo "Deleting index: $index_name"  
    curl -s -u "$ES_USER:$ES_PASS" -XDELETE "http://$ES_HOST:$ES_PORT/$index_name"  
}  
  
# 列出所有索引,並檢查每個索引是否需要刪除  
curl -s -u "$ES_USER:$ES_PASS" "http://$ES_HOST:$ES_PORT/_cat/indices?v" | while read -r line; do  
    # 假設索引名稱格式是類似 logstash-2023.10.23 這樣的  
    index_name=$(echo "$line" | awk '{print $3}')  
    index_date=$(echo "$index_name" | grep -oP '\d{4}\.\d{2}\.\d{2}')  
  
    # 檢查索引日期是否早於20天前  
    if [[ "$index_date" && "$index_date" < "$TWENTY_DAYS_AGO" ]]; then  
        delete_index "$index_name"  
    fi  
done

相關文章