一、官方地址 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
官方提示
可以参考我的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>
- 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>
- spring-boot-starter-actuator</artifactId>
- <version>2.1.1.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- spring-boot-starter-actuator</artifactId>
- <version>2.1.1.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>com.alibaba.boot</groupId>
- nacos-config-spring-boot-starter</artifactId>
- <version>${nacos-config-spring-boot.version}</version>
- </dependency>
- <dependency>
- <groupId>com.alibaba.boot</groupId>
- nacos-config-spring-boot-actuator</artifactId>
- <version>${nacos-config-spring-boot.version}</version>
- </dependency>
- <dependency>
- <groupId>org.dromara.dynamictp</groupId>
- dynamic-tp-spring-boot-starter-nacos</artifactId>
- <version>1.2.0</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- spring-boot-starter-web</artifactId>
- <version>2.1.1.RELEASE</version>
- <scope>compile</scope>
- <exclusions>
- <exclusion>
- <groupId>com.fasterxml.jackson.core</groupId>
- jackson-databind</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- jackson-databind</artifactId>
- <version>2.14.2</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- 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>
- 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中也是一样的
四、报错 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/json/JsonMapper
这是因为依赖冲突了
mvn dependency:tree | findstr "jackson"命令执行后如果有输出则是有冲突
- <dependency>
- <groupId>org.springframework.boot</groupId>
- spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>com.fasterxml.jackson.core</groupId>
- jackson-databind</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- 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
2. 项目中配置Prometheus
2.1 引入依赖
- <dependency>
- <groupId>io.micrometer</groupId>
- 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,如果能找到,则说明已经可以监听线程池情况了
3. Grafana配置
3.1 获取Grafana的配置json文件
官网的Grafana配置文件:传送门
3.2 配置
浏览器输入127.0.0.1:3000,进入Grafana的图形化界面
选择刚才下载的json文件导入,或者直接复制到窗口进行导入
导入后需要修改每个小窗口的数据source
再选择对应的数据项
大功告成了
最后希望大家都能部署成功
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |