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.pswp.cn/news/43140.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43140.shtml
英文地址,請注明出處:http://en.pswp.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可以給出關于該…