zabbix企业应用之Mysql主从监控

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介:

给大家介绍了如何通过固定端口监控mysql(地址http://dl528888.blog.51cto.com/2382721 /1346590)与使用lld监控mysql性能(地址http://dl528888.blog.51cto.com/2382721 /1357713),现在我在给大家介绍一下如何监控mysql主从状态的。

下面是监控效果图:

1、Mysql Slave Status of 3306 PortwKiom1O2BmGwXUTQAAM_7bxz6oY462.jpg这 个也是使用low level discovery进行监控,并且已经跟之前的lld监控mysql的模板合成了一个模板(所以我本文就只介绍mysql主从状态,其他的性能,这样使用 一个模板既能监控mysql性能,又能自动的监控mysql主从状态,如果io或者sql任何一个状态不为yew,就会报警。

如何实现:

一、客户端

1、监控内容的json化

在客户端里,需要把监控的内容json化展示,然后服务端可以通过正则来过滤出结果

下面在是我的json监控mysql的json展示

wKioL1L5dd6hILXmAAB_Ll1Q_6E480.jpg

脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
#Fucation:mysql low-level discovery
#Script_name mysql_low_discovery.sh
mysql() {
             port=($( sudo  netstat  -tpln |  awk  -F  "[ :]+"  '/[m]ysql/ && /0.0.0.0/ {print $5}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt 1 &&  "${key}"  - ne  "$((${#port[@]}-1))"  ]]; then
               socket=` ps  aux| grep  ${port[${key}]}| grep  - v  grep | awk  -F  '='  '{print $10}' | cut  -d  ' '  -f 1`
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"
                      else  [[  "${key}"  - eq  "((${#port[@]}-1))"  ]]
               socket=` ps  aux| grep  ${port[${key}]}| grep  - v  grep | awk  -F  '='  '{print $10}' | cut  -d  ' '  -f 1`
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
$1

把此文件存放到/usr/local/zabbix/bin里,然后给与755权限,并修改用户与组为zabbix,同时允许zabbix用户无密码运行netstat

1
echo  "zabbix ALL=(root) NOPASSWD:/bin/netstat" >> /etc/sudoers

#Disable requiretty

1
sed  -i  's/^Defaults.*.requiretty/#Defaults    requiretty/'  /etc/sudoers

不关闭的话,会无法获取数据,并且zabbix日志里报

wKioL1L5lG7DIj1bAADTHBgUAt4491.jpg

2、修改zabbix_agentd.conf文件

在zabbix_agentd.conf最后添加以下内容

1
2
3
UserParameter=zabbix_low_discovery[*], /bin/bash  /usr/local/zabbix/bin/mysql_low_discovery .sh $1
UserParameter=mysql_stats[*],mysql -h localhost -P $1 -uzabbix -pzabbix -e  "show global status" | grep  "\<$2\>" | cut   -f2
UserParameter=mysql_stats_slave[*],mysql -h localhost -P $1 -uzabbix -pzabbix  -e  "show slave status\G" | grep  "\<$2\>" | awk  '{if($NF=="Yes") {print 1} else {print 0}}'

3、测试

如果你能通过/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k zabbix_low_discovery[mysql]与/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k mysql_stats_slave[3306,Slave_IO_Running]、/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k mysql_stats_slave[3306,Slave_SQL_Running]命令获取数据就代表没问题,下面是我的测试结果

wKioL1O2CTnjlCd-AAEHXuUCuqU182.jpg

4、mysql授权

1
2
GRANT PROCESS,REPLICATION CLIENT ON *.* TO  'zabbix' @ 'localhost'  identified BY  'zabbix' ;
Flush privileges;

5、重启zabbix服务

1
2
ps  -ef| grep  zabbix| grep  - v  grep | awk  '{print $2}' | xargs  kill  -9
/usr/local/zabbix/sbin/zabbix_agentd  -c  /usr/local/zabbix/conf/zabbix_agentd .conf

二、服务端

1、模板导入

把Template Mysql Auto Discovery导入到zabbix里(模板在附件),具体操作不介绍。

2、设置正则

在“管理”=》“一般”=》“正则表达式”里,选择“新的正则表达式”

然后设置类似如下

wKioL1L4Q6HhYgzHAAG68C970XY733.jpg

我这是运行3301到3309这9个mysql实例

3、主机关联模板

把需要监控mysql实例的主机管理模板即可监控,默认是3600秒后自动更新,如下图

wKioL1L4RA-i4NphAAJjI4nsqj4159.jpg为 什么设置3600秒?原因是如果设置时间过短,比如你设置60s,一个是服务器的压力大,一个是如果你检测的端口突然当掉了,还没有来的急报警,主机通过 json来获取不到这个信息,就认为没有这个端口,模板里会自动关闭这个监控项的内容(默认保留30天,然后自动删除),这样报警功能就基本没有了,所以 还是发现的间隔时间长一些比较好


本文转自 15816815732 51CTO博客,原文链接:http://blog.51cto.com/68686789/1740570

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

推荐镜像

更多