关于cacti安装、配置、使用中的问题小结:
本文通过自己的安装配置与网站资料,对一些问题进行总结整理:
其中,参考的网站如下:http://blog.chinaunix.net/uid-1838361-id-2885043.html
1. 关于cacti安装完成后,在浏览器中输入连接,提示无法连接数据库?
1) 是selinux闯的祸,可以利用命令“#setenforce 0” 测试一下 连接一切正常。
2. 在浏览器中输入连接,无任何显示?
1) 可以查看Apache的配置文件,可能是配置没有修改正确。
3. 新建设配完成后,设备的状态是“未知(unknow)”?
1) 因为在配置里选择了轮询,但在crontab里没有加,实际并没有轮询。之所以没有图,是因为RRD文件没有建。所以,这些都要做。按照文档,先建一个cactiuser用户(因为执行crontab需要一个用户),然后更改rra及log目录的属主是这个用户(因为这个用户要建RRD文件),为了快速观察,手工执行了一下:php poller.php,发现RRA库终于建立了,再看LOCALHOST也UP了,自己建的建个还是UNKNOW,于是又建了一张表,再看,状态就UP了
2) 可以在本设备中新建一个图形,图形绘制成功后,在返回设备列表,状态已经正常。
4. 关于监控磁盘I/O的iostat解决方法:
1) 首先下载监控所需插件:http://www.markround.com/uploads/cacti-iostat-1.6.tar.gz
2) 配置监控端:
导入iostat模块:
#cpsnmp_queries/linux/iostat.xml /<path>/cacti/resource/snmp_queries/
3) 配置被监控端:
注意:以下操作如果需要修改OID或者修改/tmp为其它路径,那么在iostat.xml模板文件和iostat.pl文件中也需要做对应的修改,建议保持默认。其它路径根据实际情况调整。
#cp scripts/iostat.pl /usr/local/bin/
添加计划任务:
#crontab –e
*/2 * * * * cd /tmp&& iostat -xkd 30 2 | sed 's/,/\./g' > io.tmp && mv io.tmpiostat.cache
添加oid
pass .1.3.6.1.3.1 /usr/bin/perl /usr/local/bin/iostat.pl
4) 进行测试:
snmpwalk -v 2c IP -cpublic .1.3.6.1.3.1.13
5) 如果测试可以获取数据则在监控端将所需要的模板进行进行导入,就可以使用了。
5. 关于在配置iostat中,snmpwalk -v 2c IP -c public .1.3.6.1.3.1.13,出现错误提示; SNMPv2-SMI::experimental.1.13 = No Such Instance currentlyexists at this OID?
1) 首先查看被监控的主机是否安装iostat工具包;
2) 然后查看/var/log/audit/audit.log,利用audit2why < /var/log/audit/audit.log命令可以看到SELinux的错误分析。我们找到类似于:type=AVCmsg=audit(1316500461.989:3076): avc: denied { read } for pid=17209 comm="perl" name="iostat.cache" dev=dm-0 ino=1177351 scontext=user_u:system_r:snmpd_t:s0 tcontext=root:object_r:tmp_t:s0 tclass=file 的错误。
3) 将上面的日志保存到一个文件中,如1.log,执行 audit2allow -m local -l -i ./1.log >local.te
local.te的内容类似于:
module local 1.0;
require {
type snmpd_t;
type tmp_t;
class file read ;
}
#============= snmpd_t =============
allow snmpd_t tmp_t:file read ;
4) 继续执行:checkmodule -M -m -o local.mod local.te && semodule_package -o local.pp -m local.mod && semodule -i local.pp
5) 成功后,重新执行snmpwalk -v 2c 59.51.24.18 -c public .1.3.6.1.3.1.13,发现又有新的报错,
type=AVC msg=audit(1316500461.989:3076): avc: denied { read } for pid=17209 comm="perl" name="/tmp/iostat.cache" dev=dm-0 ino=1177351 scontext=user_u:system_r:snmpd_t:s0 tcontext=root:object_r:tmp_t:s0 tclass=file
type=AVC msg=audit(1316501743.698:109): avc: denied { ioctl } for pid=3294 comm="perl" path="/tmp/iostat.cache" dev=dm-0 ino=1177349 scontext=user_u:system_r:snmpd_t:s0 tcontext=root:object_r:tmp_t:s0 tclass=file
type=AVC msg=audit(1316501743.698:110): avc: denied { getattr } for pid=3294 comm="perl" path="/tmp/iostat.cache" dev=dm-0 ino=1177349 scontext=user_u:system_r:snmpd_t:s0 tcontext=root:object_r:tmp_t:s0 tclass=file
6) 重复上面的步骤,这次把新的两条和上面的一条错误一起放到log文件里。
#audit2allow -m local -l -i ./1.log >local.te
local.te内容为:
module local 1.0;
require {
type snmpd_t;
type tmp_t;
class file { read ioctl getattr };
}
#============= snmpd_t =============
allow snmpd_t tmp_t:file { read ioctl getattr };
#checkmodule -M -m -o local.mod local.te && semodule_package -o local.pp –m local.mod && semodule -i local.pp
7) 执行snmpwalk,这次成功取到了数据
6. 利用4在监控中出现Verbose Query时无法获取信息?
<index_order>ioDescr:ioName:ioIndex</index_order>更改为<index_order>ioDescr:ioIndex</index_order>即去掉ioName: