ShardingSphere 可观测 SQL 指标监控

ShardingSphere并不负责如何采集、存储以及展示应用性能监控的相关数据,而是将SQL解析与SQL执行这两块数据分片的最核心的相关信息发送至应用性能监控系统,并交由其处理。 换句话说,ShardingSphere仅负责产生具有价值的数据,并通过标准协议递交至相关系统。

现有问题

  1. 现有版本5.2.1不支持对于jdbc模式的直接监控
  2. 现有pd版本实现双写的重构对于 ShardingSphereStatement、ShardingSpherePreparedStatement是相关监控是否需要重构代码
  3. 连接池连接信息的监控

方案

针对sql执行情况的监控

  1. 针对当前的5.2.1,参考5.3.2进行agent相关代码的编写

unrealizable

  1. 升级版本5.3.2

    Apache ShardingSphere-JDBC 性能监控实战

  2. trace监控同上,现有metrics指标[1]

数据连接池监控

  1. HikariCP 自带

HikariCP 数据库连接池开启prometheus监控_hikaricp开启sql监控_croder的博客-CSDN博客

可观测性-Metrics-数据库连接池HikariCP监控_hikaricp 监控_lakernote的博客-CSDN博客

HikariConfig hikariConfig = new HikariConfig();hikariConfig.setJdbcUrl("jdbc:mysql://xxxxxxxx:3306/pegasus_data_demo_00?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=true&requireSSL=false");hikariConfig.setUsername("root");hikariConfig.setPassword("xxxxxxx.");hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");hikariConfig.setAutoCommit(true);hikariConfig.setPoolName("demo-SSSSSS");hikariConfig.setMaximumPoolSize(10);hikariConfig.setMinimumIdle(3);// 创建HikariDataSourceHikariDataSource dataSource = new HikariDataSource(hikariConfig);// 设置metric注册器 每10秒打印一次LoggingMeterRegistry loggingMeterRegistry = new LoggingMeterRegistry(new LoggingRegistryConfig() {@Overridepublic String get(String key) {return null;}@Overridepublic Duration step() {return Duration.ofSeconds(10);}}, Clock.SYSTEM);dataSource.setMetricRegistry(loggingMeterRegistry);// 测试 持有3秒连接后才释放Connection connection = dataSource.getConnection();TimeUnit.SECONDS.sleep(1000);connection.close();

通过注入 Metricslogs 暴露详细 metrics[2]

BUT:作者不希望在连接池层面进行日志的输出,虽然是一点点的性能

SQL logging · Issue #57 · brettwooldridge/HikariCP

  1. Druid

    自带监控,通过暴露相关的Metrics的数据进行监控

  2. ……

Metrics[1]

指标名称指标类型指标描述
build_infoGAUGE构建信息
parsed_sql_totalCOUNTER按类型(INSERT、UPDATE、DELETE、SELECT、DDL、DCL、DAL、TCL、RQL、RDL、RAL、RUL)分类的解析总数
routed_sql_totalCOUNTER按类型(INSERT、UPDATE、DELETE、SELECT)分类的路由总数
routed_result_totalCOUNTER路由结果总数(数据源路由结果、表路由结果)
jdbc_stateGAUGEShardingSphere-JDBC 状态信息。0 表示正常状态;1 表示熔断状态;2 锁定状态
jdbc_meta_data_infoGAUGEShardingSphere-JDBC 元数据信息
jdbc_statement_execute_totalCOUNTER语句执行总数
jdbc_statement_execute_errors_totalCOUNTER语句执行错误总数
jdbc_statement_execute_latency_millisHISTOGRAM语句执行耗时
jdbc_transactions_totalCOUNTER事务总数,按 commit,rollback 分类

Metrics[2]

