Cacti是一款优秀的开源监控软件,使用php实现,它的主要特点是使用snmp服务获取数据,然后用rrdtool存储和更新数据,当用户查看数据的 时候,rrdtool生成图表呈现给用户。mysql数据库用于存储变量并进行调用。mysql数据库并不存储snmp捕获到的数据,snmp捕获到的数 据,存在于rrdtool生成的rrd文件中,这些文件位于cacti目录下的rra目录中。

本文主要介绍cacti中文版的安装,配置,cacti插件的安装,配置。英文版的安装跟中文版大同小异,但是中文版会麻烦点,所以就以中文版为例。

系统:linux 5.6

软件:cacti-0.8.7b

 
一、    准备软件的安装

由于cacti使用php来实现,通过WEB来管理,使用snmp来捕获数据,使用rrdtool来生成图表,使用mysql来存储变量,因此需要先安装这些软件,直接使用yum进行安装即可,共需安装以下rpm包:

httpd/mysql-server/php/php-mysql/rrdtool/gd/net-snmp/php-snmp/net-snmp-utils/net-snmp-devel/mysql-devel/openssl-devel

各个rpm包的作用为:

httpd  WEB服务器apache

mysql-server   数据库mysql

php   cacti使用php来实现

php-mysql  php支持mysql

rrdtool   用来生成cacti图像

gd      rrdtool绘制图像需要的图形库

php-snmp   php支持snmp

net-snmp-utils   一些snmp的扩展命令,如:snmpwalk、snmpget等,cacti需要

net-snmp-devel/mysql-devel/openssl-devel   cactid/spine需要

 

如果之前有LAMP 环境就不需要安装LAMP 了建议是php5.3的版本。如果没安装

yum -y install httpd gettext mysql mysql-server mysql-devel php php-mysql php-p
yum -y install php-mysql mysql perl mysql-server perl-DBI perl-DBD-MySQL httpd gcc glibc glibc-common gd gd-devel php

 

由于RH组件中是不带rrdtool的需要源码安装之前安装过了Nagios 所以不用在安装

 

 

设置开机自启动

#chkconfig httpd on

#chkconfig mysqld on

#chkconfig snmpd on


二、    MySQL数据设置

由于cacti依靠mysql来存储必要的变量,我们有必要对MySQL做些设置。

启动并初始化mysql数据库

#service mysqld start



为root用户设置密码(以linuxpad为例),并更改登录权限,默认密码为空

#mysql –u root –p      回车后输入密码(空)

mysql>use mysql;

mysql>update user set password=password(‘linuxpad’) where user=’root’;             

mysql>grant all privileges on *.* to root@localhost identified by ‘linuxpad’ with grant option;

mysql>flush privileges;



添加cacti库和cacti用户,并为其设置权限

mysql>create database cacti default character set utf8;    //数据库字符集设置utf8,否则乱码

mysql>grant all privileges on cacti.* to cacti@localhost identified by ‘linuxpad’ with grant option;


mysql>flush privileges;
三、    安装Cacti

下载cacti-0.8.7e-cn-utf8.tar.gz,地址为http://blogimg.chinaunix.net/blog /upfile2/090815172648.gz (这个链接是tar.gz格式的,请下载后更改文件格式),假设下载目录为/opt/soft,下面相同

#cd /opt/soft

#tar zxvf 090815172648.tar.gz

#mv cacti-0.8.7e-cn-utf8 /var/www/cacti



修改配置文件

#vi /var/www/cacti/include/config.php



修改内容如下

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "cacti";

$database_password = "linuxpad";



关于cacti添加用户,网上常见的做法是添加一个cacti的用户,并更改rra和log目录属主。经过本人测试这里并不需要添加cacti用户并更改 rra和log的属主,直接使用root即可。原因是因为官方的安装文档上使用的是FreeBSD,在计划任务那步使用的是:

*/5 * * * * cacti php /var/www/cacti/poller.php &>/dev/null,使用用户cacti来执行任务。

但是centos并不是识别这个cacti参数,因此也就无需使用cacti来执行任务,我们直接使用root来执行任务就OK了,于是不用更改目录权限,crontab内容为

*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1

还有另外一种的解决方案,就是添加一个cacti用户,更改rra和log目录属主为cacti,然后在cacti用户环境下设置crontab,内容为

*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1

这样就能实现crontab计划是由cacti用户来执行的了。

创建并编辑apache的cacti配置文件

#vi /etc/httpd/conf.d/cacti.conf



