Druid監(jiān)控分布式實(shí)現(xiàn)過(guò)程解析
什么是 Druid Monitor
Druid 是一個(gè)非常強(qiáng)大的數(shù)據(jù)庫(kù)連接池,但是它的強(qiáng)大并不僅僅體現(xiàn)在作為一個(gè)高性能連接池加快數(shù)據(jù)訪問(wèn)上和連接管理上,它內(nèi)置了一個(gè)強(qiáng)大的監(jiān)控工具:Druid Monitor。不僅可以監(jiān)控?cái)?shù)據(jù)源和慢查詢(xún),還可以監(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 模塊 來(lái)解決集群監(jiān)控的問(wèn)題。
如下圖我們可以在原有的監(jiān)控集群上可以動(dòng)態(tài)的切換服務(wù)名稱(chēng),做到一個(gè)監(jiān)控入口,實(shí)現(xiàn)不同服務(wù)的監(jiān)控切換。

Spring Cloud Stater 封裝
目前官方的 druid-admin 正在開(kāi)發(fā)工程中,并不能直接編譯運(yùn)行(依賴(lài)包錯(cuò)誤、不支持 java11 等)。
druid-admin 本身是一個(gè)直接可運(yùn)行的 web 服務(wù),對(duì)目前已有服務(wù)不太友好,不能做到 spring boot admin 那種即插即用
所以基于上述問(wèn)題,筆者對(duì) druid-admin 進(jìn)行了相關(guān)的修改,直接抽取成 spring boot starter 引入即用。
1. 增加依賴(lài)
<dependency> <groupId>com.pig4cloud.plugin</groupId> <artifactId>spring-cloud-starter-druid-monitor</artifactId> <version>0.0.1</version> </dependency> <!--注冊(cè)中心客戶(hù)端(支持 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. 訪問(wèn) druid-admin
查看集群監(jiān)控ip:port/druid/sql.html
整合 Spring Boot Admin

引入上述依賴(lài),增加如下配置即可
spring:
boot:
admin:
ui:
external-views:
- label: "SQL監(jiān)控"
url: /druid/sql.html
order: 2000
使用限制
由于 druid monitor 的登錄校驗(yàn)基于 session 設(shè)計(jì),所有在無(wú)狀態(tài)的微服務(wù)中不適用。建議直接暴露所有 druid 相關(guān)的端點(diǎn),通過(guò)前置網(wǎng)關(guān)統(tǒng)一接口權(quán)限。
目前實(shí)例監(jiān)控?cái)?shù)據(jù)是保存在對(duì)應(yīng)內(nèi)存中,僅在查看時(shí)通過(guò)每個(gè)實(shí)例匯總后顯示,后期會(huì)實(shí)現(xiàn)持久化。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中Cron表達(dá)式的生成解析及計(jì)算的工具類(lèi)完整代碼
這篇文章主要給大家介紹了關(guān)于Java中Cron表達(dá)式的生成解析及計(jì)算工具類(lèi)的相關(guān)資料,Cron表達(dá)式是一個(gè)字符串,字符串空格分割,每一個(gè)域代表一個(gè)含義,一個(gè)cron表達(dá)式有至少6個(gè),需要的朋友可以參考下2023-12-12
springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼
本文主要介紹了springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
詳解SpringBoot中異步請(qǐng)求和異步調(diào)用(看完這一篇就夠了)
這篇文章主要介紹了SpringBoot中異步請(qǐng)求和異步調(diào)用問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
SpringBoot服務(wù)開(kāi)啟后通過(guò)端口訪問(wèn)無(wú)反應(yīng)的解決
這篇文章主要介紹了SpringBoot服務(wù)開(kāi)啟后通過(guò)端口訪問(wèn)無(wú)反應(yīng)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
Java數(shù)據(jù)結(jié)構(gòu)之有向圖設(shè)計(jì)與實(shí)現(xiàn)詳解
有向圖是具有方向性的圖,由一組頂點(diǎn)和一組有方向的邊組成,每條方向的邊都連著一對(duì)有序的頂點(diǎn)。本文為大家介紹的是有向圖的設(shè)計(jì)與實(shí)現(xiàn),需要的可以參考一下2022-11-11
30w+數(shù)據(jù)使用RedisTemplate?pipeline空指針NullPointerException異常分析
這篇文章主要為大家介紹了30w+數(shù)據(jù)使用RedisTemplate?pipeline空指針NullPointerException異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Springboot項(xiàng)目實(shí)現(xiàn)Mysql多數(shù)據(jù)源切換的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于Springboot項(xiàng)目實(shí)現(xiàn)Mysql多數(shù)據(jù)源切換的完整實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

