Druid 監控分佈式解決方案

什麼是 Druid Monitor

Druid 是一個非常強大的數據庫連接池,但是它的強大並不僅僅體現在作爲一個高性能連接池加快數據訪問上和連接管理上,它內置了一個強大的監控工具:Druid Monitor。不僅可以監控數據源和慢查詢,還可以監控 Web 應用、URI 監控、Session 監控、Spring 監控等。

ip:port/druid/sql.html

福利 福利 福利 免費領取Java架構技能地圖 注意了是免費送

點擊我免費領取

什麼是 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. 增加依賴

  <dependency>

  <groupId>com.pig4cloud.plugin</groupId>

  <artifactId>spring-cloud-starter-druid-monitor</artifactId>

  <version>0.0.1</version>

  </dependency>

  <!--註冊中心客戶端(支持 nacos/eureka/consul)-->

  <dependency>

  <groupId>com.alibaba.cloud</groupId>

  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

  </dependency>

複製代碼

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 相關的端點,通過前置網關統一接口權限。

目前實例監控數據是保存在對應內存中,僅在查看時通過每個實例彙總後顯示,後期會實現持久化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章