springboot2集成Spring Boot Admin

2024-06-21 07:47

Spring Boot Admin

https://github.com/codecentric/spring-boot-admin


http://docs.spring-boot-admin.com/current/

简介

​ Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。


主要的功能点有:

  • 显示应用程序的监控状态

  • 应用程序上下线监控

  • 查看 JVM,线程信息

  • 可视化的查看日志以及下载日志文件

  • 动态切换日志级别

  • Http 请求信息跟踪

  • 其他功能点……

springboot2集成Spring Boot Admin实例

环境要求 jdk1.8 + springboot 2.3

1、原生springboot集成

springboot2-admin 配置

步骤1:创建maven项目
步骤2:配置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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot2-parent</artifactId>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springboot2-admin</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <admin.starter.server.version>2.3.1</admin.starter.server.version>
        <spring.boot.admin.client.version>2.3.1</spring.boot.admin.client.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>${spring.boot.admin.client.version}</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>${admin.starter.server.version}</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
步骤3:配置application.yaml
server:
  port: 9000
spring:
  application:
    name: admin-server
  security:
    user:
      name: admin
      password: admin
      roles: admin
  boot: #admin-client 配置
    admin:
      client:
        url: http://admin:admin@127.0.0.1:9000
        enabled: true
        instance:
          prefer-ip: true # 使用ip注册进来
management: #admin-server配置
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS
步骤4:代码
@Configuration
public  class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()
                .and().csrf().disable();
    }
}
@EnableAdminServer
@SpringBootApplication
public class Springboot2AdminServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot2AdminServerApplication.class,args);
    }
}
步骤5:配置日志

logback-spring.xml

<configuration scan="true" scanPeriod="10 seconds">

    <property name="CONTEXT_NAME" value="client1" />
    <property name="LOG_PATH" value="logs" />
    <property name="MAX_FILE_SIZE" value="100MB" />
    <property name="MAX_HISTORY" value="30" />
    <!--读取配置中心的属性 -->
    <!-- <springProperty scope="context" name="LOG_PATH_NAME" source="logging.file.name"/> -->

    <contextName>${CONTEXT_NAME}</contextName>

    <!--输出到控制台 -->
    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%-5level:级别从左显示5个字符宽度,%logger{50}:表示logger名字最长50个字符,否则按照句点分割,%msg:日志消息,%i索引【从数字0开始递增】 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<!--            <level>DEBUG</level>-->
<!--        </filter>-->
        <encoder>
            <!--在控制台使用caller方式打印堆栈信息有超链接,使用replace去掉换行符-->
            <Pattern>%black(控制台-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--所有日志输出到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}.log</File>
        <!--日志文件输出格式 -->
        <encoder>
            <!--%logger{50}:表示logger名字最长50个字符,否则按照句点分割。
             %M:输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。
             %line:输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 后面可以加.zip -->
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!--日志文件保留天数 -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--文件达到 最大时会被压缩和切割 -->
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- ERROR 日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}-error.log</File>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}_error-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 指定级别 -->
            <level>ERROR</level>
            <!-- onMatch:意思是>=指定级别 接受 -->
            <onMatch>ACCEPT</onMatch>
            <!-- onMismatch:意思是<指定级别 拒绝 -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

   
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>
    
    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
    </root>
  <!--  <springProfile name="prod"> 
        <root level="INFO"> 
            <appender-ref ref="FILE" /> 
            <appender-ref ref="ERROR_FILE" /> 
        </root>
    </springProfile>-->
</configuration>
步骤6:启动服务

image.png

步骤7:访问服务

http://127.0.0.1:9000/

image.png

springboot2-admin-order 配置

步骤1:创建maven项目
步骤2: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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot2-parent</artifactId>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springboot2-admin-order</artifactId>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <admin.starter.server.version>2.3.1</admin.starter.server.version>
        <spring.boot.admin.client.version>2.3.1</spring.boot.admin.client.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

       <!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-security</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
      
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>${spring.boot.admin.client.version}</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
步骤3:application.yaml
server:
  servlet:
    context-path: /
  port: 8100
