当前位置:   article > 正文

springboot整合actuator、admin对应用程序进行监控_spring boot actuator yml 配置

spring boot actuator yml 配置

Spring Boot Actuator 是 Spring Boot 的一个子项目,可以对 Spring Boot 应用程序进行监控和管理,并对外提供了大量的端点,可以选择使用 HTTP 端点或 JMX 来管理和监控应用程序。

这篇文章主要介绍我们的应用程序中怎么加入actuator来对应用进行监控。

首先,需要通过Spring官网访问我们应用程序使用的Springboot版本对应的actutor版本的文档,本篇文章使用Springboot版本为2.3.4.RELEASE。

spring boot actuator 2.3.4.RELEASEicon-default.png?t=N7T8https://docs.spring.io/spring-boot/docs/2.3.4.RELEASE/reference/html/production-ready-features.html#production-ready

 

目录

1、创建Springboot项目

2、整合Spring Boot Actuator

3、暴露所有端点

4、整合Spring Boot Admin

搭建Spring Boot Admin Server

创建Spring Boot Admin Client

5、整合Spring Security

6、注册到注册中心


1、创建Springboot项目

通过IntelliJ IDEA创建一个名为actuator的Springboot项目

修改pom.xml文件,将spring boot的版本修改为2.3.4.RELEASE。

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.3.4.RELEASE</version>
  5. <relativePath />
  6. </parent>

2、整合Spring Boot Actuator

在我们的springboot应用中整合actuator非常简单,只需要一个maven依赖:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. </dependency>

完整的项目依赖如下

  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. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.3.4.RELEASE</version>
  9. <relativePath/>
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>actuator</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <properties>
  15. <java.version>1.8</java.version>
  16. </properties>
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-test</artifactId>
  25. <scope>test</scope>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-actuator</artifactId>
  30. </dependency>
  31. </dependencies>
  32. <build>
  33. <plugins>
  34. <plugin>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-maven-plugin</artifactId>
  37. </plugin>
  38. </plugins>
  39. </build>
  40. </project>

最后设置一下启动端口,修改application.yml配置文件

  1. server:
  2. port: 8077

访问localhost:端口号/actuator,可以看到返回了很多个http链接地址,这些就是actuator默认提供给我们获取应用信息的端点。

http://localhost:8077/actuator/info用于获取应用的信息,这个端点默认返回空数据,这个是需要我们自己配置的。

http://localhost:8077/actuator/health用于获取服务的健康状态,如果服务依赖的所有中间件都是正常状态,这里会返回一个UP,表示在线状态。

health端点默认只返回了一个状态,可以通过以下配置,让端点返回详细的信息。

  1. management:
  2. endpoint:
  3. health:
  4. show-details: always

然后重启项目,再次访问health端点:

3、暴露所有端点

上一步中,我们访问actuator只返回了两个端点:health和info,其实actuator提供的端点远不止这些,官网提供的jmx环境和web环境下各个端点的开放情况。

IDJMXWeb

auditevents

Yes

No

beans

Yes

No

caches

Yes

No

conditions

Yes

No

configprops

Yes

No

env

Yes

No

flyway

Yes

No

health

Yes

Yes

heapdump

N/A

No

httptrace

Yes

No

info

Yes

Yes

integrationgraph

Yes

No

jolokia

N/A

No

logfile

N/A

No

loggers

Yes

No

liquibase

Yes

No

metrics

Yes

No

mappings

Yes

No

prometheus

N/A

No

scheduledtasks

Yes

No

sessions

Yes

No

shutdown

Yes

No

threaddump

Yes

No

那么,其他端点怎么暴露出来呢,让我们访问http://localhost:8077/actuator就能得到所有可用端点。

步骤:修改application.yml,添加暴露所有端点的配置

  1. server:
  2. port: 8077
  3. management:
  4. endpoint:
  5. health:
  6. show-details: always # 显示健康状态详情
  7. endpoints:
  8. web:
  9. exposure:
  10. include: "*" # 暴露所有端点
  11. base-path: /actuator

这里的端点endpoint可以理解为Controller接口,通过端点可以获取应用的详细信息,包括实例健康状态、配置信息、映射信息、缓存信息等等。

