乐趣区

关于java:Druid-监控分布式解决方案

什么是 Druid Monitor

Druid 是一个十分弱小的数据库连接池,然而它的弱小并不仅仅体现在作为一个高性能连接池放慢数据拜访上和连贯治理上,它内置了一个弱小的监控工具:Druid Monitor。不仅能够监控数据源和慢查问,还能够监控 Web 利用、URI 监控、Session 监控、Spring 监控等。

  • ip:port/druid/sql.html

什么是 Druid Admin

  • 如上文所述,Druid Monitor 提供弱小的监控能力,但目前仅是针对对单个服务实例的监控 。在微服务架构日益风行的时下,同一个服务可能有会有 N 个实例,监控维度须要回升至 集群
  • 官网在 druid 1.2.1 版本后,提供 druid-admin 模块 来解决集群监控的问题。
  • 如下图咱们能够在原有的监控集群上能够动静的切换服务名称,做到一个监控入口,实现不同服务的监控切换

Spring Cloud Stater 封装

  • 目前官网的 druid-admin 正在开发工程中,并不能间接编译运行(依赖包谬误、不反对 java11 等)。
  • druid-admin 自身是一个间接可运行的 web 服务,对目前已有服务不太敌对,不能做到 spring boot admin 那种即插即用
  • 所以基于上述问题,笔者对 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 相干的端点,通过前置网关对立接口权限。
  • 目前实例监控数据是保留在对应内存中,仅在查看时通过每个实例汇总后显示,前期会实现长久化。

退出移动版