找回密码
 立即注册
首页 业界区 业界 DynamicTP-动态线程池管理工具本地部署-Springboot + Na ...

DynamicTP-动态线程池管理工具本地部署-Springboot + Nacos + Prometheus + Grafana

襁壮鸢 2025-6-9 10:49:31
一、官方地址 DynamicTP

二、踩坑

先要把依赖版本搞定,后面的配置才能顺利生效

1.一定要确定好自己是什么项目,SpringBoot或SpringCloud

不同类型的项目使用的DynamicTP的配置不相同

如果pom.xml文件中带有spring-cloud-dependencies则是SpringCloud项目

2.依赖版本

首先SpringBoot版本要和Nacos版本可以兼容,可以先单独部署一个Nacos的配置中心应用,然后再添加DynamicDP的配置

我使用的依赖版本为 SpringBoot 2.1.1.RELEASE + Nacos 0.2.10 + DynamicTP 1.2.0

官方提示

1.png

可以参考我的pom.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.     <modelVersion>4.0.0</modelVersion>
  5.     <groupId>com.dong</groupId>
  6.     myspringboot</artifactId>
  7.     <version>0.0.1-SNAPSHOT</version>
  8.     <name>myspringboot</name>
  9.     <description>Demo project for Spring Boot</description>
  10.     <properties>
  11.         <nacos-config-spring-boot.version>0.2.10</nacos-config-spring-boot.version>
  12.     </properties>
  13.     <dependencies>
  14.         <dependency>
  15.             <groupId>org.springframework.boot</groupId>
  16.             spring-boot-starter-actuator</artifactId>
  17.             <version>2.1.1.RELEASE</version>
  18.         </dependency>
  19.         <dependency>
  20.             <groupId>org.springframework.boot</groupId>
  21.             spring-boot-starter-actuator</artifactId>
  22.             <version>2.1.1.RELEASE</version>
  23.         </dependency>
  24.         <dependency>
  25.             <groupId>com.alibaba.boot</groupId>
  26.             nacos-config-spring-boot-starter</artifactId>
  27.             <version>${nacos-config-spring-boot.version}</version>
  28.         </dependency>
  29.         <dependency>
  30.             <groupId>com.alibaba.boot</groupId>
  31.             nacos-config-spring-boot-actuator</artifactId>
  32.             <version>${nacos-config-spring-boot.version}</version>
  33.         </dependency>
  34.         <dependency>
  35.             <groupId>org.dromara.dynamictp</groupId>
  36.             dynamic-tp-spring-boot-starter-nacos</artifactId>
  37.             <version>1.2.0</version>
  38.         </dependency>
  39.         <dependency>
  40.             <groupId>org.springframework.boot</groupId>
  41.             spring-boot-starter-web</artifactId>
  42.             <version>2.1.1.RELEASE</version>
  43.             <scope>compile</scope>
  44.             <exclusions>
  45.                 <exclusion>
  46.                     <groupId>com.fasterxml.jackson.core</groupId>
  47.                     jackson-databind</artifactId>
  48.                 </exclusion>
  49.             </exclusions>  
  50.         </dependency>
  51.         <dependency>
  52.             <groupId>com.fasterxml.jackson.core</groupId>
  53.             jackson-databind</artifactId>
  54.             <version>2.14.2</version>
  55.         </dependency>
  56.     </dependencies>
  57.     <build>
  58.         <plugins>
  59.             <plugin>
  60.                 <groupId>org.apache.maven.plugins</groupId>
  61.                 maven-compiler-plugin</artifactId>
  62.                 <version>3.8.1</version>
  63.                 <configuration>
  64.                     <source>1.8</source>
  65.                     <target>1.8</target>
  66.                     <encoding>UTF-8</encoding>
  67.                 </configuration>
  68.             </plugin>
  69.             <plugin>
  70.                 <groupId>org.springframework.boot</groupId>
  71.                 spring-boot-maven-plugin</artifactId>
  72.                 <version>2.1.1.RELEASE</version>
  73.                 <configuration>
  74.                     <mainClass>com.dong.myspringboot.MyspringbootApplication</mainClass>
  75.                     <skip>true</skip>
  76.                 </configuration>
  77.                 <executions>
  78.                     <execution>
  79.                         <id>repackage</id>
  80.                         <goals>
  81.                             <goal>repackage</goal>
  82.                         </goals>
  83.                     </execution>
  84.                 </executions>
  85.             </plugin>
  86.         </plugins>
  87.     </build>
  88. </project>
