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

[经验分享] 使用 zabbix 自动发现监控 MySQL

[复制链接]

尚未签到

发表于 2018-1-1 21:47:51 | 显示全部楼层 |阅读模式
介绍
  使用 zabbix 的 low-level 自动发现功能完成单主机多端口的监控, 详见low_level_discovery, 整体上监控类似 percona 的 zabbix 监控插件, 不过使用 mymonitor.pl 替换了脚本 ss_get_mysql_stats.php, 而且配置有点不同.
  具体代码及配置详见: zabbix_mysql

1. 结构说明:
  

zabbix_mysql/  
|-- README.md
  
|-- bin
  
|   |-- get_mysql_stats_wrapper.sh              # 对 mymonitor.pl 运行结果的一个封装脚本, 默认 5 分钟运行一次
  
|   |-- mymonitor.pl                            # 等同 ss_get_mysql_stats.php 脚本
  
|   `-- mysql_port.pl                           # 自动发现 MySQL 端口的脚本, 返回 json 格式的输出
  
|-- install.sh                                  # 安装脚本
  
`-- templates
  |-- userparameter_discovery_mysql.conf      # zabbix_agent 配置参数
  `-- zabbix_mysql_multiport.xml              # zabbix_server 端模板
  

  mymonitor.pl 脚本依赖以下模块:
  

perl-DBI  

perl-DBD-mysql  

  监控需要的权限包括: PROCESS, SUPER, REPLICATION SLAVE, 在 mysql_port.pl 脚本中通过 netstat 命令获取运行 MySQL 的端口, 脚本以 zabbix 用户(或普通用户)启动, 为避免权限问题, 脚本 install.sh 默认执行 chmod +s /bin/netstat 命令.
  mymonitor.pl 脚本默认以 monitor/monitor 用户及口令的方式连接 MySQL 获取状态, 可以在脚本的初始处修改默认密码, 或者在运行时指定--user和--password相关参数信息, 也可以在 /home/mysql/.my.cnf 指定用户信息, 详细可参见 perldoc mymonitor.pl
  get_mysql_stats_wrapper.sh 脚本默认读取 mymonitor.pl 生成的文件以响应 zabbix 的请求, 默认5分钟一次; 同时因为需要频繁(默认1分钟)检测 slave 运行状态, 需要提供 MySQL 登录信息, 以便 slave 的检测.

2. 安装说明
  在 agent 端操作:
  

# git clone https://github.com/chenzhe07/zabbix_mysql.git /usr/local/zabbix_mysql  
# bash /usr/local/zabbix_mysql/install.sh 192.168.1.2
  

  192.168.1.2 为内网 ip 地址, 这里考虑到可能存在多个内网ip, 所以没有自动获取, 需要用户手动添加.
  在 server 端操作:
  

import templates/zabbix_mysql_multiport.xml using Zabbix UI(Configuration -> Templates -> Import),  
and Create
/edit hosts by assigning them “MySQL” group and linking the template “MySQL_zabbix” (Templates tab).  

  导入模板, 并将模板加到待监控的机器里.

3. 测试
  

# perl  mymonitor.pl --host 10.0.0.10 --port 3300 --items hv  
hv:
36968  
#
perl  mymonitor.pl --host 10.0.0.10 --port 3300 --items kx  
kx:
1070879944  

  
# php ss_get_mysql_stats.php
--host 10.0.0.10 --port 3300 --items hv  
hv:
36968  
# php ss_get_mysql_stats.php
--host 10.0.0.10 --port 3300 --items kx  
kx:
1070911408  

  
# zabbix_get
-s 10.0.0.10 -p 10050 -k "MySQL.Bytes-received[3300]"  
472339244134
  


其它特性
  较新的版本增加了 innodb 事务, 锁, 长语句运行检测:
  

item                       throttle  
max_duration
if > 100s, then trigger an alarm  
waiter_count
if > 10, then trigger an alarm  
idle_blocker_duration
if > 200s, then trigger an alarm  

  如下测试:
  

# zabbix_get -s cz-test2 -p 10050 -k "MySQL.max_duration[3301]"  
max_duration:longest transaction active seconds: max
time: 18, thread_id: 4838781, user: root@10.0.21.5:59980  

运维网声明 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-430653-1-1.html 上篇帖子: 使用zabbix proxy监控内网主机 下篇帖子: zabbix利用api批量添加item,并且批量配置添加graph
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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