mysql cacti_使用Cacti监控MySQL

本文将概述一些自己在使用中的问题(并不会给出step by step的使用介绍),以供参考,详细信息请留言。

既然别人的轮子已经很好用了,我自己就不发明了。使用Cacti可以较为快速搭建一个MySQL性能监控平台:

4094788239_470a24ec4d_o.jpg

Cacti是一个用于监控网络流量、主机负载的工具,并可以将这些采集到的数值信息转换为图形展示。Cacti使用RRDtool实现数据存储和绘图,可以方便、美观的实现数据图形化。通过给Cacti增加MySQL的监控模板,就能够实现对MySQL相关参数的监控和图形展示。

一、 安装中的问题

Cacti的安装是一个复杂的工程,需要安装PHP(需要某些模块)、httpd、RRDtool等。

1. php缺少某些模块

如果你用的是默认安装php,你可能甚至连mysql模块都没有,这时候,你需要给你php安装上一些需要的模块。例如:mysql,curl等。

2. RRDtool版本

Cacti使用RRDtool存储数据、绘制图形。这里需要注意的是,在安装好RRDtool后,必需要到Cacti的后台,填写RRDtool的相关配置,例如安装路径、版本等。

二、 使用中的问题

1. 数据接近0的时候,显示奇怪的数据

如下图,在数据接近于0的时候我们会看到数据显示的是100m:

4088762467_dd49371a7c_o.jpg

事实上,这里的单位 m 表示微,即需要除以1000。100m表示0.1。

Cacti中使用如下单位:M(兆)、K(千)、m(微)。

2. 日志中的奇怪错误

在Cacti运行一段时间后,我在Cacti的log中看到如下错误:CMDPHP: Poller[0] Host[16] DS[25] WARNING: Result from CMD not valid. Partial Result: U…… 貌似这是一个bug。将Poller Type改为spine可以避免这个问题。

3. 采集到异常数据

Cacti有时会采集到一些异常的数据,例如,采集到一些非常大(比正常数据大100倍)。这时候,绘制图形的时候,会看到纵坐标的比例会被这些数据拉大到K甚至M,以至于正常数据已经无法观察了。

导致这种异常数据的原因有很多,这里给出两个剔除这些异常的办法

先用rrdtool dump出RRA文件中的数据,删除异常数据,然后使用rrdtool restore数据

修改Cacti模板中的Data Source模板,设置一个合理的最大值(Maximum Value)

4. 采集使用的MySQL用户需要什么权限

因为需要执行SHOW /*!50002 GLOBAL */ STATUS、SHOW SLAVE STATUS、SHOW /*!50000 ENGINE*/ INNODB STATUS等权限,所以一般需要如下权限设置:

GRANT PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'cacti'@'%'

需要注意的是,不需要ALL PRIVILEGES。

三、 一些改进

1. 修改采集、展示数据的步长(interval)

默认下,Cacti是每隔五分钟采集一次数据,并存放到rra文件中,现在希望修改为每隔一份采集、展示相关数据。我们需要做如下修改:

选择console=>Settings=>Poller,把其中的Poller Interval和Cron Interval改为Every Minute。

修改crontab中的采集脚本为*/1 * * * * php /www/cacti/poller.php > /dev/null 2>&1

最后,你还需要修改Data Template中的step值,将其修改为60

2. 批量增加Device

如果待监控的主机数量很多的时候,一台台添加Device是很痛苦的,可以通过编写一些脚本来实现批量增加Device。

这里提供一个编写批量脚本的思路:通过编写一个页面接收添加Device时,需要Post的表单的数据,然后使用curl模拟表单提交。实践证明这种方式是可行的,事实上,我就使用这样的脚本来批量添加Device的。

3. 我的主机端口不是3306

使用mysql-cacti-templates模板的时候,如果你的端口不是3306的话,mysql-cacti-templates中的脚本是无法正确的连接目标主机的MySQL的。这时候,只需对模板中的采集脚本做一个小小的修改就可以了。大约在脚本的226行下面增加如下内容

$conn = @mysql_connect($options['host'], $user, $pass);

//Modified by orczhou

//Now we'll try some other Ports.

if ( !$conn ) {

$conn = @mysql_connect($options['host'].":3307", $user, $pass);

}

这就是我在使用过程中遇到的一些问题与解决,你有什么好的经验呢?分享一下吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值