打造一个属于自己的应用服务自动监控警报程序

 

         公司的各项网络应用服务越来越多了,大到:ERP、PDM、数据库服务器等应用服务,小到一台用PC做的文件服务器或者多台打印服务器。并且,更为复杂的是:随着公司的业务发展壮大,这些服务器物理位置分散,有的在机房,有的在部门,有的在远程某个办公地点。时间长了,难免忘记了,有时,接到用户投拆,什么什么不能用了,一头雾头的想半天,在哪儿呢?我要远程过去但IP是多少呢?换个角度想想看,这样等着用户投拆,也不是个事儿,怎么做到我自己提前知道呢?至少也要做到,当用户发现不能用的时候,我已在维修中。这样的话。工作就做到前边了,领导和用户的满意度想必也会提升了。

 

         基于以上的原因,也曾考虑过一些第三方的软件产品,每每提到软件费用,像我们这种非IT主导业务的公司领导犯愁,说到软件布署,自己犯愁。毕竟没有空闲的好一点的专业服务器不说,就算往那些已带有业务系统的服务器上安装,层层审批下来,可能性也不大。

         有没有更为简单并且高效的方法来实现呢?经过反复思索。须有以下功能:

1. 定时自动巡检,并会自动生成详细的巡检log;

2. 巡检到问题是有明显的报警,至少做到声音报警。另做到邮件自动通知报警 至少两种报警方式较可靠一点;

3.灵活的扩展,比如新增一个监控,要能快速加入到监控队列.

 

自己动手。丰衣足食,该软件安装布置当然是装在我的PC上。要不声音报警的时候我要听见。呵呵。邮件自动通知报警支持多人。这样做的好处明显。扩展上采用ini配置文件来做,实时加入,实时进入监控队列.

 

实现原理:软件首先读取ini配置文件里的自动巡检间隔时间,然后开始读取ini配置文件里的需监控的服务器IP及端口数据,采用FOR循环地进行:创建一个socket连接过去,根据返回值来判断是否成功在正常运行。若没有正常返回主套接字(socket)ID,就进入报警模块,直到判断完ini配置文件里所有的IP及对应的端口。这个时候,整理一下物理内存,sleep巡检间隔时间,等待下一个重新读取ini配置文件里的自动巡检间隔时间及其它信息。

 

使用方法很简单:

 

 

绝对绿色,把程序下载下来后,双击运行,会自动在软件当前目录生成一个配置文件,你可以双击打开修改,也可以右下角: 右击软件图标,通过功能键来进行编辑

这是第一步必须要配置好该ini文件.

配置文件编辑修改时注意事项:

[run]

172.16.128.56=80
172.16.136.30=1433

可以添加无限多个监控信息,格式是:ip=端口

文件服务器是445 端口,MSSQL服务器端口是1433  WEB服务器端口是 80等等,大家自行去填写

 

[admingroup]
1=zhanghong1@test.com.cn
2=zhouyu@test.com.cn

3=youremail@email.com.cn

如上可自行添加多个.  前提是你必须照实填实你的email服务器及用户信息.若填写错误且有报警信息时会弹一个窗哦。

 

 

报警示意:

我收到的警报邮件图示:

报警声音是连续的电脑蜂鸣(电脑里有个喇叭就行,不通过声卡!)

 

查看报警日志 示例:

 

 

 

(若路过的您有更好的建议请多多指点,无限感谢!   我将尽可以抽时间进行软件更新让这个小工具更好地工作.)

 

2010.8.3 感谢  luwenju的建议,控制到秒为单位

若有我之前的版本,升级方法:真接替换EXE程序即可,然后注意ini配置文件里的time的值是秒了。若不然,备份好:inirun.ini,然后删除inirun.ini,让主程序重新生成一个即可。

建议: time的值不要设置得太少,想想看,否则累死自己的PC不说,也累倒了被监控的服务器。呵呵~~~大家自己去试试吧~~~

 

感谢51CTO,本文荣幸登录社区周刊: