应用监控系统

做这个系统其实当时的想法是开放给开发,然后开发自己做一些自己需要的监控,以便最早发现问题,但是做完发现跟nagios\zabbix重复的相当严重,其实应该在nagios\zabbix上继续开发一下应该会更好,先贴出来吧!
应用监控系统

一、开发语言和功能实现
1、nodejs+express+bootstrap+jquery(centos系统)
2、每个应用或者IP+port的监控被添加后,都会在后台生成一个json文件,存放起来,并将被监控host写入到每五分钟监控一次的列表中;
3、每五分钟一次定时任务取五分钟监控列表,并将执行结果写入redis,redis只存最近三次的探测结果(也可以扩展到很多次),如果正常就绿色的正常,如果出现错误或者返回结果不正确,就会将此应用监控移到20s一次的监控列表中;
4、每20s一次的监控,超过三次以上的故障就会对此应用接受者发第一次的告警通知,并在后续每一小时发送一次告警通知,直至恢复;
5、一旦恢复后,就会发送恢复告警通知,并将此监控移至5分钟一次的监控。

其实有很多需要考虑的地方:1、新加入的监控,其实应该第一时间对此进行第一次的探测,如果出现异常会第一时间知道,否则,如果刚好在五分钟时,会出现五分钟的断档期;
2、其实所有的五分钟监控的策略都需要进行更改一下,因为五分钟会使一些关键业务出现致命的问题,需要进行自定义和出现问题的频率或者权重来定义监控的间隔时长......

二、安装过程+贴源码
1、安装nodejs
这个步骤很简单,只需要从nodejs的官网下载一个64位的压缩包,解压完毕后,将包放到自己想放的地方,然后加上环境变量即可,下载地址:
https://npm.taobao.org/mirrors/node/v8.11.1/node-v8.11.1-linux-x64.tar.xz

[root@m_node ~]# tar xvf node-v8.11.1-linux-x64.tar.xz 
node-v8.11.1-linux-x64/include/node/v8-platform.h
node-v8.11.1-linux-x64/include/node/v8-util.h
node-v8.11.1-linux-x64/include/node/android-ifaddrs.h
node-v8.11.1-linux-x64/include/node/uv-errno.h
node-v8.11.1-linux-x64/include/node/uv-darwin.h
node-v8.11.1-linux-x64/include/node/uv-linux.h
node-v8.11.1-linux-x64/include/node/uv-bsd.h
node-v8.11.1-linux-x64/include/node/v8-version-string.h
node-v8.11.1-linux-x64/include/node/v8-profiler.h
node-v8.11.1-linux-x64/include/node/node_api.h
node-v8.11.1-linux-x64/include/node/uv-win.h
node-v8.11.1-linux-x64/include/node/uv-aix.h
node-v8.11.1-linux-x64/include/node/stdint-msvc2008.h
node-v8.11.1-linux-x64/include/node/node_version.h
node-v8.11.1-linux-x64/include/node/zlib.h
node-v8.11.1-linux-x64/include/node/uv-unix.h
node-v8.11.1-linux-x64/include/node/zconf.h
......

[root@m_node ~]# mv node-v8.11.1-linux-x64 /usr/local/

[root@m_node ~]# vi /etc/profile
export PATH=/usr/local/node-v8.11.1-linux-x64/bin/:$PATH

2、express框架 + 增加监控项目
大家可以去详细了解一下和查阅官方文档
http://www.expressjs.com.cn/

安装express:

npm install express --save

增加express框架的监控项目

[root@m_node ~]# cd /data/jsproject/

[root@m_node jsproject]# express -e monitor

[root@m_node jsproject]# cd monitor/

[root@m_node monitor]# npm i 

我突然觉得我在写一步步的写程序,有点啰嗦了,直接把源码贴出来就行了呗!
不过有些说明还是要写清楚的
3、redis使用
安装就不说了,其实启动起来就可以了,需要修改配置文件在(我突然发现我写的代码有多垃圾……):

vi /data/jsproject/monitor/routes/get_mes.js

var redis_config = {
    "host": "192.168.0.10", //redis server ip
    "port": 6379  //redis server port
};

vi /data/jsproject/monitor/routes/schedule.js 

var redis_config = {
    "host": "192.168.0.10", //redis server ip
    "port": 6379  //redis server port
};

4、发邮件,需要配置邮件服务器

vi /data/jsproject/monitor/routes/schedule.js 

var transport = nodemailer.createTransport(smtpTransport({
    host: "mail.xxx.com", // 主机
    secure: false, // 使用 SSL
    secureConnection: false, // 使用 SSL
    port: 25, // SMTP 端口
    auth: {
        user: "user", // 账号
        pass: "pass" // 密码
    }
}));

5、运行是不是没写。。。

cd /data/jsproject/monitor
node bin/www
或者可以用pm2 启动
pm2 start bin/www --name "monitor"

代码质量确实不咋地,凑合着看吧^_^…………
找了半天也没找到上传的地方在哪里。。。。
http://down.51cto.com/data/2448806 <--------在这里

转载于:https://blog.51cto.com/314258/2116410

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值