如何使用Zabbix监控MySQL的MGR群集状态

MySQL的MGR(MySQL Group Replication)是MySQL官方提供的一种高可用性和高可靠性的集群解决方案。MGR通过使用基于组复制的方式,实现了多个MySQL实例之间的数据同步和故障转移,从而提供了自动故障恢复和负载均衡的功能。本文将介绍如何通过Zabbix监控mysql的MGR群集状态。

  1. 给MGR群集内的数据库监控账号赋权(这里用的zbxuser)
    grant select on performance_schema.replication_group_members to ‘zbxuser’@‘%’;

刷新mysql配置

flush privileges;

  1. 在pymys.py内添加MGR监控脚本
    cd /itops/zabbix/share/zabbix/externalscripts #zabbix的外部检查目录

vim pymys.py 写入以下内容:

#!/usr/bin/env python3 #encoding=utf-8 #edit by yang hao #version 0.1

import argparse import pymysql import inspect import json import re

class Checks(object): def mysql_mgr_state(self): #print(‘11’) #print(self.args.text) #sql = ‘select * from performance_schema.replication_group_members;’ sqlhost = ‘select MEMBER_HOST from performance_schema.replication_group_members;’ self.cur.execute(sqlhost) res = self.cur.fetchall() key = [‘{#MEMBERHOST}’] lst = [] for i in res: d = dict(zip(key, i)) lst.append(d) print(json.dumps({‘data’: lst}))

def mysql_mgr_status(self): name = self.args.text #print(name) sql = “select MEMBER_STATE from performance_schema.replication_group_members where MEMBER_HOST=‘%s’” % (name)+ “;” if self.cur.execute(sql): res = self.cur.fetchall()[0][0] print(res) else: print(“Empty set”)

def mysql_mgr_id(self): name = self.args.text #print(name) sql = “select MEMBER_ID from performance_schema.replication_group_members where MEMBER_HOST=‘%s’” % (name)+ “;” if self.cur.execute(sql): res = self.cur.fetchall()[0][0] print(res) else: print(“Empty set”)

class Main(Checks): def init(self): parser = argparse.ArgumentParser() parser.add_argument(‘–ip’) parser.add_argument(‘–username’) parser.add_argument(‘–password’) parser.add_argument(‘–port’) parser.add_argument(‘–database’) parser.add_argument(‘–text’)

subparsers = parser.add_subparsers()

for name in dir(self): if not name.startswith(“_”): p = subparsers.add_parser(name) method = getattr(self, name) argnames = inspect.getargspec(method).args[1:] for argname in argnames: p.add_argument(argname) p.set_defaults(func=method, argnames=argnames) self.args = parser.parse_args()

def db_connect(self): a = self.args ip = a.ip username = a.username password = a.password port = int(a.port) database = a.database self.db = pymysql.connect(host = ip, port = port, user = username,passwd = password, db = database) self.cur = self.db.cursor()

def db_close(self): self.cur.close() self.db.close()

def call(self): try: a = self.args callargs = [getattr(a, name) for name in a.argnames] self.db_connect() try: return self.args.func(*callargs) finally: self.db_close() except Exception as err: print(“0”) print(str(err))

if name == “main”: main = Main() main()

vim pymys 写入以下内容:

#!/usr/bin/bash /usr/bin/python3 /itops/zabbix/share/zabbix/externalscripts/pymys.py --ip $1 --username $2 --password $3 --port $4 --database $5 $6 $7 $8

  1. 测试命令参考:
    ./pymys 数据库地址 用户名 密码 端口号 库名 mysql_mgr_state //返回数据类似下图即可
    在这里插入图片描述
    测试拿群集状态信息:./pymys 数据库地址 用户名 密码 端口号 库名 --text 节点名称 mysql_mgr_status在这里插入图片描述
  2. 在mysql监控模板创建自动发现规则
    名称:MGR监控

类型:外部检查

