轻量级监控平台之异常日志监控

轻量级监控平台之异常日志监控脚本

#!/bin/bash
#进程监控脚本
#功能需求: 上报服务日志错误记录
. /etc/profile
. ~/.bash_profile

pushurl="https://lightmonitorapi.test.cn/push/serviceerror"

proNum=$(jps | grep -v Jps | cut -d' ' -f1)
i=1
cd /opt/web/
webDir=$( ls )

msg=""
for pid in  $proNum
do

    serviceName=$(service list | grep "$pid" | cut  -d' ' -f1)
    if [ -n "$serviceName" ];then
        logName=$(cat /opt/service/deploy/"$serviceName"/service_log4j.xml | grep 'activexAppender' | awk '{print $3}' | awk -F'/' '{print $4}' |sed 's/"//g')
        logdir="/opt/service/log/"$serviceName"/"$logName
        if [ -f "$logdir" ];then
            ctime=$(date " %m-%d %H:%M")
            excenum=$(grep "$ctime" "$logdir" |grep "Exception" | wc -l )
            excedetail=""
            if [ $excenum -gt 0 ];then
                excedetail=$(grep "$ctime" "$logdir" |grep "Exception" -A 30)
            fi
            error=$(grep "$ctime" "$logdir" | grep "ERROR" | wc -l)
            msg=$msg$pid"-"$serviceName"-"$excenum"-"$error"-{{"$excedetail"}}#=\n"
        else
            echo "file not found:"$serviceName
        fi
    else
        for fileName in $webDir
        do
            fileDir=$(ps -ef | grep -v grep | grep "$pid" | grep "$fileName" )
            if [ -n "$fileDir" ];then
                 namespace="/opt/web/$fileName/webapps/WEB-INF/classes/META-INF/namespace.properties"
                 conf=$(cat "$namespace" | awk -F'=' '{print $2}')
                 logdir="/opt/web/"$fileName"/web/logs/"$conf"/"$conf".log"
                 uplogdir="/opt/web/"$fileName"/web/logs/"$conf
                 if [  -d "$uplogdir" -a -f "$logdir" ];then
                    ctime=$(date " %H:%M")
                    excenum=$(grep "$ctime" "$logdir" |grep "Exception" | wc -l )
                    excedetail=""
                    if [ $excenum -gt 0 ];then
                        excedetail=$(grep "$ctime" "$logdir" |grep "Exception" -A 30)
                    fi
                    error=$(grep "$time" "$logdir" | grep "ERROR" | wc -l)
                    msg=$msg$pid"-"$fileName"-"$excenum"-"$error"-{{"$excedetail"}}#=\n"
                 else
                    echo "file not found:"$fileName
                    echo "$conf"
                    echo "$logdir"
                    echo "$uplogdir"
                 fi
            fi
        done
    fi
done

ip=$(ip addr | grep 'BROADCAST' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d '/')

ticket=$(cat /opt/shell/ticket.txt)


curl $pushurl \
   -H "Accept: application/json" \
   -H 'Content-Type: application/json' \
   -d \ '{"ip": "'"${ip}"'", "ticket": "'"${ticket}"'", "data": "'"${msg}"'"}'

架构设计@工程设计@服务稳定性之路

发布了159 篇原创文章 · 获赞 69 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/u010504064/article/details/103200894
今日推荐