使用Zabbix监控MySQL服务器方法
从Zabbix 2.2开始,Zabbix官方已经支持了MySQL监控,但是MySQL监控默认是不可用的,需要经过额外的设置才可以使用。Kaijia将Zabbix换到了新的服务器时候性能绰绰有余,于是决定充分发挥剩余的内存和SSD性能,把MySQL、Apache、PHP-FPM等的监控也开起来。
Google了一下后找到了一篇《How to Monitor MySQL using the new Zabbix Template App MySQL》,大部分内容都可用,可惜这位老兄最后的步骤写错了。。。于是参照此篇文章Kaijia整理了一下使用Zabbix监控MySQL服务器的方法。
首先要确定Zabbix服务有MySQL的监控模板。MySQL模板默认包含在了Zabbix 2.2中,但如果是从较旧版本的Zabbix升级而来的话可能这个模板并没有导入。这种情况的话需要访问Zabbix官方的Wiki页面下载此模板Template_App_MySQL-2.2.0.xml。然后在Zabbix服务器的前端Web界面的组态->模板页面中选择汇入(各种神翻译),在新的页面中导入下载的模板文件。
接下来就是客户端的设置了,首先要建立一个MySQL帐户用于Zabbix Agent登录获取MySQL状态,这个帐户不需要任何权限,因此实质上可以使用debian-sys-maint也是可以的,另外如果在被监控的机子上本身就安装有Zabbix Server,那么可以直接使用zabbix帐户(密码可以在/etc/zabbix/zabbix_server.conf中找到)。当然可以登录被监控端的MySQL新建一个帐户:
1 2 |
GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY '密码'; FLUSH PRIVILEGES; |
设置完帐户之后在被监控端新建/etc/zabbix/.my.cnf以提供Zabbix Agent访问数据库,内容类似如下:
1 2 3 4 5 6 7 8 9 10 11 |
# Zabbix Agent [mysql] host = localhost user = zabbix password = 密码 socket = /var/run/mysqld/mysqld.sock [mysqladmin] host = localhost user = zabbix password = 密码 socket = /var/run/mysqld/mysqld.sock |
保存此文件然后修改/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf,这个文件用于制定Zabbix Agent如何获取MySQL数据,我们需要将所有的/var/lib/zabbix修改为当前.my.cnf文件的路径/etc/zabbix。设置完成之后保存并重启Zabbix Agent:
1 |
service zabbix-agent restart |
6月9日更新:Ubuntu 14.04官方源中提供的zabbix-agent包不会直接在/etc/zabbix/zabbix_agentd.d/中释放userparameter_mysql.conf,你需要手动运行以下命令将参考的userparameter_mysql.conf复制到该目录下:
1 |
cp /usr/share/doc/zabbix-agent/examples/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/ |
这样我们在被监控端的设置就完成了,现在只需要在Zabbix前端将MySQL模板添加到需要监控的主机项中就可以开始监控了。
没有这个文件 userparameter_mysql.conf,也没有example文件夹,求教
请到 /usr/share/doc/zabbix-agent/ 或者 /usr/share/doc/zabbix/ 文件夹下面找找看,不同版本的Linux路径都不一样的。仍然找不到的话可以去您使用的Linux版本官方的库里面去下载对应的DEB或者RPM包,解开来看一下就能找到路径了。
这篇是基于linux的,做过在windows平台怎么监控mysql吗?做了几次一直都不成功呢,网上也没有什么资料,能给点指导吗?
这个我也没有试过,我考虑大概有这两种方法:
1. 纯本机实现:比较麻烦,要改动相关的命令。把userparameter_mysql.conf(如果Zabbix Windows客户端没有带的话可以在这里下载)里面相关的路径设置成Windows放置.my.cnf的文件夹;在PATH里面添加mysql和mysqladmin两个命令;UserParameter里面有一个Unix的echo命令要替换成Windows的命令行输出。
2. 依赖其他Linux系统:相比上面的方法,这种方法比较简单。另外找一台Linux服务器,在上面建Zabbix Agent,把.my.cnf里面的HOST IP指定到Windows服务器上,然后MySQL建一个远程访问许可。这样相当与用Linux服务器读取Windows上的MySQL运行数据,这样就不需要对userparameter_mysql.conf进行改动了。
/var/run/mysqld/mysqld.sock
能讲一下这个的用途吗?我那里没有这个文件!
这个地址是Debian系统的。在Red Hat系列例如CentOS下面应该是/var/lib/mysql/mysql.sock。
mysqld.sock是MySQL进程的套接字,就相当于API。利用这种Sockets可以实现本地高效的数据连接。可以参考维基百科或者百度百科的介绍。
和你操作一样的 但是在监控项目配置里面 mysql监控状态为不支持 提示
Received value [ERROR 1045 (28000): Access denied for user ‘zabbix’@’localhost’ (using password: NO)] is not suitable for value type [Numeric (float)]