配置cacti用来监控mysql

发布时间:2020-10-19编辑:脚本学堂
配置cacti用来监控mysql

1. 安装监控插件

复制代码 代码如下:
wget http://mysql-cacti-templates.googlecode.com/files/mysql-cacti-templates-1.1.2.tar.gz
tar -xzvf mysql-cacti-templates-1.1.2.tar.gz
cp mysql-cacti-templates-1.1.2/ss_get_mysql_stats.php /var/www/html/cacti/scripts/
chown -R cacti.cacti /var/www/html/cacti/scripts
chmod -R 755 /var/www/html/cacti/scripts

使用 http 访问 cacti主机 导入 mysql-cacti-templates-1.1.2/cacti_host_template_x_db_server_ht_0.8.6i.xml
http://192.168.18.131:8000/cacti
默认CactiEZ 账户和密码分别是 admin admin
控制台 - 导入导出 - 模板导入 - 浏览
选中 cacti_host_template_x_db_server_ht_0.8.6i.xml
保存

2. 配置cacti的mysql插件
修改 ss_get_mysql_stats.php
vi /var/www/html/scripts/ss_get_mysql_stats.php
 

复制代码 代码如下:
$mysql_user = 'cacti';
$mysql_pass = 'cacti';

这个账户和密码是 被监控端主机 给 Cacti主机 授权的 账户和密码
Cacti需要这个账户和密码去连接 被监控机 查询状态

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

复制代码 代码如下:
mysql -uroot -p
grant process,super on *.* to 'cacti'@'192.168.0.3' identified by 'cacti';
flush privileges;
grant process,super on *.* to '账户'@'Cacti主机IP地址' identified by '密码';
 

此命令 意义
只允许IP为 192.168.0.3 的主机 以 账户 cacti 密码 cacti 去访问 本机数据

4. 在Cacti主机上 监控Mysql

4.1 为主机添加mysql模块
控制台 - 管理 - 设备 - 选中之前创建好的主机
然后移到最下面的 添加图形模版 选中 Mysql相关模块 然后保存

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

4.3 插件mysql性能数据
监视器 - 选中该主机 - 查阅对应的mysql

完毕

注意:这个获取数据的php程序有bug,将SQL部分需要做特殊处理,会出现如下报错:
Error executing 'SELECT CONCAT('', ((1 << 32) + 0)) AS innodb_transactions, CONCAT('', (((1 << 32) + 0) - ((1 << 32) + 0))) AS unpurged_txns, CONCAT('', ((5 << 32) + 1)) AS log_bytes_written, CONCAT('', ((5 << 32) + 1)) AS log_bytes_flushed, CONCAT('', (((5 << 32) + 1) - ((5 << 32) + 1))) AS unflushed_log, CONCAT('', 219133+13703) AS spin_waits, CONCAT('', 450719) AS spin_rounds, CONCAT('', 7353++) AS os_waits': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AS os_waits' at line 1

修改sql部分的代码,加了个trim函数处理结尾的+号。
更改成如下解决问题:
 

复制代码 代码如下:
$sql = "SELECT CONCAT('', $txn) AS innodb_transactions, "
. "CONCAT('', ($txn - $prg)) AS unpurged_txns, "
. "CONCAT('', $lsn) AS log_bytes_written, "
. "CONCAT('', $flu) AS log_bytes_flushed, "
. "CONCAT('', ($lsn - $flu)) AS unflushed_log, "
. "CONCAT('', " . trim(implode('+', $spin_waits),'+'). ") AS spin_waits, "
. "CONCAT('', " . implode('+', $spin_rounds) . ") AS spin_rounds, "
. "CONCAT('', " . trim(implode('+', $os_waits),'+') . ") AS os_waits";