做这个系统其实当时的想法是开放给开发,然后开发自己做一些自己需要的监控,以便最早发现问题,但是做完发现跟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