Chinaunix首页 | 论坛 | 博客
  • 博客访问: 292373
  • 博文数量: 240
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-04 18:14
文章分类

全部博文(240)

文章存档

2017年(8)

2014年(4)

2013年(15)

2012年(4)

2011年(14)

2010年(55)

2009年(140)

我的朋友

分类: LINUX

2009-05-29 19:17:49

 

一、实际需求

服务器运行了lighttpd,主要为了统计当前连接数,然后cacti来画出当前连接数的统计图:这里说一下有几个方法来实现这个功能:
1、snmpget直接取值,经常发生取值不准确的问题:

# snmpget -c public -v 2c 127.0.0.1 .1.3.6.1.2.1.6.9.0
TCP-MIB::tcpCurrEstab.0 = Gauge32: 0

2、用snmp抓取所有链接后统计行数,虽然信息比较准确,但效率低下,如果监控点超过千台,那几乎数据都是timeout收场:

# snmpget -c public -v 2c 127.0.0.1 .1.3.6.1.2.1.6.13.1.3 |wc -l
725

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是命令的名称,后面是命令以及参数。命令的名称可以随便起。脚本执行的结果类似下面:

# /etc/tcpconn.sh
80

脚本内容如下:

$ cat tcpconn.sh
#!/bin/sh
conn=`netstat -s -t | grep connections\ established |awk '{print $1}'`
echo $conn

重启snmpd,然后远程通过snmpwalk接收一下数据看看:

# snmpwalk -c public -v 2c 127.0.0.1 .1.3.6.1.4.1.2021.18   
UCD-SNMP-MIB::ucdavis.18.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.18.2.1 = STRING: "tcpCurrEstab"
UCD-SNMP-MIB::ucdavis.18.3.1 = STRING: "/etc/tcpconn_total.sh"
UCD-SNMP-MIB::ucdavis.18.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.18.101.1 = STRING: "488"
UCD-SNMP-MIB::ucdavis.18.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.18.103.1 = ""

其中我们需要的是UCD-SNMP-MIB::ucdavis.18.101.1 = STRING: “488″这一行:

# snmpwalk -v 1 192.168.1.201 -c public .1.3.6.1.4.1.2021.18.101.1
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添加这个画图模板就可以看到画出来的图了。

阅读(1795) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~