spring:
  application:
    ## 注册服务名
    name: admin-server-order
  ## spring boot admin
  boot:
    admin:
      client:
        url: http://admin:admin@127.0.0.1:9000
        enabled: true
        instance:
          prefer-ip: true # 使用ip注册进来
#  endpoints config
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      base-path: /actuator
      exposure:
        include: '*'
步骤4:配置日志

logback-spring.xml

<configuration scan="true" scanPeriod="10 seconds">

    <property name="CONTEXT_NAME" value="client1" />
    <property name="LOG_PATH" value="logs" />
    <property name="MAX_FILE_SIZE" value="100MB" />
    <property name="MAX_HISTORY" value="30" />
    <!--读取配置中心的属性 -->
    <!-- <springProperty scope="context" name="LOG_PATH_NAME" source="logging.file.name"/> -->

    <contextName>${CONTEXT_NAME}</contextName>

    <!--输出到控制台 -->
    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%-5level:级别从左显示5个字符宽度,%logger{50}:表示logger名字最长50个字符,否则按照句点分割,%msg:日志消息,%i索引【从数字0开始递增】 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<!--            <level>DEBUG</level>-->
<!--        </filter>-->
        <encoder>
            <!--在控制台使用caller方式打印堆栈信息有超链接,使用replace去掉换行符-->
            <Pattern>%black(控制台-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--所有日志输出到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}.log</File>
        <!--日志文件输出格式 -->
        <encoder>
            <!--%logger{50}:表示logger名字最长50个字符,否则按照句点分割。
             %M:输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。
             %line:输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 后面可以加.zip -->
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!--日志文件保留天数 -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--文件达到 最大时会被压缩和切割 -->
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- ERROR 日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}-error.log</File>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}_error-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 指定级别 -->
            <level>ERROR</level>
            <!-- onMatch:意思是>=指定级别 接受 -->
            <onMatch>ACCEPT</onMatch>
            <!-- onMismatch:意思是<指定级别 拒绝 -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

   
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>
    
    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
    </root>
  <!--  <springProfile name="prod"> 
        <root level="INFO"> 
            <appender-ref ref="FILE" /> 
            <appender-ref ref="ERROR_FILE" /> 
        </root>
    </springProfile>-->
</configuration>
步骤5:源代码
@SpringBootApplication
public class Springboot2AdminServerOrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot2AdminServerOrderApplication.class,args);
    }
}


步骤6:启动
步骤7:查看admin-server

http://127.0.0.1:9000/wallboard

image.png

2、springboot2 eureka 集成 spring boot admin

springboot2-eureka集群配置

步骤1:创建maven服务

创建springboot2-eureka9001,springboot2-eureka9002

步骤2:配置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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot2-parent</artifactId>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springboot2-eureka</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
       
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
步骤3:配置application.yaml

springboot2-eureka9001

server:
  port: 9001
spring:
  application:
    name: eurka-server
  security:
    user:
      name: admin
      password: 123456
eureka:
  instance:
    hostname: eurka9001 #eureka服务端的实例名称 
  client:
    #false表示不向注册中心注册自己
    registerWithEureka: true
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetchRegistry: false
    serviceUrl:
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9001/eureka/, http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9002/eureka/

springboot2-eureka9002

server:
  port: 9002
spring:
  application:
    name: eurka-server
  security:
    user:
      name: admin
      password: 123456
eureka:
  instance:
    hostname: eurka9002 #eureka服务端的实例名称 
  client:
    #false表示不向注册中心注册自己
    registerWithEureka: true
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetchRegistry: false
    serviceUrl:
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9001/eureka/, http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9002/eureka/
步骤4: 修改hosts
192.168.137.1 eurka9002 eurka9001
步骤 5:源代码
@EnableEurekaServer
@SpringBootApplication
public class SpringBoot2EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBoot2EurekaApplication.class, args);
    }

    @EnableWebSecurity
    public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable();
            super.configure(http);
        }
    }
}
步骤6:启动
步骤7:查看eureka界面

