设为首页 收藏本站
查看: 1160|回复: 0

[经验分享] 辉哥用的这种方法实现ZABBIX的MYSQL批量监控

[复制链接]

尚未签到

发表于 2015-9-9 10:36:30 | 显示全部楼层 |阅读模式
  不错的。集中和分布式,总是一对要解决的问题。应该可以再想更好的策略~~
  
  
  一、方案需求及思路
  因跑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[@]}
  • do
  • 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"
  • fi
  • 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 alive
  5、测试:
  重启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、添加主机:
  
DSC0000.jpg
  链接模版:
DSC0001.jpg
  
  注:因模版定义的更新时间为3600s,如需快速看到效果,可先修改模版自定义规则的“Interval”更新时间改为60,之后便可再”last data”中看到数据。
  监控172.16.8.252,只需要创建主机,将visable name 的值172.16.8.250 改为172.16.8.252即可。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-111389-1-1.html 上篇帖子: Centos install zabbix 下篇帖子: /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh: line 19: mysql: comm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表