编写 prometheus exporter监控 mysql group replication

本文主要是介绍编写 prometheus exporter监控 mysql group replication,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用 prometheus 监控 mysql,之前用 mysqld_exporter 收集mysql 的监控指标,发现并没有 mysql 组复制状态的指标。只能自己收集了,编写脚本收集指标推送到 pushgateway,这个办法更简单但是扩缩容不是很方便。下面用 python 编写的一个 exporter,比较简单只抓取了一个指标

需要修改的是,mysql_instances_config.yml 实例配置文件的路径,按需暴露的端口和抓取间隔

from prometheus_client import start_http_server, Gauge
import mysql.connector  # 这里的 `mysql` 包是 `mysql-connector-python`
import time
import yaml  # 包是PYyaml# 读取配置文件
def load_config(file_path):with open(file_path, 'r') as file:config = yaml.safe_load(file)return config# 从配置文件加载 MySQL 实例和凭据
config = load_config('/app/mysql_instances_config.yml')  #抓取目标的配置绝对路径
mysql_instances = [(item['host'], item['port']) for item in config['mysql_instances']]
mysql_user = config['mysql_credentials']['user']
mysql_password = config['mysql_credentials']['password']# 自定义指标
replication_group_status = Gauge('replication_group_status','Status of MySQL Group Replication',labelnames=['member_host', 'member_state']
)def collect_metrics():for host, port in mysql_instances:config = {'user': mysql_user,'password': mysql_password,'host': host,'port': port,'database': 'performance_schema',}try:conn = mysql.connector.connect(**config)  # 使用 `mysql.connector.connect`cursor = conn.cursor()cursor.execute("SELECT MEMBER_HOST, MEMBER_STATE, CASE WHEN MEMBER_STATE = 'ONLINE' THEN 1 ELSE 0 END AS state_value FROM performance_schema.replication_group_members")rows = cursor.fetchall()# 更新 Prometheus 指标for row in rows:member_host, member_state, state_value = rowreplication_group_status.labels(member_host=member_host, member_state=member_state).set(state_value)  #指标和标签cursor.close()conn.close()except mysql.connector.Error as err:print(f"Error connecting to MySQL instance {host}:{port} - {err}")if __name__ == '__main__':start_http_server(9104)  # 启动 HTTP 服务,以及暴露的端口while True:collect_metrics()  # 定期收集指标time.sleep(30)  # 每 30 秒收集一次

抓取目标的配置,用的同一套用户名密码,抓取目标自己按需扩减

    mysql_instances:- host: '10.1.11.16'port: 5407- host: '10.1.11.81'port: 5407- host: '10.4.1.1'port: 5407- host: '10.1.11.80'port: 6106- host: '10.1.11.81'port: 6106mysql_credentials:user: 'exporter'password: 'password'

访问抓取指标的 url,指标名字为 replication_group_status,当状态为 ONLINE 时 value 为1,否则为 0

这篇关于编写 prometheus exporter监控 mysql group replication的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098343

相关文章

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本