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

一、官方地址 DynamicTP

二、踩坑

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

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

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

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

2.依赖版本

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

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

官方提示

image

可以参考我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dong</groupId>
    <artifactId>myspringboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>myspringboot</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <nacos-config-spring-boot.version>0.2.10</nacos-config-spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>${nacos-config-spring-boot.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-actuator</artifactId>
            <version>${nacos-config-spring-boot.version}</version>
        </dependency>

        <dependency>
            <groupId>org.dromara.dynamictp</groupId>
            <artifactId>dynamic-tp-spring-boot-starter-nacos</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.1.RELEASE</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-databind</artifactId>
                </exclusion>
            </exclusions>  
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.14.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.1.RELEASE</version>
                <configuration>
                    <mainClass>com.dong.myspringboot.MyspringbootApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

3.DynamicTP配置

先贴上我的application.yml

server:
  port: 9089
spring:
  application:
    name: my-service
  profiles:
    active: public

nacos:
  config:
    server-addr: 127.0.0.1:8848
    type: yaml
    data-ids: my-service-dev,my-dtp-service  # 逗号分隔,第一个是项目主配置,第二个是动态线程池配置
    auto-refresh: true
    group: DEFAULT_GROUP
    bootstrap:
      enable: true
      log-enable: true

data-ids要和Nacos配置中一模一样,比如我的DP配置是my-dtp-service,那么我的Nacos中也是一样的

image

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

这是因为依赖冲突了

mvn dependency:tree | findstr "jackson"命令执行后如果有输出则是有冲突

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.14.2</version>
</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

image

2. 项目中配置Prometheus

2.1 引入依赖

<dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
        <version>1.1.2</version>
</dependency>

!!!!依赖版本是个坑

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

2.2 pom.xml文件中添加指标暴露配置

management:
  metrics:
    export:
      prometheus:
        enabled: true
  endpoints:
    web:
      exposure:
        include: '*'

2.3 修改Prometheus配置

修改prometheus.yml

添加或覆盖以下代码

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ["localhost:9089"]  #此处的ip和端口为要监听的SpringBoot项目的ip和端口

2.4 验证一下

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

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

image

3. Grafana配置

3.1 获取Grafana的配置json文件

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

3.2 配置

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

image

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

image

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

image

再选择对应的数据项

image

大功告成了

image

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

image

posted @   卡利的亲爹  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示