★ 需求
服务器运行了weblogic和apache,可是有时weblogic进程会莫名crash,业务都在这上面,所以需要能监控程序的运行。我在服务器端写了一个脚本,使用curl检测这两个服务的状态,返回一个数字来确定是哪个服务down了,然后远程通过cacti采集数据画图。
★ 解决方法
snmp提供了发送自定义信息的功能。查看snmpd.conf会看到有一个小节是关于外部脚本的,Executables/scripts。这个小节里面也举了例子,告诉你怎么通过snmp发送信息。我的做法如下(下面假定你已经配置好了snmp,通过cacti已经能采集到信息了)。
在任意位置添加一行:
exec .1.3.6.1.4.1.2021.51 wlsapache /root/wlsapache status
其中wlsapache是命令的名称,后面是命令以及参数。命令的名称可以随便起。脚本执行的结果类似下面:
# ./wlsapache status
3
ALL ok.
我这个脚本的“ALL ok”其实是副产品,对于采集数据没有用。
重启snmpd,然后远程通过snmpwalk接收一下数据看看:
# snmpwalk -v 1 192.168.1.201 -c public .1.3.6.1.4.1.2021.51
UCD-SNMP-MIB::ucdavis.51.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.51.2.1 = STRING: "wlsapache"
UCD-SNMP-MIB::ucdavis.51.3.1 = STRING: "/root/wlsapache status"
UCD-SNMP-MIB::ucdavis.51.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "3"
UCD-SNMP-MIB::ucdavis.51.101.2 = STRING: "ALL ok."
UCD-SNMP-MIB::ucdavis.51.102.1 = INTEGER: 0
其中我们需要的是UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "3"这一行:
# snmpwalk -v 1 192.168.1.201 -c public .1.3.6.1.4.1.2021.51.101.1
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "3"
能采集到数据之后,就可以配置cacti来接收了。在cacti界面中console->Templates->Data Templates,然后点击右上角的Add,Data Templates中的name是给这个数据模板的命名,Data Source中的name将来显示在Data Sources中,我这里添加“|host_description| - Network - wlsapache”,选get snmp data,Internal Data Source Name也可以随便添,这个用来给rrd文件命名。设置完后就可以save了,save之后会发现下面多了一些选项,在最下面那个添上我们需要的数据的OID“.1.3.6.1.4.1.2021.51.101.1”,可以保存了。
此后需要创建一个Graph Templates,好让cacti生成图片。在cacti界面中console->Templates->Graph Templates,然后点击右上角的Add,Templates中的name是给这个数据模板的命名,Graph Template中的name是将来显示在图片上面中间的内容,我这里添加“|host_description| - wlsapache status”,其他保持默认,保存之后上面会出来一些选项。
在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添加这个画图模板就可以看到画出来的图了。
服务器运行了weblogic和apache,可是有时weblogic进程会莫名crash,业务都在这上面,所以需要能监控程序的运行。我在服务器端写了一个脚本,使用curl检测这两个服务的状态,返回一个数字来确定是哪个服务down了,然后远程通过cacti采集数据画图。
★ 解决方法
snmp提供了发送自定义信息的功能。查看snmpd.conf会看到有一个小节是关于外部脚本的,Executables/scripts。这个小节里面也举了例子,告诉你怎么通过snmp发送信息。我的做法如下(下面假定你已经配置好了snmp,通过cacti已经能采集到信息了)。
在任意位置添加一行:
exec .1.3.6.1.4.1.2021.51 wlsapache /root/wlsapache status
其中wlsapache是命令的名称,后面是命令以及参数。命令的名称可以随便起。脚本执行的结果类似下面:
# ./wlsapache status
3
ALL ok.
我这个脚本的“ALL ok”其实是副产品,对于采集数据没有用。
重启snmpd,然后远程通过snmpwalk接收一下数据看看:
# snmpwalk -v 1 192.168.1.201 -c public .1.3.6.1.4.1.2021.51
UCD-SNMP-MIB::ucdavis.51.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.51.2.1 = STRING: "wlsapache"
UCD-SNMP-MIB::ucdavis.51.3.1 = STRING: "/root/wlsapache status"
UCD-SNMP-MIB::ucdavis.51.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "3"
UCD-SNMP-MIB::ucdavis.51.101.2 = STRING: "ALL ok."
UCD-SNMP-MIB::ucdavis.51.102.1 = INTEGER: 0
其中我们需要的是UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "3"这一行:
# snmpwalk -v 1 192.168.1.201 -c public .1.3.6.1.4.1.2021.51.101.1
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "3"
能采集到数据之后,就可以配置cacti来接收了。在cacti界面中console->Templates->Data Templates,然后点击右上角的Add,Data Templates中的name是给这个数据模板的命名,Data Source中的name将来显示在Data Sources中,我这里添加“|host_description| - Network - wlsapache”,选get snmp data,Internal Data Source Name也可以随便添,这个用来给rrd文件命名。设置完后就可以save了,save之后会发现下面多了一些选项,在最下面那个添上我们需要的数据的OID“.1.3.6.1.4.1.2021.51.101.1”,可以保存了。
此后需要创建一个Graph Templates,好让cacti生成图片。在cacti界面中console->Templates->Graph Templates,然后点击右上角的Add,Templates中的name是给这个数据模板的命名,Graph Template中的name是将来显示在图片上面中间的内容,我这里添加“|host_description| - wlsapache status”,其他保持默认,保存之后上面会出来一些选项。
在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添加这个画图模板就可以看到画出来的图了。