Druid 監控分散式解決方案

什麼是 Druid Monitor

Druid 是一個非常強大的資料庫連線池,但是它的強大並不僅僅體現在作為一個高效能連線池加快資料訪問上和連線管理上,它內建了一個強大的監控工具:

Druid Monitor

。不僅可以監控資料來源和慢查詢,還可以監控 Web 應用、URI 監控、Session 監控、Spring 監控等。

Druid 監控分散式解決方案

ip:port/druid/sql。html

什麼是 Druid Admin

如上文所述, Druid Monitor 提供強大的監控能力,

但目前僅是針對對單個服務例項的監控

。 在

微服務架構[1]

日益流行的時下,同一個服務可能有會有 N 個例項,監控維度需要上升至

叢集

官方在 druid 1。2。1 版本後,提供

druid-admin[2]

模組 來解決叢集監控的問題。

如下圖我們可以在原有的監控叢集上可以動態

切換服務名稱,

做到一個監控入口,實現不同服務的監控切換

Druid 監控分散式解決方案

Spring Cloud Stater 封裝

目前官方的 druid-admin 正在開發工程中,並不能直接編譯執行(依賴包錯誤、不支援 java11 等)。

druid-admin 本身是一個直接可執行的 web 服務,對目前已有服務不太友好,不能做到

spring boot admin[3]

那種即插即用

所以基於上述問題,筆者對 druid-admin 進行了相關的修改,直接抽取成 spring boot starter 引入即用。

1. 增加依賴

com。pig4cloud。plugin spring-cloud-starter-druid-monitor 0。0。1 <!——註冊中心客戶端(支援 nacos/eureka/consul)——> com。alibaba。cloud spring-cloud-starter-alibaba-nacos-discovery 複製程式碼

2. 接入註冊中心和需要監控的服務列表

spring: cloud: nacos: discovery: server-addr: 127。0。0。1:8848# druid-admin 需要監控的列表monitor: applications: - pigx-upms-biz - pigx-auth複製程式碼

3. 目標服務暴露 druid 監控端點

spring: datasource: druid: stat-view-servlet: enabled: true allow: “” url-pattern: /druid/*複製程式碼

4. 訪問 druid-admin 檢視叢集監控

ip:port/druid/sql。html

整合 Spring Boot Admin

Druid 監控分散式解決方案

引入上述依賴,增加如下配置即可

spring: boot: admin: ui: external-views: - label: “SQL監控” url: /druid/sql。html order: 2000複製程式碼

使用限制

由於 druid monitor 的登入校驗基於 session 設計,所有在無狀態的微服務中不適用。建議直接暴露所有 druid 相關的端點,透過前置閘道器統一介面許可權。

目前例項監控資料是儲存在對應記憶體中,僅在檢視時透過每個例項彙總後顯示,後期會實現持久化。

作者:冷冷zz

連結:https://juejin。im/post/6885920107295014920