dubbo-admin icon indicating copy to clipboard operation
dubbo-admin copied to clipboard

Feature:在Dubbo-admin中新增监控功能

Open conghuhu opened this issue 1 year ago • 5 comments

  • [x] I have searched the issues of this repository and believe that this is not a duplicate.
  • [x] I have checked the REAMDE of this repository and believe that this is not a duplicate.

Is your feature request related to a problem? Please describe.

Describe the solution you'd like

参考 spring-boot-admin,在dubbo-admin增加一些监控功能。

spring-boot-admin基本使用

  1. 启动admin server(相同与启动dubbo admin)
  2. 在需监控的应用中引入如下包
<dependency> 
  <groupId>de.codecentric</groupId> 
  <artifactId>spring-boot-admin-starter-client</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
</dependency> 
  1. 在具体的应用中,配置admin server的地址(Dubbo的好处是,我们有注册中心,就不需要用户手动配置admin地址了,无配置侵入)
# 当前项目端口号 
server.port=8080 
# Spring Boot Admin 监控服务器端地址 
spring.boot.admin.client.url=http://localhost:9001
# 开启监控所有项 
management.endpoints.web.exposure.include=* 
  1. 启动应用后,可以在admin控制台地址中查看监控面板

应用总览

image

实例监控面板

image

SpringBoot Admin支持的功能

  • 启动时间、累计运行时间;
  • 进程和线程数量和占用的 CPU 资源;
  • 垃圾回收详情信息,回收次数和花费时间;
  • JVM 线程转储、内存转储详情和对应的文件下载;
  • 可以查看和配置 Spring Boot 项目中的日志级别;
  • 查看 Spring Boot 项目性能监控;
  • 查看 Spring Boot 运行环境信息;
  • 查看 Spring Boot 所有类信息;
  • 查看 Spring Boot 中的定时任务;
  • 查看和管理 Spring Boot 项目中的所有缓存。

Dubbo Admin可以做什么

我目前设想的Dubbo Admin可以做的一些监控展示:

  • 应用数量、实例展示、健康情况
  • 启动时间、累计运行时间
  • Dubbo Metrics相关的展示,例如: image

像JVM、GC的一些通用指标,我认为优先级可以往后放。 Dubbo admin中集成基本监控的好处就是,不是所有公司都愿意运维Grafana+Prometheus,有些小团队可能原本就用的dubbo-admin,这时候如果内置基本的监控功能,他就不需要引入Grafana+Prometheus去享受Dubbo的Metrics特性。

Dubbo获取指标方式

每个服务内部暴漏一个dubbo服务类似元数据一样,admin先通过服务发现发现所有的的服务提供的指标服务,然后通过rpc调用获取,按照一定的周期去调用。 Dubbo在本地维持一个10min的窗口数据,不依赖db,通过RestFul接口暴露给前端,前端做一些图表展示。

Describe alternatives you've considered

任务所需人员: 前端同学:@SDUWYS 后端同学:@conghuhu

Additional context

conghuhu avatar Aug 12 '23 09:08 conghuhu

@chickenlj @songxiaosheng PTAL

conghuhu avatar Aug 12 '23 09:08 conghuhu

dubbo admin 本来计划是从普罗米修斯查询指标数据进行展示,如果跳过普罗米修斯时序数据库的存储的话,dubbo admin能提供持久化存储指标数据不或者提供一些简单的支持

songxiaosheng avatar Aug 14 '23 14:08 songxiaosheng

我理解的是dubbo-admin不做存储,参考spring boot admin,只是维持一个10min左右的一个数据,类似滑动窗口,只展示一个很短的时间范围,本地就用个list存储就可以。 这样简单,直接调用dubbo暴露出来的metrics端点就可以,不依赖prometheus。

话说dubbo现在的metrics是不是可以直接从qos查询,返回格式是个什么?是类似promethues那种格式化的数据还是有个类似json的数据? @songxiaosheng

conghuhu avatar Aug 14 '23 14:08 conghuhu

admin可以有两种方式获取:

  • 一种是每个服务内部暴漏一个dubbo服务类似元数据一样然后,admin先通过服务发现发现所有的的服务提供的指标服务然后通过rpc形势获取
  • 一种方式是通过qos端口获取,需要每个服务把qos端口开放出来内网可以访问,dubbo内部支持非普罗米修斯格式的指标数据导出格式目前以自定义对象的形式可以扩展为json

songxiaosheng avatar Aug 14 '23 23:08 songxiaosheng

那这样的话,我觉得第一种挺好的,用户不需要单独开放qos端口

conghuhu avatar Aug 15 '23 04:08 conghuhu