Druid监控分布式实现过程解析

 更新时间:2020年11月19日 11:08:41   作者:冷冷zz  
这篇文章主要介绍了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 相关的端点,通过前置网关统一接口权限。

目前实例监控数据是保存在对应内存中,仅在查看时通过每个实例汇总后显示,后期会实现持久化。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring MVC的完整执行流程和常用组件详解

    Spring MVC的完整执行流程和常用组件详解

    SpringMvc是Spring的一个基于MVC开发的一个框架,用来处理前端请求,可以和Spring无缝整合,下面这篇文章主要给大家介绍了关于Spring MVC的完整执行流程和常用组件的相关资料,需要的朋友可以参考下
    2022-06-06
  • 简单了解Spring中的事务控制

    简单了解Spring中的事务控制

    这篇文章主要介绍了简单了解Spring中的事务控制,事务是一组操作的执行单元,下面我们来简单学习一下吧
    2019-05-05
  • 小白必看toString(),String.valueOf,(String)强转

    小白必看toString(),String.valueOf,(String)强转

    在Java中,往往需要把一个类型的变量转换成String 类型,本文主要介绍了toString(),String.valueOf,(String)强转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Java多线程并发编程和锁原理解析

    Java多线程并发编程和锁原理解析

    这篇文章主要介绍了Java多线程并发编程和锁原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • java中的数组初始化赋初值方式

    java中的数组初始化赋初值方式

    这篇文章主要介绍了java中的数组初始化赋初值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 从dubbo zookeeper注册地址提取出zookeeper地址的方法

    从dubbo zookeeper注册地址提取出zookeeper地址的方法

    今天小编就为大家分享一篇关于从dubbo zookeeper注册地址提取出zookeeper地址的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java利用StampedLock实现读写锁的方法详解

    Java利用StampedLock实现读写锁的方法详解

    在jdk8以后,java提供了一个性能更优越的读写锁并发类StampedLock,该类的设计初衷是作为一个内部工具类,用于辅助开发其它线程安全组件。本文就来和大家一起学习下StampedLock的功能和使用
    2022-10-10
  • Swagger-boostrap-ui如何配置用户名密码访问

    Swagger-boostrap-ui如何配置用户名密码访问

    这篇文章主要介绍了Swagger-boostrap-ui如何配置用户名密码访问,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Maven离线模式打包全过程

    Maven离线模式打包全过程

    这篇文章主要介绍了Maven离线模式打包全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • JAVA中的日期LocalDate类详细用法讲解

    JAVA中的日期LocalDate类详细用法讲解

    Java中存在一个日历表示法的类库,LocalDate类,如果只想要指定的年月日就可以用这个LocalDate类,下面这篇文章主要给大家介绍了关于JAVA中日期LocalDate类详细用法讲解的相关资料,需要的朋友可以参考下
    2024-01-01

最新评论