关于具体每个端点的功能,就不一一介绍了,可以通过页面进行查看。

这是Springboot Actuator 2.3.4.RELEASE版本返回的所有端点。

  1. {
  2. "_links": {
  3. "self": {
  4. "href": "http://localhost:8091/actuator",
  5. "templated": false
  6. },
  7. "beans": {
  8. "href": "http://localhost:8091/actuator/beans",
  9. "templated": false
  10. },
  11. "caches-cache": {
  12. "href": "http://localhost:8091/actuator/caches/{cache}",
  13. "templated": true
  14. },
  15. "caches": {
  16. "href": "http://localhost:8091/actuator/caches",
  17. "templated": false
  18. },
  19. "health-path": {
  20. "href": "http://localhost:8091/actuator/health/{*path}",
  21. "templated": true
  22. },
  23. "health": {
  24. "href": "http://localhost:8091/actuator/health",
  25. "templated": false
  26. },
  27. "info": {
  28. "href": "http://localhost:8091/actuator/info",
  29. "templated": false
  30. },
  31. "conditions": {
  32. "href": "http://localhost:8091/actuator/conditions",
  33. "templated": false
  34. },
  35. "configprops": {
  36. "href": "http://localhost:8091/actuator/configprops",
  37. "templated": false
  38. },
  39. "env": {
  40. "href": "http://localhost:8091/actuator/env",
  41. "templated": false
  42. },
  43. "env-toMatch": {
  44. "href": "http://localhost:8091/actuator/env/{toMatch}",
  45. "templated": true
  46. },
  47. "loggers": {
  48. "href": "http://localhost:8091/actuator/loggers",
  49. "templated": false
  50. },
  51. "loggers-name": {
  52. "href": "http://localhost:8091/actuator/loggers/{name}",
  53. "templated": true
  54. },
  55. "heapdump": {
  56. "href": "http://localhost:8091/actuator/heapdump",
  57. "templated": false
  58. },
  59. "threaddump": {
  60. "href": "http://localhost:8091/actuator/threaddump",
  61. "templated": false
  62. },
  63. "metrics-requiredMetricName": {
  64. "href": "http://localhost:8091/actuator/metrics/{requiredMetricName}",
  65. "templated": true
  66. },
  67. "metrics": {
  68. "href": "http://localhost:8091/actuator/metrics",
  69. "templated": false
  70. },
  71. "scheduledtasks": {
  72. "href": "http://localhost:8091/actuator/scheduledtasks",
  73. "templated": false
  74. },
  75. "mappings": {
  76. "href": "http://localhost:8091/actuator/mappings",
  77. "templated": false
  78. }
  79. }
  80. }

4、整合Spring Boot Admin

那么,actuator提供给我们那么多端点,不可能每次都通过这些端点来获取应用信息吧,太麻烦了,有没有一种更好的方式可以方便又快捷的查看应用程序的状态信息呢。

这个时候就需要引入Spring Boot Admin了

Spring Boot Admin是一个社区项目,用于管理和监控Spring Boot应用程序。

应用程序在我们的Spring Boot Admin Client(通过 HTTP)上注册,或使用Spring Cloud(如 Eureka、Consul)发现。

github可能访问缓慢或者无法访问,这里提供了gitee的仓库地址

Spring Boot Adminicon-default.png?t=N7T8https://gitee.com/pujiaolin/spring-boot-admin

搭建Spring Boot Admin Server

接下来开始整合Spring Boot Admin,根据官方文档的介绍,要先设置admin的服务器

通过idea创建一个Springboot项目,取名为admin-server

修改pom.xml,添加spring-boot-admin-starter-server依赖

  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. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.3.4.RELEASE</version>
  9. <relativePath />
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>admin-server</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <properties>
  15. <java.version>1.8</java.version>
  16. </properties>
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-test</artifactId>
  25. <scope>test</scope>
  26. </dependency>
  27. <dependency>
  28. <groupId>de.codecentric</groupId>
  29. <artifactId>spring-boot-admin-starter-server</artifactId>
  30. <version>2.3.1</version>
  31. </dependency>
  32. </dependencies>
  33. <build>
  34. <plugins>
  35. <plugin>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-maven-plugin</artifactId>
  38. </plugin>
  39. </plugins>
  40. </build>
  41. </project>