复制代码
3.DynamicTP配置

先贴上我的application.yml
  1. server:
  2.   port: 9089
  3. spring:
  4.   application:
  5.     name: my-service
  6.   profiles:
  7.     active: public
  8. nacos:
  9.   config:
  10.     server-addr: 127.0.0.1:8848
  11.     type: yaml
  12.     data-ids: my-service-dev,my-dtp-service  # 逗号分隔,第一个是项目主配置,第二个是动态线程池配置
  13.     auto-refresh: true
  14.     group: DEFAULT_GROUP
  15.     bootstrap:
  16.       enable: true
  17.       log-enable: true
复制代码
data-ids要和Nacos配置中一模一样,比如我的DP配置是my-dtp-service,那么我的Nacos中也是一样的

2.png

四、报错 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/json/JsonMapper

这是因为依赖冲突了

mvn dependency:tree | findstr "jackson"命令执行后如果有输出则是有冲突
  1. <dependency>
  2.     <groupId>org.springframework.boot</groupId>
  3.     spring-boot-starter-web</artifactId>
  4.     <exclusions>
  5.         <exclusion>
  6.             <groupId>com.fasterxml.jackson.core</groupId>
  7.             jackson-databind</artifactId>
  8.         </exclusion>
  9.     </exclusions>
  10. </dependency>
  11. <dependency>
  12.     <groupId>com.fasterxml.jackson.core</groupId>
  13.     jackson-databind</artifactId>
  14.     <version>2.14.2</version>
  15. </dependency>
复制代码
在pom文件中添加以上代码来剔除冲突依赖

五.

如果项目启动后控制台输出

DtpRegistry has been initialized, remote executors: [], local executors: []
那么大概率是Nacos中的配置没有读到,需要再确认依赖版本或者application.yml中的配置

六、Prometheus + Grafana实现图形化监控

官网地址:prometheus+grafana 接入流程

1. Prometheus + Grafana安装

下载链接:[Prometheus]、[Grafana]

如果跟我一样是windows系统,可以下载zip格式的包,解压后就能直接使用了

我使用的Prometheus版本是3.2.0,Grafana版本是11.2.0

启动Prometheus后,在浏览器中输入127.0.0.1:9090可以进入图形化界面,配置完成后会显示一个Endpoint

3.png

2. 项目中配置Prometheus

2.1 引入依赖
  1. <dependency>
  2.         <groupId>io.micrometer</groupId>
  3.         micrometer-registry-prometheus</artifactId>
  4.         <version>1.1.2</version>
  5. </dependency>
复制代码
!!!!依赖版本是个坑

如果SpringBoot版本不高的话,建议选择低版本的Prometheus依赖,依赖不匹配的话所需的接口暴露不出来,会无法监听线程池的使用情况

2.2 pom.xml文件中添加指标暴露配置
  1. management:
  2.   metrics:
  3.     export:
  4.       prometheus:
  5.         enabled: true
  6.   endpoints:
  7.     web:
  8.       exposure:
  9.         include: '*'
复制代码
2.3 修改Prometheus配置

修改prometheus.yml

添加或覆盖以下代码
  1. scrape_configs:
  2.   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  3.   - job_name: "prometheus"
  4.     # metrics_path defaults to '/metrics'
  5.     # scheme defaults to 'http'.
  6.     metrics_path: '/actuator/prometheus'
  7.     static_configs:
  8.       - targets: ["localhost:9089"]  #此处的ip和端口为要监听的SpringBoot项目的ip和端口
复制代码
2.4 验证一下

浏览器中输入http://127.0.0.1:9089/actuator,会展示出已经暴露的actuator

搜索prometheus,如果能找到,则说明已经可以监听线程池情况了

4.png

3. Grafana配置

3.1 获取Grafana的配置json文件

官网的Grafana配置文件:传送门

3.2 配置

浏览器输入127.0.0.1:3000,进入Grafana的图形化界面

5.png

选择刚才下载的json文件导入,或者直接复制到窗口进行导入

6.png

导入后需要修改每个小窗口的数据source

7.png

再选择对应的数据项


大功告成了

9.png

最后希望大家都能部署成功

10.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册