1、脚本下载以及设置
tar -xzvf mysql-cacti-templates-1.1.2.tar.gz
cd mysql-cacti-templates-1.1.2
cp ss_get_mysql_stats.php /usr/local/cacti/scripts
可以看到里面有多个监控项目,报告监控apache和nginx.我这只测试mysql,mysql相关的就2个文件:
模板文件:cacti_host_template_x_db_server_ht_0.8.6i.xml
插件:ss_get_mysql_stats.php
修改ss_get_mysql_stats.php 文件 第30行
$mysql_user = 'cacti';
$mysql_pass = '123456';
$cache_dir = "/usr/local/cacti/cache/";
设置准备监控的数据库的账户相关信息
chown -R vhost.vhost /usr/local/cacti/cache/
chmod 777 -R /usr/local/cacti/cache/
默认在获取的数据/tmp/下,会有cacti不能读取的情况。所以放在cacti目录来。

2、创建监控Mysql需要的账户以及权限
配置MySQL服务器,让cacti所在机器能够访问MySQL服务器的状态信息,必须拥有”process”权限。如果要监控InnoDB状态,还必须有”SUPER”权限。
创建一个数据库cacti;
Create database cacti;
grant process,super on *.* to 'cacti'@'192.168.0.10' identified by '123456';
grant all privileges on cacti.* to 'cacti'@'192.168.0.10' identified by '123456';

3、模板导入
在cacti管理界面(Import Templates)导入
cacti_host_template_x_db_server_ht_0.8.6i.xml。

4、添加设备
创建Graph。在”Consol”------>”Devices”,然后选择要添加mysql监控的主机,在”Associated Graph Template”中添加想要监控MySQL状态的”Graph Templates”(如X MySQL Connections GT模板)。并点击最上面的”Create Graphs for this Host”链接,在Graph Templates的选择框中选择X MySQL Connections GT,然后点击Create按钮,出现以下WEB页。

5、监控mysql几种没有数据的总结:
(1)服务端无法访问目标主机的mysql,这个问题是我以前遇到的,也拿到这里说一下,第一步中有修改”ss_get_mysql_stats.php”这个文件,修改后的里边的账号和密码就是服务端用来登录客户端mysql的,然后获取到mysql的信息。所以客户端必须要有cacti这个账号,并且密码也要一样,还要给这个账户权限。
(2)这次遇到一个更奇怪的问题,服务端可以登录到客户端的mysql,但是监控mysql的图形就是没有数据。
1、找到cacti是用什么命令来获取到客户端mysql的信息的。
点击:”console”-------->” Data Input Methods”,在这个页面下找到对应的mysql模块,mysql的监控很多,随便先选一项看看:


红框的命令就是用来获取客户端mysql的数据的,可以看到里边的命令是:<path_php_binary> -q <path_cacti>/scripts/ss_get_mysql_stats.php --host <hostname> --items dz,e0 --user <username> --pass <password> --port <port>
我按照这个命令试一下看能不能获取到数据,结果提示错误,没有--port这个选项。

,接着就去查看ss_get_mysql_stats.php这个php脚本,发现确实没有—port这一项,去掉—port这个选项之后能过顺利的获取到数据.

由此可cacti监控mysql获取不到数据是因为获取的命令不对,因为cacti的恢复的,他程序目录下的scripts/ss_get_mysql_stats.php这个文件是原来配置好的,我没有改动,但是需要的cacti_host_template_x_db_server_ht_0.8.6i.xml这个文件,在服务器没有,就在网上下载了一个,然后去查看和这个.xml文件配套的ss_get_mysql_stats.php,发现这个程序里边确实有—port选项。然后我把所以mysql监控项的—port的选项删掉了,之后数据就有了。