監控線上錯誤日誌

需求:監控線上的錯誤日誌,有新錯誤時,將錯誤信息發送到指定人的郵箱上。

思路:

1、根據線上日誌文件的總條數來判斷是否新增內容

2、記錄上一次的總條數,作爲提取日誌增量的其實行數

3、將新增內容發送至郵箱


代碼:

#!/bin/bash

day=`date +"%y%m%d"`
#服務器日誌位置
server_log=/tmp/app-${day}.log
LOG_NUM=/tmp/lognum${day}.log

server_ip="ip1 ip2 ip3 ip4"

for server in ${server_ip}
do
    LOCAL_LOG_NUM=${LOG_NUM}${server}
    if [ ! -f "${LOCAL_LOG_NUM}" ];then
        echo 0 > ${LOCAL_LOG_NUM}
    fi

    #服務器當前日誌條數
    server_num=`ssh root@${server} cat ${server_log} | wc -l`

    #本地上次記錄條數
    local_num=`cat ${LOCAL_LOG_NUM}`

    if [ ${server_num} -ne ${local_num} ];then
        from_num=`expr ${local_num} + 1`
        content=`ssh root@${server} tail -n +${from_num} ${server_log}`
        echo ${content} | mail -s "php error log from server:${server}" [email protected]
#       echo new message from ${server}
        echo ${server_num} > ${LOCAL_LOG_NUM}
    fi
done

問題:

1、如果網絡出錯沒有一些預警機制

2、晚上0點的時候會出現一些問題

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