键值:pymys[{KaTeX parse error: Expected 'EOF', got '}' at position 8: ADDRESS}̲,{USERNAME},{KaTeX parse error: Expected 'EOF', got '}' at position 9: PASSWORD}̲,{PORT},{$DATABASE},mysql_mgr_state]
在这里插入图片描述
5. 创建监控项原型一
名称:{#MEMBERHOST}的节点ID

类型:外部检查

键值:pymys[{KaTeX parse error: Expected 'EOF', got '}' at position 8: ADDRESS}̲,{USERNAME},{KaTeX parse error: Expected 'EOF', got '}' at position 9: PASSWORD}̲,{PORT},{$DATABASE},–text,{#MEMBERHOST},mysql_mgr_id]在这里插入图片描述
6. 创建监控项原型二
名称:{#MEMBERHOST}的状态

类型:外部检查

键值:pymys[{KaTeX parse error: Expected 'EOF', got '}' at position 8: ADDRESS}̲,{USERNAME},{KaTeX parse error: Expected 'EOF', got '}' at position 9: PASSWORD}̲,{PORT},{$DATABASE},–text,{#MEMBERHOST},mysql_mgr_status]

在这里插入图片描述
7. 创建触发器类型在这里插入图片描述
名称: [数据库:MYSQL]{#MEMBERHOST}此节点与其他节点同步状态出现错误

表达式:

V:OFFLINE|ERROR|UNREACHABLE在这里插入图片描述
以上就是这一期的Zabbix技术分享内容。大家好,我是乐乐,专注运维技术研究与分享,关注我,学习更多Zabbix开源软件使用技巧,如有问题也欢迎到乐维社区留言提问~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装uim-ui插件不成功,成功解决

安装:这种安装,umi4 不支持,只有umi3才支持。而我发现官网现在默认使用的umi4。 yarn add umijs/preset-ui -D 解决:更改umi版本重新安装umi3 npm i ant-design/pro-cli3.1.0 -g #使用umi3 (指定umi3版本) pro create user-ce…

【YOLOv8 代码解读】数据增强代码梳理

1. LetterBox增强 当输入图片的尺寸和模型实际接收的尺寸可能不一致时,通常需要使用LetterBox增强技术。具体步骤是先将图片按比例缩放,将较长的边缩放到设定的尺寸以后,再将较短的边进行填充,最终短边的长度为stride的倍数即可。…

爬虫(Web Crawler)逆向技术探索

实战案例分析 为了更好地理解爬虫逆向的实际应用,我们以一个具体的案例进行分析。 案例背景 假设我们需要从某电商网站上获取商品价格信息,但该网站采取了反爬虫措施,包括动态Token和用户行为分析等。 分析与挑战 动态Token:…

海豚【货运系统源码】货运小程序【用户端+司机端app】源码物流系统搬家系统源码师傅接单

技术栈:前端uniapp后端vuethinkphp 主要功能: 不通车型配置不通价格参数 多城市定位服务 支持发货地 途径地 目的地智能费用计算 支持日期时间 预约下单 支持添加跟单人数选择 支持下单优惠券抵扣 支持司机收藏订单评价 支持订单状态消息通知 支…

Photoshoot 2(Java)

Photoshoot 2 题目描述 在一个似曾相识的场景中,Farmer John 正在将他的 N 头奶牛(1≤N≤10^5)排成一排(为了方便将它们按 1⋯1⋯N 编号),以便拍照。 最初,奶牛从左到右按照 a1,a2,⋯,aN 的顺…

【C/C++】从零开始认识C++历程-启航篇

文章目录 📝前言🌠 什么是C?🌉C的发展史 🌠C的重要性🌉语言的使用广泛度 🌠在工作领域🌉 岗位需求 🌠相关笔试题🌉 公司怎样面试C 🚩总结 &#x…

用grafana+prometheus+cadvisor监控容器指标数据,并查询当前容器的网速网络用量

前言 整理技术,在这篇文章中,将会搭建grafanaprometheuscadvisor监控容器,并使用一个热门数据看板,再监控容器的性能指标 dashboard效果 这个是node-exporter采集到的数据,我没装node-exporter,而且这也…

Vitis AI——FPGA学习笔记<?>

参考资料: Xilinx/Vitis-AI-Tutorials (github.com) Xilinx/Vitis-AI: Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms 【03】ALINX Zynq UltraScale MPSoC XILINX FPGA视频教程Vitis AI开发 一. 简介 1.简介 边缘计…

【物联网】Qinghub opc-ua 连接协议

基础信息 组件名称 : opcua-connector 组件版本: 1.0.0 组件类型: 系统默认 状 态: 正式发布 组件描述:通过OPCUA连接网关,通过定时任务获取OPCUA相关的数据或通过执行指令控制设备相关参数。 配置文件&a…

卸载原有的cuda,更新cuda

概述:看了一下自己的gpu,发现驱动可能装低了,随即尝试更新驱动,写下此篇 注:我原先是10.2的版本,改了之后是11.2,下面的图都用11.2的,不过不碍事 目录 第一步:查看现在…

位运算算法(2)

目录 面试题 01.01. 判断字符是否唯一 一、题目描述 二、思路解析 三、代码 268.丢失的数字 一、题目描述 二、思路解析 三、代码 371.两整数之和 一、题目描述 二、思路解析 三、代码 137.只出现一次的数字 II 一、题目描述 二、思路解析 三、代码 面试题 01.0…

Web漏洞-深入WAF注入绕过

目录 简要其他测试绕过 方式一:白名单(实战中意义不大) 方式二:静态资源 方式三: url白名单 方式四:爬虫白名单 #阿里云盾防SQL注入简要分析 #安全狗云盾SQL注入插件脚本编写 在攻防实战中,往往需要掌握一些特性,比如服务…

下拉选中搜索angularjs-dropdown-multiselect.js

需要引入angularjs-dropdown-multiselect.js 页面 <div ng-dropdown-multiselect"" options"supplierList_data" selected-model"supplierList_select" events"changSelValue_supplierList" extra-settings"mucommonsetti…

四、Yocto创建静态IP和VLAN(基于raspiberrypi 4B)

Yocto创建VLAN配置 在车载域控中很多时候需要创建VLAN&#xff0c;本小节记录如何为yocto构建出来的image自动化创建静态IP以及VLAN。 关于各种VLAN的配置参考&#xff1a;VLAN 1. ubuntu系统中使用netplan创建VLAN 正常情况下我们在ubuntu系统中可以通过netplan来自动化创建…

【Web自动化】Selenium的使用(一)

目录 关于自动化测试selenium工作机制 selenium的使用selenium中常用API定位元素按id定位按名称定位按类名定位按标签名定位按CSS选择器定位按XPath定位示例 操作测试对象等待sleep休眠隐式等待显示等待 打印信息浏览器操作键盘事件鼠标事件切换窗口截图关闭浏览器 欢迎阅读本文…

YOLO格式数据集转COCO格式

网上找了很久的YOLO格式数据集转COCO格式的代码&#xff0c;但是没有一个成功的&#xff0c;费尽千辛万苦终于找到一个能用的&#xff0c;因此记录一下。 一、首先YOLO格式数据集文件布局 其中lmages和labels 中的内容布局如下&#xff0c;只不过一个存放图片&#xff0c;一个存…

接口自动化框架搭建(三):pytest库安装

1&#xff0c;使用命令行安装 前提条件&#xff1a;已安装python环境 pip install pytest 或者 pip3 install pytest2&#xff0c;从编译器pycharme中安装

6.2物联网RK3399项目开发实录-驱动开发之GPIO使用(wulianjishu666)

物联网嵌入式开发源码例程&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1B3oqq5QBhN-VmTFt9CI-7A?pwd2ihg ******************************************************************************************* GPIO 使用 简介 GPIO, 全称 General-Purpose Input/…

前端-css-2

1.背景样式 属性名作用属性值background-color背景颜色颜色background-image设置背景图像地址url(地址)background-repeat设置背景图像重复方式 repeat&#xff1a;重复。 repeat-x&#xff1a;横向重复。 repeat-y&#xff1a;纵向重复。 no-repeat&#xff1a;不重复。 back…