• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Zabbix自动监控MySQL多实例配置

MySQL 彭东稳 6年前 (2018-03-28) 27611次浏览 已收录 0个评论

本人在工作中一般喜欢把MySQL、Redis、Memcached、MongoDB等数据库按照实例的方式对外提供服务。一般都是一台高配的服务器上开启多个实例给每个业务使用。而监控是重中之重,我自己也尝试了多种监控方式,但对我来说感觉最简单最快的就是使用zabbix了,灵活定义key。

由于我是多实例,所以就需要用到zabbix的自动发现功能(LLD)。基本处理方式就是:

1、写自动发现脚本。

2、写状态取值脚本。

3、添加配置文件。

4、添加权限。

5、配置zabbix web。

一、写自动发现脚本

执行脚本看输出结果(最好使用zabbix用户执行,才能看出效果):

我这个脚本中使用了sudo权限,zabbix用户在执行netstat时需要sudo权限。

另外就是,不同环境可能netstat看到的形式不同,根据自己的环境做awk切割即可。我这里写了两种,如果你有其他方式追加就行了,然后做一个聚合操作。

二、写状态取值脚本

MASTER

SLAVE

脚本很简单,需要传给脚本两个参数,一个是端口号,另一个是监控值。

三、添加配置文件

这里定义三个key,第一个key是用于自动发现的。第二个key是用于取不同实例(master)的状态值的,第三个key是用于取不同实例(slave)的状态值,传了两个参数,$1是端口号(从自动发现中获取的),第二个是传的参数。端口号和参数我会在zabbix页面配置传给mysql[*]这个key。

都配置完后就可以添加重启一下zabbix-agent了。

四、添加权限

上面说了,需要添加一个mysql_zabbix用户。

这几个权限是最低权限了,super是用来在从库执行”show slave stauts;”命令的。

需要给zabbix用户添加sudo权限。

另外需要注意的是,普通用户zabbix默认环境变量有如下这些:

所以你要确认你所有的执行程序都在这些路径下,不然zabbix是获取不到值的。看我的mysql客户端路径:

很多人喜欢把MySQL安装在其他路径,比如/usr/local/mysql下,然后使用export把执行路径追加到$PATH变量后,那么如果这样的话,zabbix就无法获取到值的,所以注意不要栽在这个上面。做一个软连接就可以解决了。

使用zabbix用户执行看是否正常。

然后获取一个值,测试是否运行正常:

如果自动发现没有问题,但是获取不到值,就要判断是否是相关命令的环境变量有问题,有一些环境变量路径zabbix。

五、配置zabbix web

前期工作都做完了,下面就可以配置zabbix web了。

首先创建一个模板(Template Linux MySQL Master Discovery),然后在模板中创建一个自动发现规则(Linux MySQL Discovery)。

Zabbix自动监控MySQL多实例配置

在这个自动发现规则内创建多个item,我这里就给一个样例。

Zabbix自动监控MySQL多实例配置

这个item包括Name定义、Key怎么定义、Type选项,Application定义,以及保存时间;最后一个比较重要的就是Store value,常用的有两种,一种是取出来的值是什么就存储为什么,第二种就是取每秒钟的差值(本次取值减去上次取值的差除以60,得到每秒钟的速率),这是因为我们从MySQL状态变量取来的值有些是累积值,利用zabbix这个功能就可以得到比如每秒钟的QPS/TPS等。也不是说每个值都需要这么取每秒速率,比如MySQL连接相关的状态变量就需要当前值。

创建完item后,接着就可以创建trigger了,比如下面我创建一个检查MySQL是否宕机的trigger。

Zabbix自动监控MySQL多实例配置

更多关于zabbix的配置还是需要自己慢慢摸索。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (10)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!