apache / dubbo-admin

The ops and reference implementation for Apache Dubbo
https://dubbo.apache.org
Apache License 2.0
4k stars 2.17k forks source link

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

Open conghuhu opened 1 year ago

conghuhu commented 1 year ago

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> 
  3. 在具体的应用中,配置admin server的地址(Dubbo的好处是,我们有注册中心,就不需要用户手动配置admin地址了,无配置侵入)
    # 当前项目端口号 
    server.port=8080 
    # Spring Boot Admin 监控服务器端地址 
    spring.boot.admin.client.url=http://localhost:9001
    # 开启监控所有项 
    management.endpoints.web.exposure.include=* 
  4. 启动应用后,可以在admin控制台地址中查看监控面板

应用总览

image

实例监控面板

image

SpringBoot Admin支持的功能

Dubbo Admin可以做什么

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

像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 commented 1 year ago

@chickenlj @songxiaosheng PTAL

songxiaosheng commented 1 year ago

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

conghuhu commented 1 year ago

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

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

songxiaosheng commented 1 year ago

admin可以有两种方式获取:

conghuhu commented 1 year ago

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