什麼是 Druid Monitor
Druid 是一個非常強大的資料庫連接配接池,但是它的強大并不僅僅展現在作為一個高性能連接配接池加快資料通路上和連接配接管理上,它内置了一個強大的監控工具:Druid Monitor。不僅可以監控資料源和慢查詢,還可以監控 Web 應用、URI 監控、Session 監控、Spring 監控等。
- ip:port/druid/sql.html
什麼是 Druid Admin
- 如上文所述, Druid Monitor 提供強大的監控能力,但目前僅是針對對單個服務執行個體的監控。 在微服務架構[1]日益流行的時下,同一個服務可能有會有 N 個執行個體,監控次元需要上升至 叢集。
- 官方在 druid 1.2.1 版本後,提供 druid-admin[2] 子產品 來解決叢集監控的問題。
- 如下圖我們可以在原有的監控叢集上可以動态的切換服務名稱,做到一個監控入口,實作不同服務的監控切換。
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.1com.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
- 引入上述依賴,增加如下配置即可
spring: boot: admin: ui: external-views: - label: "SQL監控" url: /druid/sql.html order: 2000複制代碼
使用限制
- 由于 druid monitor 的登入校驗基于 session 設計,所有在無狀态的微服務中不适用。建議直接暴露所有 druid 相關的端點,通過前置網關統一接口權限。
- 目前執行個體監控資料是儲存在對應記憶體中,僅在檢視時通過每個執行個體彙總後顯示,後期會實作持久化。
作者:冷冷zz
連結:https://juejin.im/post/6885920107295014920