辉哥用的这种方法实现ZABBIX的MYSQL批量监控
一、方案需求及思路
因跑MySQL服务的服务器比较多,并且每台服务器可能会运行多个不同端口的数据库,如果单独手动一台一台去修改agent.conf,web添加监控,这样太麻烦,费时费力。此时有两种方案;其一:在每台跑mysql的服务器上部署一个自动发现脚本,修改agent.conf 并自定义KEY;其二:统一由一台服务器来监控所有服务器上所有运行的mysql服务。发现好像方案二比较更简便些。
方案二思路:
假设有A、B、C、D、E五台服务器,上面都跑有mysql,并且每台都跑有2+个mysql,在此假定由A服务器来监控所有服务器上mysql的状态。此时需要先把五台服务器的IP及其上mysql服务所占用的port 记录下来,统一写到一个文件里:eg:
192.168.12.14 3306 192.168.12.14 3307 192.168.12.15 3308 192.168.12.15 3380把该文件放到zabbix 目录下的某一个目录,并赋权限,再写一个json的脚本来调取此文件,并且需要在执行脚本文件的时候来进行IP传值并输出该IP上所有的port。
添加自定义key。其中需要定义一个自动发现的key,然后定义一个根据IP查询此服务器上所有端口的mysql状态的key。重启zabbix_agentd,通过zabbix_get来获取参数看看是否正常。
配置web界面。在web配置界面中,创建一个主机,该主机的ip指向A服务器的IP,切该服务器的[HOST.NAME] 指向所要监控mysql的IP,([HOST.NAME]一般指的是”Visable name”),把监控mysql的服务器都指向一个组,然后调用自动发现mysql模版。之后在创建剩下的几台服务器即可。
此方案也不是一个很好的方案,但相对来说还是不错的,以后若有新增加的mysql服务器,只需要修改写有IP和PORT的列表文件即可,不需要重启agent。
二、配置Agent:
1、编辑mysqld文件
# cat /usr/local/zabbix/bin/mysqld 172.16.8.250 3306 172.16.8.250 3309 172.16.8.252 3306 172.16.8.252 3307注:本文均在8.250上实现监控252上的数据库及本地250的数据库
2、mysql赋权限
分别将四个数据库都赋给172.16.8.250主机以用户zabbix,密码111的访问,show global status权限。
3、编辑discovery_mysql.sh
# cat /usr/local/zabbix/bin/discovery_mysql.sh #!/bin/bash #mysql low-level discovery #Script_name discovery_mysql.sh res=`cat /usr/local/zabbix/bin/mysqld|grep $1|grep -v "^#"|awk {print $2}` port=($res) printf {\n printf \t"data":[\n for key in ${!port[@]} if [[ "${#port[@]}" -gt 1 "${key}" -ne "$((${#port[@]}-1))" ]];then printf \t {\n printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n" else [[ "${key}" -eq "((${#port[@]}-1))" ]] printf \t {\n printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n" done printf \t ]\n printf }\n赋执行权限:
# chmod +x /usr/local/zabbix/bin/discovery_mysql.sh测试执行效果:
# sh /usr/local/zabbix/bin/discovery_mysql.sh 172.16.8.250 "data":[ "{#MYSQLPORT}":"3306"}, "{#MYSQLPORT}":"3309"}把上述结果粘贴到json检测网站,查看结果是否正确 http://jsonlint.com/
4、修改agentd.conf
开启include选项
Include=/usr/local/zabbix/etc/zabbix_agentd/添加mysql自动发现规则,自定义key
# cat /usr/local/zabbix/etc/zabbix_agentd/mysql_discovery.conf #### $1 ==IP $2 == PORT $3==COMMAND UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/bin/discovery.sh $1 UserParameter=mysql_stats[*],mysql -uzabbix -p111 -P$2 -h$1 -e "show global status"|grep "\ $3\ "|cut -f2 UserParameter=mysql.alive[*],mysqladmin -uzabbix -p111 -h$1 -P$2 ping|grep -c alive5、测试:
重启zabbix_agentd,在zabbix server中通过zabbix_get测试zabbix mysql自动发现规则是否正确。
注:172.16.8.250是zabbix server,agent地址为127.0.0.1,请根据自己情况修改下面命令。
# zabbix_get -s 127.0.0.1 -k zabbix_log_discovery[172.16.8.250] "data":[ "{#MYSQLPORT}":"3306"}, "{#MYSQLPORT}":"3309"} # zabbix_get -s 127.0.0.1 -k mysql_stats[172.16.8.250,3306,Uptime]可正确取得数据便为正确,
转载请注明原文出处:http://www.minunix.com/2014/04/zabbix_low_discovery_mysql_01/
三、Zabbix WEB 添加主机
1、导入模版discovery_mysql.xml
2、添加主机:
链接模版:
注:因模版定义的更新时间为3600s,如需快速看到效果,可先修改模版自定义规则的“Interval”更新时间改为60,之后便可再”last data”中看到数据。
监控172.16.8.252,只需要创建主机,将visable name 的值172.16.8.250 改为172.16.8.252即可。
统一观测丨如何使用 Prometheus 监控 MySQL 数据库的瓶颈往往也是整个系统的瓶颈,其重要性不言而喻,所以对于 MySQL 的监控必不可少,及时发现 MySQL 运行中的异常,可以有效提高系统的可用性和用户体验。因此,观测 MySQL 关键指标,实时关注数据库的可用性与性能,成为运维团队的重要任务。
ELK搭建(六):搭建mysql性能、执行效率监控平台 mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。 那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等。
ELK搭建(四):监控mysql慢查询、错误日志日志 因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。 普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。
相关文章
- Mysql:is not allowed to connect to this MySQL server
- 【MySql】MySQL Replication Fatal Error 1236
- 用Navicat连接mysql报错:2003-Can't connect to MySql server on '10.100.0.109'(10039)
- 统一观测丨如何使用 Prometheus 监控 MySQL
- navcat导入mysql.sql出现:2006, 'MySQL server has gone away'
- mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法
- MYSQL随机抽取查询 MySQL Order By Rand()效率问题
- MySQL · 捉虫动态 · 删除索引导致表无法打开
- mysql之select,insert,delete,update
- mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法
- MySQL 无法满足查询性能?北明天时选择 TDengine 实现热网监控和能源分析
- No module named 'MySQLdb' python3.6 + django 1.10 + mysql 无法连接
- nagios 实现Mysql 主从同步状态的监控
- 上Mysql com.mysql.jdbc.StatementImpl$CancelTask内存泄漏问题和解决方法
- mysql如何添加一个表的外键
- Mysql的mysqldump详解 mysql数据库备份和导入
- Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
- mysql_10 _ MySQL为什么有时候会选错索引?
- MySQL的分区、分表、集群
- MySQL基本概念、图形管理工具、常见DOS命令
- prometheus监控mysql服务器(八)