内容如下:

Alias /cacti /var/www/cacti

<Directory /var/www/cacti>

DirectoryIndex index.php

AllowOverride all

order deny,allow

allow from all

php_flag magic_quotes_gpc on

php_flag track_vars on

</Directory>


导入数据库

#mysql –u root –p cacti < /var/www/cacti/cacti.sql

启动服务,然后访问http://ip/cacti开始安装cacti

#service mysqld start

#service httpd start

#service snmpd start

直接下一步,选择”全新安装”,来到下面的一个界面,如图1

请确认所有路径都已找到,并选择SNMP应用程序版本为5.x,RRDTool版本为1.3.x。

完成之后来到登录页面,默认用户名admin,密码admin,登录之后会提示你强制更改密码。

设置计划任务

#crontab –e

追加以下内容

*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1
安装ttf-arphic-ukai_0.1.20060928.orig.tar.gz字体

Tar zxvf ttf-arphic-ukai_0.1.20060928.orig.tar.gz
cd ttf-arphic-ukai-0.1.20060928
cp ukai.ttf /usr/share/fonts/zh_CN/TrueType/
cd /usr/share/fonts/zh_CN/TrueType/

ttmkfdir –d在当前目录下会更新fonts.scale文件,把新的字体ukai.ttf加入此文件。

以上所有软件安装完。

打开Cacti,控制面板->配置->设置->路径:
将RRDTool默认字体路径设为/usr/share/fonts/zh_CN/TrueType/ukai.tttf

配置无误,会显示文件已找到。

四、    配置本机snmp

 

yum -y install net-snmp*  php-snmp    

 

 

编辑snmp配置文件/etc/snmp/snmp.conf

修改:

com2sec notConfigUser  default       public

改为:

com2sec notConfigUser  127.0.0.1       public

修改:

access  notConfigGroup ""      any       noauth    exact  systemview none none

改为:

access  notConfigGroup ""      any       noauth    exact  all none none

去掉这句的注释

#view all    included  .1                               80

重启snmp服务并测试

#service snmpd restart
# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex  
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.xxx.xxx.xxx.xxx = INTEGER: 2
IP-MIB::ipAdEntIfIndex.xxx.xxx.xxx.xxx = INTEGER: 3

goaccess 英文变中文 access中文版改英文版_数据库

 

 

 

显示以上信息,则snmp配置成功,xxx.xxx.xxx.xxx会根据你本机的IP信息配置而不同。

Find  / -name   rrdtool  把路径写入下面的配置。

goaccess 英文变中文 access中文版改英文版_php_02

 

 

图1

如果配置正确,隔几分钟,我们的cacti就会有数据了,如图2,你也可以手动执行以下命令手动生成rrd图像

#/usr/bin/php /var/www/cacti/poller.php &>/dev/null

goaccess 英文变中文 access中文版改英文版_mysql_03

 

 

goaccess 英文变中文 access中文版改英文版_php_04

 

 

goaccess 英文变中文 access中文版改英文版_数据库_05

 

 

 

 

图2

五、    安装Spine

由于默认cmd.php来轮询数据,速度会很慢,特别是在监控节点比较多的情况下,cmd.php就更显不足了,因此我们采用Spine来轮询数据。cacti-spine是一个由C语言开发的,用于替代cmd.php的快速获取速度的引擎。

下载地址:http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz

安装spine之前请确保它所依赖的包net-snmp-devel、mysql-devel、openssl-devel都已安装完毕。

以下是安装步骤

#cd /opt/soft
#wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz
#tar zxvf cacti-spine-0.8.7e.tar.gz
#cd cacti-spine-0.8.7e
#./configure
#make && make install

编辑spine配置文件

#vi /usr/local/spine/etc/spine.conf

修改内容如下:

DB_Host         localhost
DB_Database     cacti
DB_User         cacti
DB_Pass         linuxpad
DB_Port         3306

将spine启动并设置开机自启动

#/usr/local/spine/bin/spine
#echo /usr/local/spine/bin/spine >>/etc/rc.d/rc.local

Cacti设置:

Cacti控制面板->配置->设置

路径:将Spine轮询器路径设置为/usr/local/spine/bin/spine

goaccess 英文变中文 access中文版改英文版_php_06

 

 

 

 

轮询器:轮询器类型选择Spine

到此为止,我们已经成功安装Spine轮询器并使用。

