之前这篇 [免费服务]001:L君试用OSE (CentOS 5.4 + OpenNMS 1.6.10) 文章,最后面提到的客制化需求,简单的说,就是要把一些用指令可以查询到的数据,画成图表。
很多网管系统的应对方法,都是在自己这端 fork 一个 telnet 或 ssh ,远端登入到被监控的机器,执行查询的指令,然后从回传的结果抓出需要的资讯(parsing)
但是 OpenNMS 不推荐这样的方式(!)
我之前就有注意到 opennms 有一些设计理念,很重视 scale/scalability;他们应该是监控 data communication 起家,所以处理的 node 数量比我以前的环境 (telecomm) 多很多。
用我以前做 N产品 在 没有距离电信 的应用来举例,N产品的定位是"Manager of Managers(网管系统的网管系统)",一方面接收的告警数量很高,另一方面,界接的网管系统其实还没有超过 100 套(可能连50套都不到)。
就算界接一百套,就算这一百套都不是其他的界接方式,而都是 “N 产品这边的 Solaris 伺服器 fork telnet /ssh process ,连到对方的伺服器来抓告警”,这对 Solaris 伺服器的负载来说,小事一桩,不过是 100个 process。
换句话说,N产品界接的是网管系统,node 相对少,但是 alarm per node 相对高(每一个 process 连到别家的伺服器之后,捞进来的告警数量都很大,毕竟每一套都是网管系统,已经汇整了它所管辖的所有告警呢!)
==
反之,OpenNMS 从 datacomm 开始起家,界接的node数量相对多,但是 alarm per node 相对低;因为 node 数量很多,所以不赞成用 server fork process to telnet/ssh into remote 。
这的确跟我以前的 mindset 不太合,但是会抓老鼠的猫就是好猫,会收告警的系统就是好系统,OpenNMS也有几种方法来回应这种需求:
1. SNMP
如果被监控的系统没有提供 MIB 的话,可以用 The
Many Uses of Net-SNMP 这篇英文文章提到的方法
简单的说,就是运用 Net-SNMP 的 extend 功能,在被监控系统上面开启 Net-SNMP ,然后做一个 extension ,执行你的 script ,把回传资料处理成 NET-SNMP-EXTEND-MIB,这样 OpenNMS 就可以透过 snmp 方式,trigger 被监控系统 去执行 script ,并且传回可以画成图表的资讯。
2. Web page scraping
OpenNMS还有另一招,妳如果可以把需要收集的资料、数据(通常是command output) 作成一页网页的话,OpenNMS可以定期去读取那一页,抓出需要的资讯:HTTP Collector
3.呼叫 Nagios 的 agent
这一招我更没有概念,简单说,如果被监控系统已经装了 Nagios agent ,可以呼叫它去执行 command
实务上,这多半用在“客户已经有在使用 Nagios,但是在 scalability上面遇到问题,开始考虑OpenNMS”
最后是广告时间:[自由软体导入评估]让PowerOp到府为您服务(免费喔!)
[OpenNMS] 当妳有特殊的资料收集需求时,几种客制化的方法
