cacti―nagios搭建中常遇到的错误

在执行poller.php获取数据的时候,由于php版本问题,所以会报几个错误:

解决方法。

(1)在cmd.php和include/global_arrays.php 文件开头添加date_default_timezone_set('UTC'); 这行。

(2)如果报这个错误PHP Deprecated:  Function split() is deprecated in的话,需要将对应的php文件中的split替换成explode() 函数就而已了。

(3)如果报这个错误Deprecated: Function ereg_replace() is deprecated in 的话,需要将对应的php文件中的ereg_replace()函数前面添加一个@符号,屏蔽该函数。

(4)还有一个类似的错误,PHP Deprecated:  Assigning the return value of new by reference is deprecated in

是需要将对应的php中的&=修改为=来解决。

(5)最后还有一个比较古怪的问题,当上面步骤都安装完了以后,在graphs页面不显示图片,但是点进去。又可以看见图片,这个主要是rrdtool的版本不对造成的,解决方法是在console页面有一个setting,点进去后,修改rrdtool的版本就可以了。

 

通过以上方法如果还是报错的话,可以试着重新导入mysql,然后删除rra文件夹下的文件,重新获取一次。重启snmpd等方法看看能否解决。

 1、为什么图像不能显示?
先确定您的IP地址、snmp comunitesnmp version等信息配置没有错误.
假如是在linux下安装cacti的话,能够按以下步骤检测:
1.1
cactidata sourcesGraph Management均有debug.看是否有错误,比如rrd文档没找到等.
1.2
data sources里看rrd文档的名称,然后到/cacti/rra目录中看是否有该文档存在,确定该目录权限正确。
1.3
、假如有rrd文档存在,则能够使用
Server#  rrdtool fetch yourRRDfile.rrd AVERAGE
命令,看该文档的采集的数据,假如都是“nan”,那就是没有取到数据.
1.4
、有可能是snmpgetsnmpwalkrrdtool的路径错误.
1.5
、排除错误后,需要重新建立该监测点(graph.
提示:每一个图像的文档均会保存为rra目录里的一个rrd为后缀的文档(能够在“Data Sources”中看到)
.“Data Sources”
“Graph Management”中均能够进行debug,能够从debug中得出错误信息.

2
、为什么rra目录下什么都没有?
2.1
、请查看该目录的权限.该目录的权限应为cactiuser能够读写.
2.2
、假如目录的权限没有问题,那么可能是snmp的配置有问题,请手工测试一下:
Server#  snmpwalk -v 2c -c public yourIP if
假如有数据返回,snmp的数据没有问题.假如出现“Timeout: No Response from ...”之类的
错误信息则是snmp配置的问题.
2.3
、也可能是snmpwalksnmpgetrrdtool的路径没有配置好在Settings>Paths中检查配置是否正确.
修改后请重建该监测点!否则不生效.

3、为什么能取到流量的数据但取不到CPU和内存的数据?
应该是snmp权限的配置问题.能够用snmpwalk手工测试一下.
假如要取CPU等数据,需要修改net-snmp的配置.如何修改请看:
http://bbs.chinaunix.net/viewthread.php?tid=594019 
4.

4、能够取到本机(linux)的数据,但却不能取到远程主机的数据?
Cacti有很多模板,有的是用SNMP进行数据采集,有的是用shell脚本进行采集.假如没有特别的原因建议都使用SNMP.
Associated Graph Templates
前面带“ucd/net”的就是能使用ucd-snmpnet-snmp的模板.:ucd/net - CPU Usage
Associated Data Queries
前面带SNMP的就是能使用snmp.:SNMP - Interface Statistics
当然,您还能够从[url]www.cacti.net[/url]上找到新的模板或添加自己的模板.

5、我以前用MRTG进行流量的监测,是否能够将MRTG中的数据导入到Cacti中呢?
当然能够!因为我就是这样做的.
请看:[url]http://bbs.chinaunix.net/viewthread.php?tid=595090[/url]

6、为什么我的流量达到100M以上图像就不准呢?
这和snmp的版本有关,snmp1的数据是32位而snmp2c以上是64.
首先要确定您使用的是snmp2c或以上(现在的网络设备一般都支持).
然后点击Cacti的页面:“Console ->; Create New Graphs ->;Data Query”.您在下面看到
“Select a graph type:”
的下拉菜单(默认是“In/Out bits”,要取64bits的数据所以将其改为
“In/Out bits(64-bit Counters)”,
然后选择您要监测的网卡即可.
另外,该监测点的“Maximum Value”必须配置为100M以上.
假如是Linux主机要监测100M以上的流量(一般不会发生),需要带“--enable-mfd-rewrites”参数重新编译最新的net-snmp.


7
09/02/2005 02:59:58 PM - POLLER: Poller[0] Maximum runtime of 296 seconds exceeded. Exiting,什么意思?
应该是您的监测点配置太多,导致cacti通过snmpget取完任何数据的时间超过300.
Cacti
的作者一早就考虑到这问题,所以在cacti中有两种解决方法:
7.1
、将POLLER更改为cactid.
默认的POLLERcmd.php,cactid是使用C写的程式,效率会比cmd.php高几倍!
注意,虽然POLLER的选项中有cactid的选择,cactid默认并没有安装,所以即使您选择了他也不会生效的.
您能够从这里([url]http://www.cacti.net/cactid_download.php[/url])下载cactid的源码或rpmbin)文档进行安装.然后在PATH中指定cactid的路径即可.
7.2
、在POLLER的配置中加大cmd.php的进程数,即同时运行多个cmd.php进行数据的采集.但这样的话会加重您的系统负载.
假如您的机器性能太差,建议还是改用cactid为好.
PS:
当磁盘空间满的时候会出现这个问题,原因是磁盘空间慢导致snmpget的时间变长.

8
、怎么备份Cacti和他的数据呀?
只需要备份rra目录和数据库就能够了.您喜欢也能够将log目录一起备份.
假如您自己添加了一些插件的话记得也拷过去.

9、如何将数据合并?如何自定义脚本?
请看:
http://bbs.chinaunix.net/viewthread.php?tid=631801

1、脚本:
比如建立/tmp/echo.sh脚本:

#!/bin/sh
echo 10
echo 20


2
snmpd配置:
vi snmpd.conf
加入:

exec .1.3.6.1.4.1.2021.51 mytest /bin/sh /tmp/echo.sh


重启snmpd

3
cacti配置
“Import Templates”中导入附件中的模板(解压后共三个文件)。

4
、使用方法
我建立的“Graph Templates”的名称是“TwoValueGraph”。在“Associated Graph Templates”中选择“TwoValueGraph”,然后建立图形。



10、使用monitorthreshld插件
请看:
http://bbs.chinaunix.net/viewthread.php?tid=631801     
的四楼.

使用monitorthreshld插件

可以从http://cactiusers.org/下载threshldmonitor这两个插件。
但在安装插件时,必须先安装cacti的一个patch--Plugin Architecture 。(也在同一个网站下载)

安装Plugin Architecture  
解压后有一个文件夹和一个patch文件,可以直接打补丁,也可以使用该文件夹的文件覆盖cacti目录即可安装完成。


安装threshldmonitor
安装插件的步骤都是一样的,比如安装threshld
解压后会出现一个threshld文件夹,将该文件夹复制到/cacti/plugins文件夹,然后编辑/cacti/include/config.php文件,
 $plugins = array();下面加上:
$plugins[] = 'thold';
(如果安装monitor的话加上 $plugins[] = 'monitor';

保存即可。

注意:有些插件默认不显示在页面上,需要在user managerment里将View ThresholdsView minitore选择上。



11、为什么月、年的流量图下面的字母乱码?
是由于rrdtool不支持中文导致的.我的情况更为严重,当图中出现中文时,rrdtool graph的时候索性就segment fault掉了.
因为中文环境下的日期显示会缺省的把星期和月显示成中文,以致于您的图上由于无法显示中文而出现乱码.
解决的办法有2种思路,一种就是让rrdtool显示英文的日期,一种就是让rrdtool支持中文.两种方法都牵涉到修改rrdtool的源代码.我采取的是第一种思路,rrdtool不要去读中文环境的语言环境变量,强制让他用英文.
我是在编译rrdtool1.2时把src/rrd_graph.c文档中的这段内容改掉:
setlocale(LC_TIME,"");
改成
setlocale(LC_ALL,"en_US.ISO-8859-1");
然后再编译.这样就好了.假如还不行,您就把您的环境变量里的语言环境都改成英文:
export LC_ALL=en_US
export LANG=en_US
export LANGUAGE=en_US
export LC_CTYPE=en_US
export LC_TIME=en_US
,您就索性根据abel老大的方法让rrdtool支持中文吧.
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1

12cacti是否支持中文?
cacti
默认在某些页面不能正常显示中文,rrdtool默认也不能够显示中文.
假如真的需要使用中文,请参考下面连接.
http://bbs.chinaunix.net/viewthread.php?tid=631801

我们发现,如果将一个device以中文命名,会在devices页面出现乱码,而且图像也会出现乱码。
为了解决这些问题,实现使用中文的目的,我们需要修改cactirrdtool的代码,以让其支持中文。

注意:我这里所说的支持中文只是让cacti能显示中文,而不是将cacti全部汉化。如果有朋友有兴趣想要为cacti的汉化出一份力的话,可以联系其作者。


软件版本:
cacti-0.8.6g
rrdtool-1.2.8
支持中文环境的linux

首先我们要解决“Devices”的页面的中文乱码的问题。
编辑hosts.php文件,查找"eregi_replace”(大概在766行左右),将下面的代码:

<a class="linkEditMain" href="host.php?action=edit&id=<?php print $host["id"];?>"><?php prin
t eregi_replace("(" . preg_quote($_REQUEST["filter"]) . ")", "<span style='background-color: #F8D93D;'>\\1</span>", $host["descripti
on"]);?></a>


改为:

<a class="linkEditMain" href="host.php?action=edit&id=<?php print $host["id"];?>"><?php prin
t  $host["description"];?></a>


注意:我并没有仔细研究作者究竟要用"eregi_replace“过滤什么东西,而只是简单的将其删除以达到显示中文的目的。如果有朋友可以通过修改该代码实现中文显示而又能继续进行过滤的话,麻烦告诉我。


然后就是让rrdtool显示中文,需要的版本是1.2.8(为什么?问abel去)。修改的方法请看:
http://bbs.chinaunix.net/viewthread.php?tid=552224

最后在cacti“setting”-》“Paths”-》“RRDTool Default Font Path”中填上中文的fonts,比如:“/usr/share/fonts/zh_CN/TrueType/gbsn00lp.ttf”

在支持中文环境的linux上能成功实现中文显示。
虽然在BSD下也成功编译,但由于系统环境没有设置好,所有没有成功,麻烦有BSD经验的朋友告知方法。



13、新建的deviceData Query里面的状态总是“ Success [0 Items, 0 Rows]”
请先确认您的snmpd.conf中的权限配置,是否允许cacti取这些OID的数据.可以使用snmpwalk命令来进行测试,比如:
CODE: snmpwalk -c community -v 2c hostIP if
假如您的snmpd.conf配置没有问题,那可能是下面这种情况:
旧版本的snmpwalk(比如redhat默认安装的5.0.6)缺少一些参数,比如-O中的"U"参数.(能够用snmpwalk --help来查看是否有该参数).
cacti-0.86g或以上版本需要这些参数,解决办法是安装一个新的net-snmp(:net-snmp5.2.1),从而得到一个新snmpwalk的版本.

14CACTI  RRDTOOL 各自的优势是什么?

MRTG的优点:简单、易上手,基本安装完了之后只要更改一下配置文件即可。
缺点:
1
、使用文本式的数据库,数据不能重复使用;
2
、只能按日、周、月、年来查看数据;
3
、只能画两个DS(一条线、一个块);
4
、每取一次数据即需要绘图一次,浪费系统资源;
5
、无管理功能;

rrdtool
的优点:
           1
、使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。
           2
、可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。
           3
、能画任意个DS
           4
CDEF让你能任意摆弄数据。
缺点:
        1
rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;
        2
、在命令行的使用非常复杂,参数极多。
        3
、无管理功能。

cacti其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的host、甚至每一张图,还可以与LDAP结合进行用户的验证!我不由得佩服作者考虑的周到!Cacti还提供自己增加模板的功能,让你添加自己的snmp_queryscript!可以说,cactirrdtool的所有缺点都补足了!

 

15、请写出 apache 支持 PHP 的配置:

############### for php and cacti ################### 
AddType application/x-tar .tgz 
AddType application/x-httpd-php .php 
AddType image/x-icon .ico 
DirectoryIndex index.php index.html index.html.var 
####################### over #####################

 

16、如何安装 rrdtool

./configure
make && make install 
即可
mrtg相比,rrdtool自带了gd,所以不用先安装gd.(不过由于rrdtool自带的gd库不支持中文,所以rrdtool画出来的图也不能有中文,否则会出现乱码).

注意:rrdtool1.2的版本由于已经不再自带外部的lib库(如cgilibzlib等),所以需要从http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/下载这些库来安装。建议还是使用1.0的版本,比较方便。

 

17、简单描述配置SNMP的过程:
打开默认的/etc/snmp/snmpd.conf文件,更改如下配置:
1
、查找以下字段:

#       sec.name  source          community
com2sec notConfigUser  default       public


"comunity"字段改为你要设置的密码.比如"public".
“default”改为你想哪台机器可以看到你的snmp信息,10.10.10.10
2
、查找以下字段:

# Finally, grant the group read-only access to the systemview view.
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all none none

 

"read"字段改为all.

#access  notConfigGroup ""      any       noauth    exact  systemview none none


3
、查找以下字段:

##           incl/excl subtree                          mask
#view all    included  .1                               80


将该行前面的"#"去掉.
4
、运行/etc/init.d/snmpd start命令运行snmpd.
最后运行netstat -ln查看161端口是否打开了

###############################
今天遇到一同学的数据列表里面有图形,graphs里图是X,看他的cacti支持的rrdtool版本是1.0-1.3,尼玛他装了个1.4版本的。卸载重装OK!

 

你可能感兴趣的:(监控)