在启动类上添加@EnableAdminServer注解

这样,admin的服务端就搭建好了,然后访问localhost:8080,看到的就是admin的界面。

创建Spring Boot Admin Client

创建完服务器,需要往服务器注册客户端应用程序。

同样的,通过idea创建一个Springboot应用,取名为admin-client

修改pom.xml,添加admin客户端的依赖

  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. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.3.4.RELEASE</version>
  9. <relativePath/>
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>admin-client</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <properties>
  15. <java.version>1.8</java.version>
  16. </properties>
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-test</artifactId>
  25. <scope>test</scope>
  26. </dependency>
  27. <dependency>
  28. <groupId>de.codecentric</groupId>
  29. <artifactId>spring-boot-admin-starter-client</artifactId>
  30. <version>2.3.1</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-starter-security</artifactId>
  35. </dependency>
  36. </dependencies>
  37. <build>
  38. <plugins>
  39. <plugin>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-maven-plugin</artifactId>
  42. </plugin>
  43. </plugins>
  44. </build>
  45. </project>

然后修改配置文件application.yml,配置admin服务器的URL,因为admin-server没有配置端口,默认是8080,并把第一步actuator服务的配置复制过来。

  1. server:
  2. port: 8081
  3. spring:
  4. boot:
  5. admin:
  6. client:
  7. url: http://localhost:8080
  8. management:
  9. endpoints:
  10. web:
  11. exposure:
  12. include: "*"
  13. base-path: /actuator
  14. endpoint:
  15. health:
  16. show-details: always

启动客户端服务admin-client,再次访问localhost:8080,可以看到,客户端已经注册到了服务器

5、整合Spring Security

通过第四步,已经搭建好了admin,但是存在很严重的安全问题,任何人都可以访问程序的运行状态和信息,这个章节通过整合Spring Security来解决这个问题,配置登录才能访问。

点击Spring Boot Admin官网左边的目录链接,直接跳转到Security

根据要求,在admin-server端添加一个配置类,按需修改用户名和密码

  1. package com.example.adminserver.config;
  2. import de.codecentric.boot.admin.server.config.AdminServerProperties;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.http.HttpMethod;
  5. import org.springframework.security.config.Customizer;
  6. import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  7. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  8. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  9. import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
  10. import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
  11. import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
  12. import java.util.UUID;
  13. /**
  14. * @author heyunlin
  15. * @version 1.0
  16. */
  17. @Configuration(proxyBeanMethods = false)
  18. public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
  19. private final AdminServerProperties adminServer;
  20. public SecuritySecureConfig(AdminServerProperties adminServer) {
  21. this.adminServer = adminServer;
  22. }
  23. @Override
  24. protected void configure(HttpSecurity http) throws Exception {
  25. SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
  26. successHandler.setTargetUrlParameter("redirectTo");
  27. successHandler.setDefaultTargetUrl(this.adminServer.path("/"));
  28. http.authorizeRequests(
  29. (authorizeRequests) -> authorizeRequests.antMatchers(this.adminServer.path("/assets/**")).permitAll()
  30. .antMatchers(this.adminServer.path("/login")).permitAll().anyRequest().authenticated()
  31. ).formLogin(
  32. (formLogin) -> formLogin.loginPage(this.adminServer.path("/login")).successHandler(successHandler).and()
  33. ).logout((logout) -> logout.logoutUrl(this.adminServer.path("/logout"))).httpBasic(Customizer.withDefaults())
  34. .csrf((csrf) -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
  35. .ignoringRequestMatchers(
  36. new AntPathRequestMatcher(this.adminServer.path("/instances"),
  37. HttpMethod.POST.toString()),
  38. new AntPathRequestMatcher(this.adminServer.path("/instances/*"),
  39. HttpMethod.DELETE.toString()),
  40. new AntPathRequestMatcher(this.adminServer.path("/actuator/**"))
  41. ))
  42. .rememberMe((rememberMe) -> rememberMe.key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600));
  43. }
  44. // Required to provide UserDetailsService for "remember functionality"
  45. @Override
  46. protected void configure(AuthenticationManagerBuilder auth) throws Exception {
  47. auth.inMemoryAuthentication().withUser("user").password("12345").roles("USER");
  48. }
  49. }

