辉哥用的这种方法实现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[@]}
- 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、添加主机:

链接模版:

注:因模版定义的更新时间为3600s,如需快速看到效果,可先修改模版自定义规则的“Interval”更新时间改为60,之后便可再”last data”中看到数据。
监控172.16.8.252,只需要创建主机,将visable name 的值172.16.8.250 改为172.16.8.252即可。
辉哥用的这种方法实现ZABBIX的MYSQL批量监控的更多相关文章
- zabbix使用mysql模板监控mysql
出现监控项访问拒绝的信息 解决方法是: 在 mysql的 my.cnf 配置中增加 [mysql] user=zabbix password=zabbix [mysqladmin] user=zabb ...
- Zabbix如何实现批量监控端口状态
引言 ------------------------------------------------------------------------------------------------- ...
- zabbix系列~mysql进行监控
一 简介:zabbix进行数据库监控 二 目的:采用percona进行插件式安装监控 三 安装 环境 zabbix_agent 步骤 yum -y install php php-mysql yum ...
- zabbix布置mysql主从监控
一.下载安装zabbix服务器端 网址:https://www.cnblogs.com/carriezhangyan/p/10818513.html 二.下载安装zabbix客户端,客户端上要有mys ...
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- 通过zabbix自带模板监控windowsPC机器
通过zabbix自带模板监控windowsPC机器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 相信有很多 ...
- 【Linux】Zabbix + MPM + msmtp + mutt 监控MySQL + 邮件报警
Zabbix部署参考博文 http://blog.sina.com.cn/s/blog_5611597901017oe0.html MPM安装配置参考博文和MPM官网下载地址 http://blog ...
- zabbix实现mysql数据库的监控(四)
前面介绍的内容都是用第三方开发好的插件进行mysql监控的,可能有些我们关心的监控内容并不在其中,这时一种常用的方法就是定义我们自己的脚本并将它整合到zabbix中,从而在原有监控的基础上进行有力的补 ...
- zabbix实现mysql数据库的监控(一)
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问 ...
随机推荐
- [RxJS] Transformation operator: scan
All of the combination operators take two or more observables as input. These operators may also be ...
- 为Android GridView 设置行背景
经常有这样的需求,你的功能图标要像一个个物品,摆放在书架上,像这样: 我的思路比较简单,重载GridView,在他绘制子视图前,先把背景绘制完成 1 2 3 4 5 6 7 8 9 10 11 12 ...
- java面试32问
第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements ...
- 实践过配置成功的VNC安装配置
VNC安装步骤说明那个 1.安装图形界面 #yum install tigervnc-server tigervnc 2.启动VNCServer #vncserver 对应的关闭图形界面的命令 ...
- 关于URL 解码, 编码
由于近期客户需要用到CA认证,此CA认证采用的是URL方式出传值 使用指定的编码对象将 URL 编码的字符串转换为已解码的字符串. 编码个人理解就是将某字符串以某种方式储存起来,而解码则以其编码格式得 ...
- 监听polygon变化
Polygons are made of Paths which are just MVCArrays (in this case, they're a list of LatLng objects) ...
- cookie防篡改
概述: 除了 session 外,一般不会在客户端的 cookies 里保存过于重要的凭据,但电商应用有时候不可避免地存储了一些敏感数据到客户端,当然不希望被篡改. 目的: 让服务器端能识别cooki ...
- power desinger 学习笔记<四>
Tools <display preferences> <content table> <advanced> Columns 选择放大镜图标 进入窗口 选择要顺序显 ...
- power desinger 学习笔记三<批量执行sql语句>
使用sql脚本导入表结构,直接 附带表的 约束.列的注释.真的可以哦 sql语句如下: create table test01 ( ID VARCHAR2(10 ...
- 实现Bootstrap Carousel Fade Transition 淡入淡出效果
html代码: <div id="carousel" class="carousel slide carousel-fade" data-ride=&qu ...