分类: LINUX
2009-05-29 19:17:49
一、实际需求
服务器运行了lighttpd,主要为了统计当前连接数,然后cacti来画出当前连接数的统计图:这里说一下有几个方法来实现这个功能:
1、snmpget直接取值,经常发生取值不准确的问题:
2、用snmp抓取所有链接后统计行数,虽然信息比较准确,但效率低下,如果监控点超过千台,那几乎数据都是timeout收场:
3、在本机上写脚本统计后用snmp发送信息,cacti收集后画图,具体方法;
二、解决方案
snmp提供了发送自定义信息的功能。查看snmpd.conf会看到有一个小节是关于外部脚本的,Executables/scripts。这个小节里面也举了例子,告诉你怎么通过snmp发送信息。
在snmpd.conf任意位置添加一行:
exec .1.3.6.1.4.1.2021.18 tcpCurrEstab /etc/tcpconn.sh
其中tcpCurrEstab是命令的名称,后面是命令以及参数。命令的名称可以随便起。脚本执行的结果类似下面:
脚本内容如下:
重启snmpd,然后远程通过snmpwalk接收一下数据看看:
其中我们需要的是UCD-SNMP-MIB::ucdavis.18.101.1 = STRING: “488″这一行:
能采集到数据之后,就可以配置cacti来接收了。在cacti界面中console->Templates->Data Templates,然后点击右上角的Add,Data Templates中的name是给这个数据模板的命名,Data Source中的name将来显示在Data Sources中,我这里添加“|host_description| - Tcp Conn. - ESTBLISHED”,选get snmp data,Internal Data Source Name也可以随便添,这个用来给rrd文件命名。设置完后就可以save了,save之后会发现下面多了一些选项,在最下面那个添上我们需要的数据的 OID“.1.3.6.1.4.1.2021.18.101.1”,可以保存了。
此后需要创建一个Graph Templates,好让cacti生成图片。在cacti界面中console->Templates->Graph Templates,然后点击右上角的Add,Templates中的name是给这个数据模板的命名,Graph Template中的name是将来显示在图片上面中间的内容,我这里添加“|host_description| - Tcp Conn. - ESTBLISHED”,其他保持默认,保存之后上面会出来一些选项。
在Graph Template Items中添加一个item,Data Source选之前添加的,color选择一个图片的颜色,Graph Item Type选AREA,也就是区域,也可以选其他的线条,Text Format设置说明。然后再添加一个,Graph Item Type选GPRINT,Consolidation Function选LAST,也就是当前的值,Text Format输入current。你还可以添加一些Graph Item Type为COMMENT的注释说明等。
现在只要为host添加这个画图模板就可以看到画出来的图了。