指标含义详解
hikaricp.connections当前总连接数,包括空闲的连接和使用中的连接Connections = activeConnection + idleConnections,会随着连接使用情况变化。
hikaricp.connections.active正在使用中活跃连接数会随着连接使用情况变化。
hikaricp.connections.idle空闲连接数会随着连接使用情况变化。
hikaricp.connections.max最大连接数初始配置。
hikaricp.connections.min最小连接数初始配置。
hikaricp.connections.pending正在等待连接的线程数量一般来说,这里应该都是 0。如果存在这个数据并且时间较长要触发告警,视情况加大最大连接数。
hikaricp.connections.acquire获取每个连接需要时间,单位为 ns
hikaricp.connections.creation连接创建时间,单位为 ms
hikaricp.connections.timeout创建连接超时次数
hikaricp.connections.usage连接从池中取出到返回的时间,单位为 ms连接被业务占用时间,如果这个时间长的话,可能是慢 SQL 或者长事务导致连接被占用问题。
# HELP routed_sql_total Total count of routed SQL
# TYPE routed_sql_total counter
routed_sql_total{type="SELECT",} 28.0
routed_sql_total{type="INSERT",} 62.0
# HELP jdbc_statement_execute_total Total number of statement execute
# TYPE jdbc_statement_execute_total counter
jdbc_statement_execute_total{statement_type="prepared_statement",} 14.0
# HELP parsed_sql_total Total count of parsed SQL
# TYPE parsed_sql_total counter
parsed_sql_total{type="SELECT",} 28.0
parsed_sql_total{type="INSERT",} 62.0
# HELP jdbc_statement_execute_latency_millis Statement execute latency millis histogram
# TYPE jdbc_statement_execute_latency_millis histogram
jdbc_statement_execute_latency_millis_bucket{le="1.0",} 0.0
jdbc_statement_execute_latency_millis_bucket{le="2.0",} 0.0
jdbc_statement_execute_latency_millis_bucket{le="4.0",} 0.0
jdbc_statement_execute_latency_millis_bucket{le="8.0",} 0.0
jdbc_statement_execute_latency_millis_bucket{le="16.0",} 0.0
jdbc_statement_execute_latency_millis_bucket{le="32.0",} 0.0
jdbc_statement_execute_latency_millis_bucket{le="64.0",} 2.0
jdbc_statement_execute_latency_millis_bucket{le="128.0",} 8.0
jdbc_statement_execute_latency_millis_bucket{le="256.0",} 12.0
jdbc_statement_execute_latency_millis_bucket{le="512.0",} 13.0
jdbc_statement_execute_latency_millis_bucket{le="1024.0",} 14.0
jdbc_statement_execute_latency_millis_bucket{le="2048.0",} 14.0
jdbc_statement_execute_latency_millis_bucket{le="4096.0",} 14.0
jdbc_statement_execute_latency_millis_bucket{le="+Inf",} 14.0
jdbc_statement_execute_latency_millis_count 14.0
jdbc_statement_execute_latency_millis_sum 2491.0
# HELP routed_result_total Total count of routed result
# TYPE routed_result_total counter
routed_result_total{object="data_source",name="pegasus_data_demo_00",} 118.0
routed_result_total{object="data_source",name="pegasus_data_demo_01",} 56.0
routed_result_total{object="table",name="user_info_0000",} 28.0
routed_result_total{object="table",name="user_info_0001",} 90.0
routed_result_total{object="table",name="user_info_0002",} 28.0
routed_result_total{object="table",name="user_info_0003",} 28.0
# HELP build_info Build information
# TYPE build_info gauge
build_info{name="ShardingSphere",version="5.3.2",} 1.0
# HELP jdbc_statement_execute_created Total number of statement execute
# TYPE jdbc_statement_execute_created gauge
jdbc_statement_execute_created{statement_type="prepared_statement",} 1.691140932075E9
# HELP jdbc_statement_execute_latency_millis_created Statement execute latency millis histogram
# TYPE jdbc_statement_execute_latency_millis_created gauge
jdbc_statement_execute_latency_millis_created 1.691140932077E9
# HELP parsed_sql_created Total count of parsed SQL
# TYPE parsed_sql_created gauge
parsed_sql_created{type="SELECT",} 1.691140931048E9
parsed_sql_created{type="INSERT",} 1.691141080971E9
# HELP routed_result_created Total count of routed result
# TYPE routed_result_created gauge
routed_result_created{object="data_source",name="pegasus_data_demo_00",} 1.691140931237E9
routed_result_created{object="data_source",name="pegasus_data_demo_01",} 1.691140931237E9
routed_result_created{object="table",name="user_info_0000",} 1.691140931237E9
routed_result_created{object="table",name="user_info_0001",} 1.691140931237E9
routed_result_created{object="table",name="user_info_0002",} 1.691140931237E9
routed_result_created{object="table",name="user_info_0003",} 1.691140931237E9
# HELP routed_sql_created Total count of routed SQL
# TYPE routed_sql_created gauge
routed_sql_created{type="SELECT",} 1.691140931227E9
routed_sql_created{type="INSERT",} 1.691141080974E9

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

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

相关文章

Go 语言中排序的 3 种方法

原文链接: Go 语言中排序的 3 种方法 在写代码过程中,排序是经常会遇到的需求,本文会介绍三种常用的方法。 废话不多说,下面正文开始。 使用标准库 根据场景直接使用标准库中的方法,比如: sort.Intsso…

【C++】AVL树(平衡二叉树)

目录 一、AVL树的定义二、AVL树的作用三、AVL树的插入操作插入——平衡因子的更新插入——左单旋插入——右单旋插入——左右双旋插入——右左双旋 四、ALVL树的验证五、AVL树的性能 一、AVL树的定义 AVL树,全称 平衡二叉搜索(排序)树。 二…

一次Linux图形化界面恢复

一次Linux 图形化界面恢复 一次Linux 图形化界面恢复出现问题场景问题排查 一次Linux 图形化界面恢复 出现问题场景 使用xmanager远程连接虚机的CentOS7系统图形界面出现已拒绝x11转移申请问题,在折腾X11过程中,安装与卸载的过程中不小心把xorg-x11-xa…