php add_device.php --list-snmp-queries  查看设备类型
php add_device.php --list-host-templates 查看主机模版
php add_device.php  --list-graph-templates  查看图形模版
php add_device.php --list-communities 查看共同体名
php add_device.php --list-snmp-fields   --host-id=405 查看主机snmp类型
php add_device.php   --list-trees #查看树的id
php add_device.php --list-hosts #  查看存在主机
php -q add_tree.php --list-trees #查看树的ID

 

Cacti如何监控Mysql

Cacti如何监控Mysql:Cacti和Nagios是现在比较用得多的网络监控软件。cacti偏重于网络流量,系统负载方面的监控。Nagios则比较注重于主机和服务的监控。但是他们详细的区别在哪儿呢。本文讲述的是Cacti如何监控Mysql

AD:

cacti监控mysql数据库的方法

环境:

Cactiez或者cacti主机:192.168.12.5

被监控mysql数据库主机:192.168.5.231

1. 安装监控插件

1 cd /opt  
2  
3 tar -xzvf mysql-cacti-templates-1.1.2.tar.gz  
4  
5 cp /opt/mysql-cacti-templates-1.1.2/ss_get_mysql_stats.php /var/www/html/scripts/  
6

其实里面我们要监控mysql用到的是:acti_host_template_x_db_server_ht_0.8.6i.xml和mysql_definitions.pl

其他则是监控Apache和Nginx的,接下来我们会介绍到,这里不再详细的讲了。

7 chown -R apache.apache /var/www/html/scripts  
8  
9 chmod -R 755 /var/www/html/scripts  
10

使用 http 访问 cacti主机 导入

11 /opt/mysql-cacti-templates-1.1.2/cacti_host_template_x_db_server_ht_0.8.6i.xml  
12  
13 http://192.168.12.5  
14

默认CactiEZ 和Cacti别是 admin admin

控制台 - 导入导出 - 模板导入 - 浏览

选中

保存

2. 配置cacti的mysql插件

修改

15 vi /var/www/html/scripts/ss_get_mysql_stats.php  
16  
17 $mysql_user = 'cacti';  
18  
19 $mysql_pass = 'cacti';  
20  
21 $cache_dir = "/tmp/cacti/cache/";  
22

这个账户和密码是 被监控端主机 给 Cacti主机 授权的 账户和密码

Cacti需要这个账户和密码去连接 被监控机 查询状态

23 mkdir -p /tmp/cacti/cache  
24  
25 chown -R apache.apache /tmp/cacti  
26  
27 chmod -R 755 /tmp/cacti  
28

设置 cacti 缓存目录在 /tmp/cacti/cache/ 并给予权限

3. 配置被监控端(192.168.5.231)的mysql 给 cacti 主机授权

29 mysql -uroot -p  
30  
31 grant process,super on *.* to 'cacti'@'192.168.12.5' identified by 'cacti';  
32  
33 exit  
34

grant process,super on *.* to '账户'@'Cacti主机IP地址' identified by '密码';此命令意义

只允许IP为 192.168.12.5 的主机 以账户 cacti 密码 cacti 去访问 本机数据

4. 在Cacti主机上(192.168.12.5) 监控Mysql

4.1 为主机添加mysql模块

控制台 - 管理 - 设备 - 选中之前创建好的主机

然后移到最下面的 添加图形模版 选中 Mysql相关模块 然后保存

4.2 为mysql模块创建图形

控制台 - 创建 - 创建图形 - 选中该主机 - 选中mysql模块 - 创建

4.3 插件mysql性能数据

监视器 - 选中该主机 - 查阅对应的mysql

完毕

-----一些数据库操作语句

35 mysqld_safe --user=mysql &  
36  
37 mysql -uroot -p  
38  
39 mysql -uroot -proot  
40  
41 grant ALL PRIVILEGES ON *.* to ‘root’@"%" identified by "root" WITH GRANT OPTION;  
42  
43 exit  
44  
45 grant select,insert,update,delete on cacti.* to ‘cacti’@”*”identified by "cacti";  
46  
47 exit  
48  
49 grant process,super on *.* to 'cacti'@'%' identified by 'cacti';  
50  
51 grant all privileges on cacti.* to ‘cacti’@"%" identified by "cacti";  
52

客户端开启Cacti访问本机mysql的权限

53 grant process,super on *.* to 'cacti'@'192.168.12.5' identified by 'cacti';  
54  
55 grant process,super on *.* to 'cacti'@'192.168.5.231' identified by 'cacti';  
56  
57 = = = = =  
58  
59 mysql -ucacti -pcacti -h 192.168.5.231