http://127.0.0.1:9001 admin/123456

image.png

springboot2-admin-eureka-server配置

步骤1:创建maven项目
步骤2: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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot2-parent</artifactId>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springboot2-admin-eureka-server</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
步骤3:applicaiton.yaml
server:
  port: 8001
spring:
  application:
    ## 注册服务名
    name: admin-eureka-server
  security:
    user:
      name: admin
      password: 123456
  ## spring boot admin
#  boot:
#    admin:
#      client:
#        url: http://admin:123456@127.0.0.1:8001
#        enabled: true
#        instance:
#          prefer-ip: true # 使用ip注册进来
#  endpoints config
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      base-path: /actuator
      exposure:
        include: '*'
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
    metadata-map:
      startup: ${random.int}    #needed to trigger info and endpoint update after restart
      metadata-map:
        user.name: "admin"         #These two are needed so that the server
        user.password: "123456" #can access the protected client endpoints
  client:
    registryFetchIntervalSeconds: 5
    serviceUrl:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9001/eureka/, http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9002/eureka/
步骤4:源代码
package cn.guangjun.spring.boot2.admin.eureka.server.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * @BeongsPackage:cn.guangjun.spring.boot2.admin.config
 * @Author guangjunhu
 * @Date: 2023年05月05日 14:41:10
 * @Descripton:
 * @Version:
 **/
@Configuration
public  class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()
                .and().csrf().disable();
    }
}


package cn.guangjun.spring.boot2.admin.eureka.server;

import com.sun.glass.ui.Application;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @BeongsPackage:cn.guangjun.spring.boot2.admin.eureka.server
 * @Author guangjunhu
 * @Date: 2023年05月05日 17:40:31
 * @Descripton:
 * @Version:
 **/
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class Springboot2AdminEurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot2AdminEurekaServerApplication.class,args);
    }
}


步骤5:日志logback-spring配置
<configuration scan="true" scanPeriod="10 seconds">

    <property name="CONTEXT_NAME" value="client1" />
    <property name="LOG_PATH" value="logs" />
    <property name="MAX_FILE_SIZE" value="100MB" />
    <property name="MAX_HISTORY" value="30" />
    <!--读取配置中心的属性 -->
    <!-- <springProperty scope="context" name="LOG_PATH_NAME" source="logging.file.name"/> -->

    <contextName>${CONTEXT_NAME}</contextName>

    <!--输出到控制台 -->
    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%-5level:级别从左显示5个字符宽度,%logger{50}:表示logger名字最长50个字符,否则按照句点分割,%msg:日志消息,%i索引【从数字0开始递增】 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<!--            <level>DEBUG</level>-->
<!--        </filter>-->
        <encoder>
            <!--在控制台使用caller方式打印堆栈信息有超链接,使用replace去掉换行符-->
            <Pattern>%black(控制台-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--所有日志输出到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}.log</File>
        <!--日志文件输出格式 -->
        <encoder>
            <!--%logger{50}:表示logger名字最长50个字符,否则按照句点分割。
             %M:输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。
             %line:输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 后面可以加.zip -->
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!--日志文件保留天数 -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--文件达到 最大时会被压缩和切割 -->
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- ERROR 日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}-error.log</File>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}_error-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 指定级别 -->
            <level>ERROR</level>
            <!-- onMatch:意思是>=指定级别 接受 -->
            <onMatch>ACCEPT</onMatch>
            <!-- onMismatch:意思是<指定级别 拒绝 -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

   
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>
    
    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
    </root>
  <!--  <springProfile name="prod"> 
        <root level="INFO"> 
            <appender-ref ref="FILE" /> 
            <appender-ref ref="ERROR_FILE" /> 
        </root>
    </springProfile>-->
</configuration>
步骤6:运行

image.png

springboot2-admin-eureka-client配置

步骤1:创建maven服务
步骤2: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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot2-parent</artifactId>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springboot2-admin-eureka-client</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
步骤3:application.yaml配置
server:
  port: 8002
