分类: LINUX
2009-11-13 21:33:17
本文由李燕凌(秋荻)创作于2009.11.13 22:00
是指Cacti监控服务器不进行数据采集,只进行页面展示和配置,但前提是该Cacti服务器必须配置公网IP。然后在每个被监控局域网放一台服务器对其它服务器定期进行数据采集,并将采集的数据传回CACTI监控服务器。这样即使CACTI服务器与被监控机不在同一个局域网,并且被监控机没有公网IP,仍然可以实现监控。
1、CACTI监控机
将Cacti监控机放在主站(杭州),配置有公网IP(121.0.25.80),且cacti的数据库命名为cactidb。
2、采集数据的agent
北京、上海两个CDN站点,局域网内分别放了一台代理(192.168.0.25/192.168.1.25),用来采集局域网内其它被监控服务器的流量,并传回给主站的CACTI监控机。
3、被监控服务器
北京CDN:192.168.0.100/192.168.0.101;
上海CDN:192.168.1.100/192.168.1.101。
在CACTI上添加设备(192.168.0.100),像通常一样填写需要的信息,然后在Associated Data Queries 下面添加“SNMP - Interface Statistics”,进入第二步。这时如果点击“”创建图片,端口信息将不会出现,因为CACTI监控服务器与被监控服务器是不通的,所以SNMP获取不到任何信息,因此需要经过第2、3两个步骤获取信息并插入数据库后,才能正确的创建图片。
在agent(192.168.0.25)上执行snmpwalk_cdn.pl脚本来获取被监控设备(192.168.0.100)的ifAlias、ifDescr、ifPhysAddress、ifIndex、ipAdEntIfIndex、ifName、ifOperStatus、ifSpeed、ifType信息,并存入 snmp.txt文件。这些信息正是我们在创建图片的时候需要的信息。
用法:perl snmpwalk_cdn.pl
将snmp.txt文件拷贝到CACTI监控服务器上,与host_snmp_cache.pl脚本放在同一目录下,然后执行host_snmp_cache.pl脚本将snmp.txt里的数据插入cactidb库的host_snmp_cache表里。
用法:perl host_snmp_cache.pl
回到第一步的创建图片,选择该设备点击“”创建图片。到此, cacti对192.168.0.100的监控配置便完成了,但它并不进行数据采集,也就是说不需要在crontab里执行php poller.php,对于数据的采集,还需要依靠check_traffic_cdn.pl脚本来完成。
将check_traffic_cdn.pl脚本放到agent(192.168.0.25)上,可以通过nagios调用来采集流量,也可以放到crontab里每5分钟执行一次,脚本的用法可以通过-h参数查看。
用法:check_traffic_cdn.pl -v 2 -c public -H 192.168.0.100
该脚本主要是用来对本局域网的被监控服务器进行流量的采集,然后将采集到的数据送回主站的CACTI监控服务器。
在主站CACTI监控服务器上配置好apache的80端口,并启动apache,然后将rrd_update.pl程序放在apache/cgi-bin目录下,就可以接收agent(192.168.0.25)传回的数据,并更新rrd数据库。
rrd_update.pl程序更新rrd数据库的思路:
(1)通过agent传回的IP地址在cactidb数据库的host表中查找对应的id(host_id)号;
(2)通过host_id和agent传回的数据模板ID号(流量模板的ID号的41)在data_local表中查找对应的ID号(data_local_id);
(3)通过data_local_id在data_template_data表中查找RRD数据源的路径data_source_path。
(4)通过调用rrdtool对上面找到的数据源文件进行更新。
这样就可以在CACTI界面上看到以上数据生成的图像了。
对于其它服务器的监控重复以上步骤,只是不同的局域网用不同的agent采集数据罢了。这样一个针对流量的cacti被动监控就完成了。如果想进行CPU或内存等其它的监控,那就需要重新写一个脚本以替代check_traffic_cdn.pl脚本。
|