通過日誌判斷系統是否正常運行
阿新 • • 發佈:2018-07-19
日誌 url orm type 簡單的 utf-8 常常 success 監控端口 當前已經引入了自動化部署,但是由於能力有限和其他限制,目前只是通過監控端口是否存在來判斷程序
正常啟動與否。常常jenkins上返回服務部署成功,用戶訪問時卻失敗,只能靠人手動登錄系統查看日誌進行判斷,反應不靈敏, 且jenkins已下放於各級開發人員操作
這引發了諸多不便和難以管理。因此,增加了啟動日誌關鍵字判斷腳本, 當部署應用程序時,會主動觸發腳本進行關鍵字過濾,達到退出條件時返回並發送提示信息。
正常啟動與否。常常jenkins上返回服務部署成功,用戶訪問時卻失敗,只能靠人手動登錄系統查看日誌進行判斷,反應不靈敏, 且jenkins已下放於各級開發人員操作
這引發了諸多不便和難以管理。因此,增加了啟動日誌關鍵字判斷腳本, 當部署應用程序時,會主動觸發腳本進行關鍵字過濾,達到退出條件時返回並發送提示信息。
目前收集到的關鍵字,主要由以下:
^Caused by
^at
Error
Exception
廢話不多說,直接上腳本了。
#!/bin/bash APP=$(cd `dirname $0`;pwd) #判斷應用程序是jar還是tomcat FILETYPE=`ls *.jar &>/dev/null | wc -l` if [ ${FILETYPE} -eq 0 ];then LOGFILE=${APP}/logs/catalina.out else LOGFILE=`ls ${APP}/*.log` fi #告警條件 WARN=0 #當前讀取的行數 LAST=1 #當前環境所包含的地址有限,故使用簡單的正則收集 MANAGERIP=`ip a | grep -E ‘192.168.15.|192.168.100.‘ | awk ‘{print $2}‘` #`which tail` -fn 220 ${LOGFILE} | awk ‘/^Caused by|^ at |Error|Exception/{print }‘ while true do total_line=`wc -l $LOGFILE | awk ‘{print $1}‘` line=`head -n $LAST ${LOGFILE} | tail -1` num=$(echo $line | awk ‘/^Caused by|^at |Error|Exception/{ print}‘ | wc -l) LAST=$(( LAST + 1 )) WARN=$(( WARN + num )) #退出條件的處理 if [ ${LAST} -gt 1000 ];then break fi if [ ${WARN} -gt 10 ];then break fi if [ ${LAST} -eq 150 ];then sleep 1 fi if [ ${LAST} -eq ${total_line} ];then if [ `echo $line | awk ‘/success/{print}‘| wc -l` -ne 0 ];then break else if [ ${LAST} -lt 300 ];then continue fi fi fi done if [ ${WARN} -gt 9 ];then MESSAGE="路徑:${APP}, 管理地址: ${MANAGERIP}, 啟動出現錯誤,請登錄系統查看" else MESSAGE="路徑:${APP}, 管理地址: ${MANAGERIP}, 啟動成功" fi #此處觸發消息發送 curl -X POST -H "‘Content-type‘:‘application/x-www-form-urlencoded‘, ‘charset‘:‘utf-8‘,‘Accept‘:‘text/plain‘" -d "${MESSAGE}" http://192.168.15.212:9000/alarm echo "success finished"
以上,只是對日誌中過濾關鍵字判斷進行了簡單的處理,且個人能力有限,未做深入探索
通過日誌判斷系統是否正常運行