kafak日誌自動刪除
阿新 • • 發佈:2021-06-13
#!/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