1. 程式人生 > 其它 >kafak日誌自動刪除

kafak日誌自動刪除

#!/usr/bin/env bash

RETAIN_FILES_NUM=72
RETAIN_FILES_TIME=72
RETAIN_FILE_MB=1024
function retain_files_num() {
        echo ""
 }
function retain_files_date(){
    for file_name in $* ; do
        FILE_NAME=${file_name}
        # 確認給定時間之前的時間
        DELETE_DATE=`date +%Y-%m-%d-%H -d "${RETAIN_FILES_TIME} hours ago"`
        # 獲取所有日誌,將日誌的時間戳獲取
        # 遍歷所有日誌檔案,擷取日誌檔案的時間戳部分,與delete_date對比,小於等於這個時間的,刪除。
        for log_file in `ls -1 ${FILE_NAME}.log.20*`;do
            LOG_FILE_DATE=`ls -1 ${log_file} | awk -F . '{print $(NF)}'`
            if [[ ${LOG_FILE_DATE} < ${DELETE_DATE} ]]; then
                echo "當前日誌檔案:${log_file}, 儲存時間已超過${RETAIN_FILES_TIME}個小時,刪除中……"
                rm -f ${log_file}
            fi
        done
        done
}

function retain_files_size(){
    for file_name in $* ; do
        FILE_NAME=${file_name}
        # 判斷出檔案大小
        # 判斷超過1G的檔案個數,超過兩個刪除新檔案(保留就的檔案,事件現場)。
        BIG_FILE_NUM=`ls -lh ${FILE_NAME}.log.20* | grep -v total | grep G | wc -l `
        if [[ ${BIG_FILE_NUM} > 1 ]];then
            flag=1
            for log_file in `ls -lh ${FILE_NAME}.log.20* | grep -v total | grep G | awk '{print $(NF)}'` ;do
                if [[ ${flag} -gt 1 ]] ;then
                    echo "當前日誌檔案:${log_file}, 大小已超過${RETAIN_FILE_MB}M,刪除中……"
                    rm -f ${log_file}
                fi
                ((flag++))
            done
        fi
        if [[ ${BIG_FILE_NUM} == 1 ]];then
            echo "剩餘1個超過${RETAIN_FILE_MB}M的檔案,請檢查檔案過大內容,如有問題解決問題後清除。"
        fi
        echo "${FILE_NAME}.log的保留檔案大小正常"
    done
}
retain_files_date server controller kafka-authorizer kafka-request log-cleaner state-change
retain_files_size server controller kafka-authorizer kafka-request log-cleaner state-change