然后重启admin-server,再次访问localhost:8080的时候,发现要登录

输入刚刚设置的用户名/密码:user/12345,点击登录按钮

这时候发现页面只是刷新了一下,并没有跳转到首页,这里也是个坑。

查看服务器报错信息

点第二行的matches()方法进去看看

很显然,就是因为这里主动抛出的异常导致的登录失败,往鼠标上面滚动,这是一个PasswordEncoder的实现类

由此可见,这是默认调用的这个实现类的matches()方法,为了解决这个异常问题,我们需要在admin-server自己创建一个org.springframework.security.crypto.password.PasswordEncoder的实现类,并声明为bean,然后重写matches()方法,直接通过equals()比较即可。

  1. package com.example.adminserver;
  2. import org.springframework.security.crypto.password.PasswordEncoder;
  3. import org.springframework.stereotype.Component;
  4. /**
  5. * @author heyunlin
  6. * @version 1.0
  7. */
  8. @Component
  9. public class MyPasswordEncoder implements PasswordEncoder {
  10. @Override
  11. public String encode(CharSequence rawPassword) {
  12. return null;
  13. }
  14. @Override
  15. public boolean matches(CharSequence rawPassword, String encodedPassword) {
  16. return rawPassword.equals(encodedPassword);
  17. }
  18. }

然后再次重启admin-server,这一次输入user/12345点击登录,成功进到了首页,但是,客户端怎么没了,居然没有注册进来。

接着看文档,后面还有很关键的说明,需要在客户端添加下面这个配置,用户名密码就是刚刚设置的用户名user和密码12345。

修改admin-client的application.yml,添加用户名和密码的配置,然后重启一下admin-client服务

  1. server:
  2. port: 8081
  3. spring:
  4. boot:
  5. admin:
  6. client:
  7. username: user
  8. password: 12345
  9. url: http://localhost:8080
  10. management:
  11. endpoints:
  12. web:
  13. exposure:
  14. include: "*"
  15. base-path: /actuator
  16. endpoint:
  17. health:
  18. show-details: always

这时候再看刚才的页面,已经成功注册进来了

最后,因为用户名密码是写死在代码里的,一般希望能过通过配置文件动态修改。

在配置文件中配置用户名和密码

  1. server:
  2. port: 8080
  3. spring:
  4. security:
  5. user:
  6. name: user
  7. password: 12345

修改一下配置类,从配置中读取用户名和密码

  1. package com.example.adminserver.config;
  2. import de.codecentric.boot.admin.server.config.AdminServerProperties;
  3. import org.springframework.boot.autoconfigure.security.SecurityProperties;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.http.HttpMethod;
  6. import org.springframework.security.config.Customizer;
  7. import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  8. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  9. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  10. import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
  11. import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
  12. import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
  13. import java.util.UUID;
  14. /**
  15. * @author heyunlin
  16. * @version 1.0
  17. */
  18. @Configuration(proxyBeanMethods = false)
  19. public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
  20. private final AdminServerProperties adminServer;
  21. private final SecurityProperties securityProperties;
  22. public SecuritySecureConfig(AdminServerProperties adminServer, SecurityProperties securityProperties) {
  23. this.adminServer = adminServer;
  24. this.securityProperties = securityProperties;
  25. }
  26. @Override
  27. protected void configure(HttpSecurity http) throws Exception {
  28. SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
  29. successHandler.setTargetUrlParameter("redirectTo");
  30. successHandler.setDefaultTargetUrl(this.adminServer.path("/"));
  31. http.authorizeRequests(
  32. (authorizeRequests) -> authorizeRequests.antMatchers(this.adminServer.path("/assets/**")).permitAll()
  33. .antMatchers(this.adminServer.path("/login")).permitAll().anyRequest().authenticated()
  34. ).formLogin(
  35. (formLogin) -> formLogin.loginPage(this.adminServer.path("/login")).successHandler(successHandler).and()
  36. ).logout((logout) -> logout.logoutUrl(this.adminServer.path("/logout"))).httpBasic(Customizer.withDefaults())
  37. .csrf((csrf) -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
  38. .ignoringRequestMatchers(
  39. new AntPathRequestMatcher(this.adminServer.path("/instances"),
  40. HttpMethod.POST.toString()),
  41. new AntPathRequestMatcher(this.adminServer.path("/instances/*"),
  42. HttpMethod.DELETE.toString()),
  43. new AntPathRequestMatcher(this.adminServer.path("/actuator/**"))
  44. ))
  45. .rememberMe((rememberMe) -> rememberMe.key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600));
  46. }
  47. // Required to provide UserDetailsService for "remember functionality"
  48. @Override
  49. protected void configure(AuthenticationManagerBuilder auth) throws Exception {
  50. auth.inMemoryAuthentication().withUser(securityProperties.getUser().getName())
  51. .password(securityProperties.getUser().getPassword()).roles("USER");
  52. }
  53. }