spring:
  application:
    ## 注册服务名
    name: admin-eureka-client-order
  ## spring boot admin
  security:
    user:
      name: admin
      password: 123456
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      base-path: /actuator
      exposure:
        include: '*'
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
    metadata-map:
      startup: ${random.int}    #needed to trigger info and endpoint update after restart
      metadata-map:
        user.name: "admin"         #These two are needed so that the server
        user.password: "123456" #can access the protected client endpoints
  client:
    registryFetchIntervalSeconds: 5
    serviceUrl:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9001/eureka/, http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:9002/eureka/
步骤4:日志配置

logback-spring.xml

<configuration scan="true" scanPeriod="10 seconds">

    <property name="CONTEXT_NAME" value="client1" />
    <property name="LOG_PATH" value="logs" />
    <property name="MAX_FILE_SIZE" value="100MB" />
    <property name="MAX_HISTORY" value="30" />
    <!--读取配置中心的属性 -->
    <!-- <springProperty scope="context" name="LOG_PATH_NAME" source="logging.file.name"/> -->

    <contextName>${CONTEXT_NAME}</contextName>

    <!--输出到控制台 -->
    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%-5level:级别从左显示5个字符宽度,%logger{50}:表示logger名字最长50个字符,否则按照句点分割,%msg:日志消息,%i索引【从数字0开始递增】 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<!--            <level>DEBUG</level>-->
<!--        </filter>-->
        <encoder>
            <!--在控制台使用caller方式打印堆栈信息有超链接,使用replace去掉换行符-->
            <Pattern>%black(控制台-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--所有日志输出到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}.log</File>
        <!--日志文件输出格式 -->
        <encoder>
            <!--%logger{50}:表示logger名字最长50个字符,否则按照句点分割。
             %M:输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。
             %line:输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 后面可以加.zip -->
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <!--日志文件保留天数 -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--文件达到 最大时会被压缩和切割 -->
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- ERROR 日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_PATH}/${CONTEXT_NAME}-error.log</File>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50}.%M\(%line\) -- %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${CONTEXT_NAME}_error-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 指定级别 -->
            <level>ERROR</level>
            <!-- onMatch:意思是>=指定级别 接受 -->
            <onMatch>ACCEPT</onMatch>
            <!-- onMismatch:意思是<指定级别 拒绝 -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

   
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>
    
    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
    </root>
  <!--  <springProfile name="prod"> 
        <root level="INFO"> 
            <appender-ref ref="FILE" /> 
            <appender-ref ref="ERROR_FILE" /> 
        </root>
    </springProfile>-->
</configuration>
步骤5:源代码
package cn.guangjun.spring.boot2.admin.eureka.client.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * @BeongsPackage:cn.guangjun.spring.boot2.admin.config
 * @Author guangjunhu
 * @Date: 2023年05月05日 14:41:10
 * @Descripton:
 * @Version:
 **/
@Configuration
public  class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()
                .and().csrf().disable();
    }
}

package cn.guangjun.spring.boot2.admin.eureka.client;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @BeongsPackage:cn.guangjun.spring.boot2.admin.eureka.client.config.cn.guangjun.spring.boot2.admin.eureka.client
 * @Author guangjunhu
 * @Date: 2023年05月05日 17:39:47
 * @Descripton:
 * @Version:
 **/
@EnableDiscoveryClient
@SpringBootApplication
public class Springboot2AdminEurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot2AdminEurekaClientApplication.class,args);
    }
}

步骤6:启动

image.png

image.png

springboot2-admin集成nacos

nacos配置

nacos官网:https://nacos.io/zh-cn/


https://github.com/nacos-group

步骤1:nacos下载

https://github.com/alibaba/nacos/releases


image.png


如果下载源码则详见官网

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
步骤2:配置属性文件

image.png

数据库配置:

image.png

权限配置

image.png

步骤3:启动服务
./startup.sh -m standalone #单机启动模式

步骤4:查看启动日志

tailf /opt/nacos/logs/nacos.log

image.png

