crontab定時清理文件,java日誌,es記錄等

簡單運維

開發環境硬件配置小 , 經常要清理空間 . 寫個簡單的清理腳本去運維 .

清理java日誌 .

# cleanLog.sh
# 日誌目錄
LOG_DIR=/path/to/log

cd $LOG_DIR

# 歷史日誌的文件格式是 , app-xxxx-xx-xx.log. 撈大於1k的文件去清空
for logfile in `find ./ -size +1k -name "app*.log"`;do
	cat /dev/null > $logfile
	echo $logfile "清理完成"
done

清理 gc 日誌 .

# cleanGC.sh
# 日誌目錄
LOG_DIR=/path/to/gc

cd $LOG_DIR

# 歷史日誌的文件格式是 , gc-xxxx-xx-xx.log. 撈大於1k的文件去清空
for gcfile in `find ./ -size +1k -name "gc*.log"`;do
	cat /dev/null > $gcfile
	echo $gcfile "清理完成"
done

清理 es 空間 .

有些流水日誌寫到es裏 , 排查要用 ,又不能關. 只能手動定時清理了.

刪除整個索引

有些是按時間劃分了冷熱數據 . 歷史數據直接刪了就行了. 執行刪除就會釋放空間的.

# cleanES.sh
# 刪除前一天的索引數據
DAY=`date -d -1"days" +%Y-%m-%d`
curl -X DELETE http://127.0.0.1:9200/DailyAccount-$DAY

只保留最近數據

有些只有一個索引, 那麼只保留最近數據 .

1)delete_by_query設置檢索近100天數據;

2)執行forcemerge操作,手動釋放磁盤空間。

# 刪除動作
curl -H'Content-Type:application/json' -d'{
    "query": {
        "range": {
            "pt": {
                "lt": "now-100d",
                "format": "epoch_millis"
            }
        }
    }
}
' -XPOST "http://127.0.0.1:9200/logstash_*/_delete_by_query?conflicts=proceed"

# merge動作
curl -XPOST 'http://127.0.0.1:9200/_forcemerge?only_expunge_deletes=true&max_num_segments=1'

crontab 命令

加 crontab 執行腳本, 創建文件 cron.cron(個人建議使用文件的方式創建cron , 可以適當做些註釋說明) , 添加如內容:

# cron.cron文件

# 清理日誌
0 0 1 * * sh /path/to/scripts/cleanLog.sh
# 清理GC
0 0 2 * * sh /path/to/scripts/cleanGC.sh
# 清理ES
0 0 3 * * sh /path/to/scripts/cleanES.sh

將腳本添加到 crontab

crontab cron.cron

確認crontab

crontab -l
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章