辉哥用的这种方法实现ZABBIX的MYSQL批量监控

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

不错的。集中和分布式,总是一对要解决的问题。应该可以再想更好的策略~~

 

 

一、方案需求及思路

因跑MySQL服务的服务器比较多,并且每台服务器可能会运行多个不同端口的数据库,如果单独手动一台一台去修改agent.conf,web添加监控,这样太麻烦,费时费力。此时有两种方案;其一:在每台跑mysql的服务器上部署一个自动发现脚本,修改agent.conf 并自定义KEY;其二:统一由一台服务器来监控所有服务器上所有运行的mysql服务。发现好像方案二比较更简便些。

方案二思路:

假设有A、B、C、D、E五台服务器,上面都跑有mysql,并且每台都跑有2+个mysql,在此假定由A服务器来监控所有服务器上mysql的状态。此时需要先把五台服务器的IP及其上mysql服务所占用的port 记录下来,统一写到一个文件里:eg:

  1. 192.168.12.14  3306 
  2. 192.168.12.14  3307 
  3. 192.168.12.15  3308 
  4. 192.168.12.15  3380 
  5. …… 

把该文件放到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文件

  1. # cat  /usr/local/zabbix/bin/mysqld 
  2. 172.16.8.250  3306 
  3. 172.16.8.250  3309 
  4. 172.16.8.252  3306 
  5. 172.16.8.252  3307 

注:本文均在8.250上实现监控252上的数据库及本地250的数据库

2、mysql赋权限

分别将四个数据库都赋给172.16.8.250主机以用户zabbix,密码111的访问,show global status权限。

3、编辑discovery_mysql.sh

  1. # cat  /usr/local/zabbix/bin/discovery_mysql.sh 
  2. #!/bin/bash 
  3. #mysql low-level discovery 
  4. #Script_name discovery_mysql.sh 
  5. res=`cat /usr/local/zabbix/bin/mysqld|grep $1|grep -v "^#"|awk '{print $2}'` 
  6. port=($res) 
  7. printf '{\n' 
  8. printf '\t"data":[\n' 
  9. for key in ${!port[@]} 
  10. do 
  11. if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then 
  12. printf '\t {\n' 
  13. printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n" 
  14. else [[ "${key}" -eq "((${#port[@]}-1))" ]] 
  15. printf '\t {\n' 
  16. printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n" 
  17. fi 
  18. done 
  19. printf '\t ]\n' 
  20. printf '}\n' 

赋执行权限:

  1. # chmod  +x  /usr/local/zabbix/bin/discovery_mysql.sh 

测试执行效果:

  1. # sh  /usr/local/zabbix/bin/discovery_mysql.sh 172.16.8.250 
  2. "data":[ 
  3. "{#MYSQLPORT}":"3306"}, 
  4. "{#MYSQLPORT}":"3309"} 

把上述结果粘贴到json检测网站,查看结果是否正确 http://jsonlint.com/

4、修改agentd.conf

开启include选项

  1. Include=/usr/local/zabbix/etc/zabbix_agentd/ 

添加mysql自动发现规则,自定义key

  1. # cat  /usr/local/zabbix/etc/zabbix_agentd/mysql_discovery.conf 
  2. #### $1 ==IP  $2 == PORT  $3==COMMAND 
  3. UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/bin/discovery.sh $1 
  4. UserParameter=mysql_stats[*],mysql -uzabbix -p111 -P$2 -h$1 -e "show global status"|grep "\<$3\>"|cut  -f2 
  5. UserParameter=mysql.alive[*],mysqladmin -uzabbix -p111 -h$1 -P$2 ping|grep -c alive 

5、测试:

重启zabbix_agentd,在zabbix server中通过zabbix_get测试zabbix mysql自动发现规则是否正确。

注:172.16.8.250是zabbix server,agent地址为127.0.0.1,请根据自己情况修改下面命令。

  1. # zabbix_get  -s 127.0.0.1  -k  zabbix_log_discovery[172.16.8.250] 
  2. "data":[ 
  3. "{#MYSQLPORT}":"3306"}, 
  4. "{#MYSQLPORT}":"3309"} 
  5. # 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即可。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
5月前
|
运维 监控 安全
【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
220 0
|
7月前
|
存储 缓存 监控
|
8月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
124 23
|
8月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
154 25
|
8月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
145 22
|
9月前
|
监控 安全 前端开发
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
155 9
|
9月前
|
监控 数据可视化 Java
zabbix全面的监控能力
zabbix全面的监控能力
360 7
|
10月前
|
监控 Java Shell
监控堆外第三方监控工具Zabbix
监控堆外第三方监控工具Zabbix
209 5
|
10月前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
363 7
|
10月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
299 1

推荐镜像

更多