6、注册到注册中心

以admin-server为例,将其注册到nacos。

添加nacos相关依赖,注册中心和配置中心的依赖都加进来,统一管理配置信息。

  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. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.3.4.RELEASE</version>
  9. <relativePath />
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>admin-server</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <properties>
  15. <java.version>1.8</java.version>
  16. <admin.version>2.3.1</admin.version>
  17. <nacos.version>2.2.0.RELEASE</nacos.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-security</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>de.codecentric</groupId>
  35. <artifactId>spring-boot-admin-starter-server</artifactId>
  36. <version>${admin.version}</version>
  37. </dependency>
  38. <!--nacos注册中心-->
  39. <dependency>
  40. <groupId>com.alibaba.cloud</groupId>
  41. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  42. <version>${nacos.version}</version>
  43. </dependency>
  44. <!--nacos配置中心-->
  45. <dependency>
  46. <groupId>com.alibaba.cloud</groupId>
  47. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  48. <version>${nacos.version}</version>
  49. </dependency>
  50. </dependencies>
  51. <build>
  52. <plugins>
  53. <plugin>
  54. <groupId>org.springframework.boot</groupId>
  55. <artifactId>spring-boot-maven-plugin</artifactId>
  56. </plugin>
  57. </plugins>
  58. </build>
  59. </project>

然后创建bootstrap.yml,添加nacos注册中心和配置中心配置

  1. nacos:
  2. url: localhost:8848
  3. namespace: 0df4345c-cf1e-4af4-9501-d4be92ca6fda
  4. spring:
  5. cloud:
  6. nacos:
  7. discovery:
  8. register-enabled: true
  9. server-addr: ${nacos.url}
  10. namespace: ${nacos.namespace}
  11. config:
  12. file-extension: yaml
  13. server-addr: ${nacos.url}
  14. namespace: ${nacos.namespace}

最后,需要设置spring.application.name,否则不会注册到nacos

  1. server:
  2. port: 8080
  3. spring:
  4. security:
  5. user:
  6. name: user
  7. password: 12345
  8. application:
  9. name: admin-server

启动nacos服务,然后再启动admin-server,在nacos控制台的服务列表,成功看到了注册进来的的admin-server

admin-server注册到注册中心之后,会自动拉取添加了spring-boot-starter-admin-client依赖的服务,所以需要删除客户端配置,否则将会有两个同一服务的实例注册到admin服务器。

修改admin-client服务的配置文件application.yml,删除之前添加的admin客户端配置。

  1. server:
  2. port: 8081
  3. management:
  4. endpoints:
  5. web:
  6. exposure:
  7. include: "*"
  8. base-path: /actuator
  9. endpoint:
  10. health:
  11. show-details: always

关于nacos如何使用,可以参考博主的另一篇文章:

nacos作为注册中心和配置中心icon-default.png?t=N7T8https://blog.csdn.net/heyl163_/article/details/128536799好了,以上就是本篇文章要分享的全部内容了,看完不要忘了点赞+收藏哦~

文章中涉及的项目均已上传到gitee,需要的可以下载到本地:

actuatoricon-default.png?t=N7T8https://gitee.com/he-yunlin/actuator.gitspring boot整合admin实现对应用监控服务器项目icon-default.png?t=N7T8https://gitee.com/he-yunlin/admin-server.gitSpring Boot Admin Client项目icon-default.png?t=N7T8https://gitee.com/he-yunlin/admin-client.git

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/101977
推荐阅读
相关标签
  

闽ICP备14008679号