前段时间有人问我怎么用nagios监控linux内存使用情况,以及怎么设置报警阈值?linux运行时,是最大可能的利用内存,监控这个对象没有现实意义,明显属于无效的监控策略.另有一人说:"晚上没完没了的收到监控系统的发送的报警短信,受不了…"。不言而喻,这也是一个不好的监控策略,实际上监控已经失去了它的意义。所以要让监控平台更有效的发挥作用,好的策略是必须的。那么怎么才能算是好的策略,这里我结合我的实际情况,谈谈我的一些看法,希望对大家有所帮助。
策略一:监控对象选择
在一个规模较大的网络中,监控的对象可能包括服务器、防火墙、交换机、路由器等等设备,以及运行在各对象上的服务。但是,我们没必要把所有的对象都放到这个监控系统中来。比如把某些测试系统放到监控中,就会产生如上那位老兄整个晚上收到报警短信的麻烦。因此,选择正确的监控对象是实施有效监控的前提,个人建议,只有那些重要级别高的,不能随便停止服务的对象――如在线交易系统――才是值得监控的对象。当然,服务器的使用者总希望你把它监控上,哪怕它不是那么重要。
策略二:故障报警方式选择
老板非常希望我们不知疲倦的坐在计算机旁,但是他只是一厢情愿而已。对监控系统而言,一定要有合适的故障告警机制。目前常用的告警机制包括:邮件、短信、msn、web页面显示等几种手段,这几种手段中,短信报警最佳。因为在夜间睡梦中,我们没办法随时收邮件,但是短信去能唤醒我们,通知我们发生故障了,而且在老板和用户发现这个故障以前。对于没有通道的机构来说,租用sp提供的服务是比较稳妥的方式,其他如用移动飞信等方式都不怎么考谱,不适合关键性业务运营。另外我使用了一个小技巧,让监控平台每天下午给我发一条短信,不管有没有故障都发,这样以便让我知道短信接口是否正常。
策略三:故障报警时效和间隔的选择
由于网络通信等不可控因素,因此可能存在故障误报的情况。如果把报警发送设置成一次探测不成功就发送报警信息就不是个好策略。经验表明:探测3-4次都失败再发送信息,并不耽误我们去处理故障。假如探测一次失败就报警,即可以很快把手机短信空间塞满,又会让你睡不好觉。
故障报警开始发送以后,一般会没完没了的发送,直到故障排除恢复正常,才会发一条类似"*** is ok!"的短信。报警发送间隔设置,也是需要费一番心思,设短了,不停的消耗你的短信费用,设长了,恐怕不足以唤醒沉睡的人;如果没有人去处理故障,也没有人去停止这个通知,报警信息就会一直发送下去。
那怎么样是一个合适的范围呢?我的做法是:探测4次失败开始报警,报警间隔10分钟,总共发送8次,然后停止发送,假如第3次没有人去处理,我会电话通知,没回应则取消该对象的监控,并记录该次事件。
策略四:监控平台地点的选择
对于一个规模比较大的网络,为了解决南北互联问题而采取多个地点建立数据中心的办法。这时需要对不同地理位置的服务器进行监控,也会遇到访问慢的问题。解决这个问题有几种方式:1、选择一个到各个位置访问都顺畅的数据机房;2、采取分步是监控平台,各处自己收集监控信息,然后到一处汇总;3、各数据中心单独建监控平台。各人可以根据自己的实际情况自行选择。
策略五:流量控制和安全
有不少商业解决方案采取snmp和客户端软件来监控各个对象,这会引起额外的流量和带来安全问题。因此尽量不要使用snmp这样比较占资源的协议(具称snmp v3似乎有所改进)。开源解决方案Nagios在这方面做得比较完美,值得推荐一下。它可以以插件方式先收集到各监控对象的信息,然后再传送到监控服务器上,大大节省网络带宽。