使用基于SNMP的监控服务来获得服务器信息

792 查看

监控的必要性

首先我们要明确,服务器的监控是必要的。服务器在运行过程中可能遇到各种问题,及时对服务器的状态信息以及历史的状态信息有一个掌握十分重要。比如程序的异常崩溃,如果在事后分析的时候有一个崩溃时系统CPU、内存、网络占用登的图表可供查阅,对照日志进行分析,往往比自己胡乱猜测原因要好得多。

常用的监控服务

自己有多的服务器可以用来搭建监控服务的话,likexian的stathub-go项目是一个不错的选择。不仅安装简单,界面也十分的友好。
如果自己手上没有多的服务器,或者感觉自己维护一个监控服务器是个麻烦事,也可以尝试使用nodequery的服务。nodequery为每个账户提供监控10个服务器的免费限额,客户端一句命令就能安完。它可以在服务器的CPU占用、内存占用或者硬盘占用超过设定的阀值的时候给你发邮件提示,更让人称赞的是,在邮件中会附带当前占用最高的进程列表。nodequery的监控频率最低为三分钟一次,在监控面板中可以看到一段时间内它的三个监控节点到服务器的延迟情况。

那SNMP又是干嘛的

简单来说,SNMP是一个通用的网络管理协议。通过它,我们可以获取到服务器的信息。
无论是自建stathub-go还是使用nodequery,都是使用自己编写的客户端向监控服务器提供数据。这样的好处是可以获得更详尽的信息,比如nodequery可以列出现在服务器上运行的程序已经它们的CPU、内存占用情况。不过不可避免的是,少量人员维护的第三方客户端存在可以被利用漏洞的可能性更高。同时,在不同系统的服务器上批量部署监控服务时,可能因为客户端的兼容问题而头疼。
使用SNMP作为客户端能很好的解决上面的问题。一方面,SNMP作为通用协议,存在漏洞的可能性非常小,一旦出现漏洞,修复的速度也会非常的快;另一方面,作为通用协议,SNMP在各个平台都有完备的解决方案,不用再为可能的兼容问题而头疼。

怎么用呢

监控宝貌似就支持SNMP,不过它对免费账户的限制稍稍有些严(如果是公司出钱,它真是不错的选择)。我们以另一个SNMP监控服务微林为例。

首先在服务器上配置SNMP服务,我的服务器系统是CentOS 6 x86。
执行 yum install net-snmp -y 安装SNMP。
安装完成后,执行 echo ''>/etc/snmp/snmpd.conf 将默认设置清空。
执行 vim /etc/snmp/snmpd.conf ,按i进入编辑模式,将以下内容粘贴进去:

com2sec vnet 192.99.12.76 publictogo
group vnetGroup v2c vnet
access vnetGroup "" any noauth prefix all none none
view all included .1 80

其中publictogo是个人的密匙,推荐改成自己的。
修改完按 Esc 退出编辑模式,输入:wq敲回车保存并退出。
执行 service snmpd start 启动SNMP服务。

然后进到微林的vDog管理页面,点击创建项目,在新弹出的框里输入主机的名称(方便识别的备注名称)、IP和刚刚修改的密匙,点击提交,之后这台服务器就会出现在它的管理界面中,隔几分钟再刷新就可以看到数据刷新了。

贴两张转来的效果图,服务器多的话整整齐齐的看起来还是蛮赏心悦目的。

微林的监控是免费的,貌似没有任何限制。不过我没找到像nodequery那种过载发邮件报警的选项,不知道之后会不会更新功能。现在的话主要是查看历史方便吧。

大家如果有好用的监控服务请务必在评论里告诉我 :-)