Druid監(jiān)控分布式實(shí)現(xiàn)過程解析
什么是 Druid Monitor
Druid 是一個(gè)非常強(qiáng)大的數(shù)據(jù)庫(kù)連接池,但是它的強(qiáng)大并不僅僅體現(xiàn)在作為一個(gè)高性能連接池加快數(shù)據(jù)訪問上和連接管理上,它內(nèi)置了一個(gè)強(qiáng)大的監(jiān)控工具:Druid Monitor。不僅可以監(jiān)控?cái)?shù)據(jù)源和慢查詢,還可以監(jiān)控 Web 應(yīng)用、URI 監(jiān)控、Session 監(jiān)控、Spring 監(jiān)控等。
ip:port/druid/sql.html
什么是 Druid Admin
如上文所述, Druid Monitor 提供強(qiáng)大的監(jiān)控能力,但目前僅是針對(duì)對(duì)單個(gè)服務(wù)實(shí)例的監(jiān)控。 在微服務(wù)架構(gòu)日益流行的時(shí)下,同一個(gè)服務(wù)可能有會(huì)有 N 個(gè)實(shí)例,監(jiān)控維度需要上升至 集群。
官方在 druid 1.2.1 版本后,提供 druid-admin 模塊 來解決集群監(jiān)控的問題。
如下圖我們可以在原有的監(jiān)控集群上可以動(dòng)態(tài)的切換服務(wù)名稱,做到一個(gè)監(jiān)控入口,實(shí)現(xiàn)不同服務(wù)的監(jiān)控切換。
Spring Cloud Stater 封裝
目前官方的 druid-admin 正在開發(fā)工程中,并不能直接編譯運(yùn)行(依賴包錯(cuò)誤、不支持 java11 等)。
druid-admin 本身是一個(gè)直接可運(yùn)行的 web 服務(wù),對(duì)目前已有服務(wù)不太友好,不能做到 spring boot admin 那種即插即用
所以基于上述問題,筆者對(duì) druid-admin 進(jìn)行了相關(guān)的修改,直接抽取成 spring boot starter 引入即用。
1. 增加依賴
<dependency> <groupId>com.pig4cloud.plugin</groupId> <artifactId>spring-cloud-starter-druid-monitor</artifactId> <version>0.0.1</version> </dependency> <!--注冊(cè)中心客戶端(支持 nacos/eureka/consul)--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
2. 接入注冊(cè)中心和需要監(jiān)控的服務(wù)列表
spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # druid-admin 需要監(jiān)控的列表 monitor: applications: - pigx-upms-biz - pigx-auth
3. 目標(biāo)服務(wù)暴露 druid 監(jiān)控端點(diǎn)
spring: datasource: druid: stat-view-servlet: enabled: true allow: "" url-pattern: /druid/*
4. 訪問 druid-admin
查看集群監(jiān)控ip:port/druid/sql.html
整合 Spring Boot Admin
引入上述依賴,增加如下配置即可
spring: boot: admin: ui: external-views: - label: "SQL監(jiān)控" url: /druid/sql.html order: 2000
使用限制
由于 druid monitor 的登錄校驗(yàn)基于 session 設(shè)計(jì),所有在無狀態(tài)的微服務(wù)中不適用。建議直接暴露所有 druid 相關(guān)的端點(diǎn),通過前置網(wǎng)關(guān)統(tǒng)一接口權(quán)限。
目前實(shí)例監(jiān)控?cái)?shù)據(jù)是保存在對(duì)應(yīng)內(nèi)存中,僅在查看時(shí)通過每個(gè)實(shí)例匯總后顯示,后期會(huì)實(shí)現(xiàn)持久化。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中Cron表達(dá)式的生成解析及計(jì)算的工具類完整代碼
這篇文章主要給大家介紹了關(guān)于Java中Cron表達(dá)式的生成解析及計(jì)算工具類的相關(guān)資料,Cron表達(dá)式是一個(gè)字符串,字符串空格分割,每一個(gè)域代表一個(gè)含義,一個(gè)cron表達(dá)式有至少6個(gè),需要的朋友可以參考下2023-12-12springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼
本文主要介紹了springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05詳解SpringBoot中異步請(qǐng)求和異步調(diào)用(看完這一篇就夠了)
這篇文章主要介紹了SpringBoot中異步請(qǐng)求和異步調(diào)用問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04SpringBoot服務(wù)開啟后通過端口訪問無反應(yīng)的解決
這篇文章主要介紹了SpringBoot服務(wù)開啟后通過端口訪問無反應(yīng)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10Java數(shù)據(jù)結(jié)構(gòu)之有向圖設(shè)計(jì)與實(shí)現(xiàn)詳解
有向圖是具有方向性的圖,由一組頂點(diǎn)和一組有方向的邊組成,每條方向的邊都連著一對(duì)有序的頂點(diǎn)。本文為大家介紹的是有向圖的設(shè)計(jì)與實(shí)現(xiàn),需要的可以參考一下2022-11-1130w+數(shù)據(jù)使用RedisTemplate?pipeline空指針NullPointerException異常分析
這篇文章主要為大家介紹了30w+數(shù)據(jù)使用RedisTemplate?pipeline空指針NullPointerException異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Springboot項(xiàng)目實(shí)現(xiàn)Mysql多數(shù)據(jù)源切換的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于Springboot項(xiàng)目實(shí)現(xiàn)Mysql多數(shù)據(jù)源切換的完整實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11