image.png

登录:

image.png

image.png

image.png

备注:

springboot2 集成 nacos 不需要spring cloud nacos

创建项目

1、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>
    <parent>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <artifactId>springboot2-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>springboot2-admin-server-nacos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot2-admin-server-nacos</name>
    <description>springboot2-admin-server-nacos</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <scope>provided</scope>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.alibaba.boot</groupId>-->
<!--            <artifactId>nacos-config-spring-boot-starter</artifactId>-->
<!--            <version>0.2.1</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-discovery-spring-boot-starter</artifactId>
            <version>0.2.7</version>
        </dependency>
        <!--<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、application.yaml

server:
  port: 9001
spring:
  application:
    name: spring-admin-nacos-server
nacos:
  discovery:
    enabled: true
    auto-register: true
    server-addr: 192.168.137.40:8848
    access-key: cfbc3d452bd5cf43407c4a46e4ffd361dc9a90e3
    secret-key: ZjA4ZjhmNjU5NzVlNmYxZDRhOTM0OWY1MTAxMWFlZGJiNTI1NjFhYQ==
    username: nacos
    password: nacos
    namespace: public
    register:
      group-name: springboot-admin
    health-check-url: /actuator/health 
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      base-path: /actuator
      exposure:
        include: '*'

3、源代码

package cn.guangjun.spring.boot2.admin.server.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Springboot2AdminServerNacosApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot2AdminServerNacosApplication.class, args);
    }
    
}

4、运行

image.png

springboot admin集成nacos

springboot2-admin-server-nacos
步骤1:创建maven项目

image-20230509160540215

步骤2: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>
    <parent>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <artifactId>springboot2-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>springboot2-admin-server-nacos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot2-admin-server-nacos</name>
    <description>springboot2-admin-server-nacos</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

步骤3:application.yaml
server:
  port: 9001
spring:
  application:
    name: spring-admin-nacos-server
  cloud:
    nacos:
      discovery:
        registerEnabled: true
        server-addr: 192.168.137.40:8848
        access-key: cfbc3d452bd5cf43407c4a46e4ffd361dc9a90e3
        secret-key: ZjA4ZjhmNjU5NzVlNmYxZDRhOTM0OWY1MTAxMWFlZGJiNTI1NjFhYQ==
        username: nacos
        password: nacos
        namespace: public
        group: springboot2-admin
        health-check-url: /actuator/health
management:
  server:
    port: 17003
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
步骤4:源代码
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class Springboot2AdminServerNacosApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot2AdminServerNacosApplication.class, args);
    }
}
步骤5:启动

image.png

springboot2-admin-client-nacos
步骤1:创建maven项目
步骤2: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>
    <parent>
        <groupId>cn.guangjun.spring.boot2</groupId>
        <artifactId>springboot2-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>springboot2-admin-client-nacos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot2-admin-client-nacos</name>
    <description>springboot2-admin-client-nacos</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

步骤3:application.yaml
server:
  port: 9002
spring:
  application:
    name: spring-admin-nacos-client
  cloud:
    nacos:
      discovery:
        registerEnabled: true
        server-addr: 192.168.137.40:8848
        access-key: cfbc3d452bd5cf43407c4a46e4ffd361dc9a90e3
        secret-key: ZjA4ZjhmNjU5NzVlNmYxZDRhOTM0OWY1MTAxMWFlZGJiNTI1NjFhYQ==
        username: nacos
        password: nacos
        namespace: public
        group: springboot2-admin
        health-check-url: /actuator/health
management:
  server:
    port: 17004
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
步骤4:源代码
@EnableDiscoveryClient
@SpringBootApplication
public class Springboot2AdminClientNacosApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot2AdminClientNacosApplication.class, args);
    }
}
步骤5:启动

image.png

相关新闻
热点
投票
查看结果
Tags

站点地图 在线访客: 今日访问量: 昨日访问量: 总访问量:

© 2025 个人网站 版权所有

备案号:苏ICP备2024108837号

苏公网安备32011302322151号