为你的server服务增加监控报警

2018/02/26 java monitor ubuntu

版权声明:可以任意转载,转载时请标明文章原始出处-xjtushilei和作者信息:石磊

背景

为第三方开发的微信服务一直很正常,大概稳定运行了1年2个多月没down过,最近由于腾讯云的cvm不稳定,经常挂掉,甲方找了我2次,,就填了之前一直没加监控的坑。

过程

首先放弃外置tomcat

之前一直用的外置的tomcat8,本来我是做了tomcat的监控的,但是tomcat的监控有点问题,在启动的时候,多个war包有时候会冲突,大部门情况下是启动时间过长,同时在包含内嵌tomcat的时候也会发生问题,所以就放弃了tomcat,因为我不想在maven里放弃内置的tomcat,因为编程的时候十分方便。

放弃外置的tomcat和启用内置的tomcat的还有一些列其他好处,更加方便管理。

现在每个包都是独立的,同时给每个工程修改了不同的端口

兼容之前的URL

客户微信部分的配置为了减少改动,我在nginx处增加了转发,完成对原有所有URL的兼容修改。

server {
    listen 80;
    index index.html;
    server_name xxx.xxx.xxx.com;
    location /xxx {
        proxy_pass   http://localhost:8080/;
    }
    location /xxx {
        proxy_pass   http://localhost:8081/;
    }
    location /xxx {
        proxy_pass   http://localhost:8082/;
    }
    location /nginx_status
        {
            stub_status on;
            access_log   off;
        }
}

监控脚本

主要完成监控服务是否挂掉和重启服务。

PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
. /etc/profile
export LANG=en_US.utf-8
exist=`ps aux | grep -w 'java -jar xingchi.jar'| grep -v 'grep' |  awk '{print $2}'`
if [ -z "$exist" ] ;
then
    echo 1
    nowtime=`date +"%Y-%m-%d %H:%M:%S"`
    echo $nowtime"xingchi.jar  can not find"
    cd /home/ubuntu/project/SearchVIP/target
    nohup java -jar xingchi.jar &
fi

监控监本的实现方式有很多,由于我这里有很多的java进程,就没有使用 killall -0,推荐在使用docker时候使用该命令会特别方便。

除了进程级别的监控,还推荐在程序内部添加心跳函数,通过访问心跳函数来判断时候正常,这样可以更加方便。

例如

ok=`curl http://127.0.0.1:8082`
if [ "$ok" != "OK" ]
then
    echo "restart 8082"
    sh /cfs_chengdu/finddoctor/sh/start_prod_icd10predict.sh
fi

定时任务

crontab -e

在crontab中添加

*/3 * * * * sh /home/ubuntu/crontab/check_xingchi.sh >> /home/ubuntu/crontab/logs/check_xingchi.log &

注意将日志重定向到了其他地方。

短信息和邮件告警

之前写过短信和邮件的api接口,由于现在没有多余的资金支持,就没有接着走下去了。

如果有相关接口,直接在shell中发送告警信息!

无忧

再也不担心自己服务挂掉了。每天睡个安稳觉!

Search

    Post Directory