HCIP的交换机实验

题目 拓扑图 PC1/3接口用access 创建WLAN LSW1 创建WLAN [lsw1]vlan batch 2 to 6[lsw1-Ethernet0/0/1]p [lsw1-Ethernet0/0/1]port l [lsw1-Ethernet0/0/1]port link- [lsw1-Ethernet0/0/1]port link-flap [lsw1-Ethernet0/0/1]port link-type acc [lsw1-Ethernet0/0…

kubeasz在线安装K8S集群单master集群(kubeasz安装之二)

一、介绍 Kubeasz 是一个基于 Ansible 自动化工具,用于快速部署和管理 Kubernetes 集群的工具。它支持快速部署高可用的 Kubernetes 集群,支持容器化部署,可以方便地扩展集群规模,支持多租户,提供了强大的监控和日志分…

Bigemap Pro国产基础软件介绍——一款多源数据处理软件

一、软件简介 Bigemap Pro是由成都比格图数据处理有限公司(下称”BIGEMAP”)开发和发行的国产大数据处理基础软件。Bigemap Pro是在BIGEMAP GIS Office基础上,经过十年的用户积累与反馈和技术更新迭代出的新一代基础软件产品。Bigemap Pro国产基础软件集成了数据采…

【Diffusion】李宏毅2023机器学习Diffusion笔记

文章目录 1 想法概述2 实际过程阶段1 Add Noise阶段2 Denoise 3 数学原理4 为什么推理时要额外加入noise5 一些不知道对不对的Summary 1 想法概述 从一张充满噪声的图中不断denoise,最终得到一张clear的图片。为了确定当前图片中噪声占比的大小,同时输入…

rust踩雷笔记(1)——切片传参和解引用赋值

最近学习rust,网上资料还是很有限,做题遇到的问题,有时需要自己试验。把自己做题过程遇到的问题,和试验的结论,做一些简单记录。 阅读下列文字和代码 用切片(的引用)做参数要非常小心&#xff…

LVS负载均衡之--Keepalived模式(超详细)

一.Keepalived概述 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能-----判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集中Keep…

【数据结构】二叉树

🐇 🔥博客主页: 云曦 📋系列专栏:数据结构 💨吾生也有涯,而知也无涯 💛 感谢大家👍点赞 😋关注📝评论 文章目录 前言一、树的概念及结构&#x…

简单理解Python中的深拷贝与浅拷贝

I. 简介 深拷贝会递归的创建一个完全独立的对象副本,包括所有嵌套的对象,而浅拷贝只复制嵌套对象的引用,不复制嵌套对象本身。 简单来说就是两者都对原对象进行了复制,因此使用is运算符来比较新旧对象时,返回的都是F…

java把数字转换成汉字 java 数字转汉字

使用java将数字转化为中文汉字_java数字转中文_javaerly的博客-CSDN博客 package com.unicom.apartment.utils;public class NumUtil {public static String convert(int number) {if(number < 0){return "";}if(number 1){return "当天";}//数字对应的…

C#实现普通的语音播报

Windows有文字转语音功能&#xff0c;C#提供了调用的类库Interop.SpeechLib.dll 使用方法很简单&#xff0c;在你的项目中添加Interop.SpeechLib.dll引用&#xff0c;在类中引用&#xff1a; using SpeechLib;这里提供一个CVoice类 帮助实现语音播报 public class CVoice{pri…

【5G 核心网】5G 多PDU会话锚点技术介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

Spring Boot(六十四):SpringBoot集成Gzip压缩数据

1 实现思路 2 实现 2.1 创建springboot项目 2.2 编写一个接口,功能很简单就是传入一个Json对象并返回 package com.example.demo.controller;import com.example.demo.entity.Advertising; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframewo…

LeetCode150道面试经典题-- 加一(简单)

1.题目 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 2.示例 示例 1&#xff1a; 输入&am…

excel提示更新外部引用文件 这个提示能手动禁用

是的&#xff0c;你可以手动禁用 Excel 中的更新外部引用文件的提示。这些步骤可能因 Excel 版本而有所不同&#xff0c;以下是一般的步骤&#xff1a; 1. **打开 Excel**&#xff1a; 2. **进入“选项”**&#xff1a; - 在 Excel 中&#xff0c;点击顶部菜单中的“文件”…

网络通信原理传输层TCP三次建立连接(第四十八课)

ACK :确认号 。 是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。确认号X+1SEQ:序号字段。 TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的…

「UG/NX」Block UI 面收集器FaceCollector

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

LangChain手记 Question Answer 问答系统

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Question Answer&#xff08;源代码可见&#xff09; 本节介绍使用LangChian构建文档上的问答系统&#xff0c;可以实现给定一个PDF文档&#xff0c;询问关于文档上出现过的某个信息点&#xff0c;LLM可以给出关于该…