所有拷贝和创建的文件,确保运行cacti的账户对其有读写权限,否则会产生各种问题,导致监控界面上有图无数据。例如mongoDB监控时,会在/tmp下创建一个status文件,运行的用户是webos,要保证该用户对这些文件有读写权限,
在对cacti创建定时运行任务时,去掉默认的不保存log,改为将运行产生的log写入指定的文件中:
如上图的例子,将poller运行的log用追加方式写入到/opt/lampp/htdocs/cacti/log/poller.log文件中,如果不用追加的方式,就会在每次写入时冲掉之前的数据,这样就没有意义了。当出现问题时,通过查看log内容可以帮我们详细定位问题所在。
Cacti默认的poller运行时间是每5分钟运行一次,想要把它改为每分钟运行一次。目前采用的方式需要修改这几处:
1. 首先修改Cacti的poller设置
2. 修改模板的step和interval时间
因为在创建rrd文件时,是按照模板规定的参数创建的,而每个模板默认的step是5分钟,因此,我们需要将模板也更改掉,修改Data Template下的所有模板,step为60,heartbeat为120。只不过这样改有个麻烦:如果下次在需要改为每5分钟运行一次,还要把模板改回来。如下图的例子:
3. 修改系统的定时运行任务
这里先解释一下crontab定时任务的命令格式,打开crontab,会有这样一行内容:
# m h dom mon dow user command
具体以意义是:分钟 小时 日期 月份 星期 用户名 命令,即在某月(mon)的某天(dom)或星期几(dow)的几点(h,24小时制)几分(m)用某用户(user)执行某命令(command),*表示任意时间。如下:
*/5 * * * * tianya /opt/lampp/bin/php /opt/lampp/htdocs/cacti/poller.php >>/opt/lampp/htdocs/cacti/log/poller.log 2>&1
就表示用webos这个用户名每5分钟执行一次poller任务。
修改:
用vi或者gedit打开/etc目录下的crontab文件
>sudo gedit /etc/crontab
修改:
*/5 * * * * tianya /opt/lampp/bin/php /opt/lampp/htdocs/cacti/poller.php >>/opt/lampp/htdocs/cacti/log/poller.log 2>&1
为:
*/1 * * * * tianya /opt/lampp/bin/php /opt/lampp/htdocs/cacti/poller.php >>/opt/lampp/htdocs/cacti/log/poller.log 2>&1
修改完毕,保存退出。然后重启定时任务:
>sudo service cron restart
4.重建rrd文件
上面三步修改好之后,需要把旧的rrd文件删除,否则就无法接收数据了。进入到cacti的rra目录下,执行以下命令:
>cd /opt/lampp/htdocs/cacti/rra
> rm *
如此删除所有rrd文件,在poller下次运行时会重新创建这些文件。到此,一切ok。
解决:打开cacti的plugins目录,进入到/plugins/thold/include目录,打开文件settings.php,找到132行,注释掉这句代码。
# define_syslog_variables();
原因:这个方法太旧了,已经被php淘汰了。
首先在创建Device时,注意snmp的版本要选2C,不能用“1”这个版本,然后在网卡流量的模板创建时,在“select a graph type”选项中选择 “In/Out bit(64-bit Counters)”。
如果snmp版本为1,而在“select a graph type”选项中选择 “In/Out bit(64-bit Counters)”,会导致有图无数据现象。
这个问题是执行下面的命令:
>snmpwalk –v 2c –c public localhost
当后面的主机参数选择localhost或者127.0.0.1时,有数据出现,但是当采用本机IP,192.168.1.103时,却提示超时 response time out
>snmpwalk –v 2c –c public 192.168.1.103
这是因为该机器的snmpd控制文件中设置了只响应本机的回环地址,如下:
# snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1’
只需把最后的127.0.0.1去掉或者改为0.0.0.0即可:
# snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid’
这个问题最初安装其他几台机器时灰常注意,但是这几台机器的snmpd控制文件中已经去掉了那个回环响应参数,结果最后在103机器安装时就忘记了,搞了半天才反应过来是这个问题。最终发现其他的机器安装的ubuntu12.04的版本,并且snmpd的版本是5.4.3,而103机器是ubuntu10.0的版本,安装的snmpd版本是5.4.2,不同的版本是有区别的。
问题解决:
在/var/run/目录下创建文件夹mysqld,然后对mysql的mysql.sock创建一个软连接,命令如下:
>sudo mkdir /var/run/mysqld
> sudo ln –s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
创建完毕,再次运行poller,数据获取正常,问题解决。
原因分析:XAMPP环境在运行时为mysql/mysql.sock创建了软连接/var/run/mysqld/mysqld.sock,由于/var/run目录下的用户新增目录是动态创建的,机器重启之后不会自动创建,而poller运行中会到该目录下寻找,结果没找到,于是链接mysql数据库失败。
最终解决:为一劳永逸的解决这个问题,修改rc.local文件,打开文件:
> sudo gedit /etc/init.d/rc.local
添加如下内容:
sudo mkdir /var/run/mysqld
sudo ln –s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
于是,在每次开机后会自动创建链接。