应用级监控方案Spring Boot Admin

应用级监控方案Spring Boot Admin_第1张图片

1.简介

Spring Boot Admin为项目常用的监控方式,可以动态的监控服务是否运行和运行的参数,如类的调用情况、流量等。其中分为server与client:

  • server: 提供展示UI与监控服务。
  • client:加入server,被监控的项目。

同时在监控的过程中spring-boot-starter-actuator也被经常提及,actuator使用后,会在被项目内部打上探针,提供一系列的监控api接口,如堆内存、栈内存等。下文数据为actuator提供。
应用级监控方案Spring Boot Admin_第2张图片

2.server端

2.1 新建springboot项目

这里不多说常用方法新建springboot项目。

2.2 修改pom文件

由于使用了spring cloud alibaba生态,所以这里将nacos包也加入了,请自行选择。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.2.0</version>
        </dependency>

        <!-- SpringCloud Alibaba Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringCloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

2.3 修改yml文件

server端暂无其他配置。

server:
  port: 8008
  servlet:
    context-path: /monitor
spring:
  application:
    name: monitor-resource # Eureka页面显示

2.4 修改

加入@EnableAdminServer注解。

@SpringBootApplication
@EnableAdminServer
public class MonitorApplication {

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

}

访问ip:端口/context-path就可以访问了。页面如下。
应用级监控方案Spring Boot Admin_第3张图片

3.client端

3.1 修改pom文件

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.2.0</version>
        </dependency>

3.2 修改yml文件

在有context-path情况下,需要加入特殊配置,否则报错。本文为nacos中的配置,请参考。

server:
  port: 8008
  servlet:
    context-path: /monitor
spring:
  application:
    name: monitor-resource 
  boot:
    admin:
      client:
        api-path:
        url: http://127.0.0.1:8008/monitor  # 这里为server地址,如果有context-path需要加入
        instance:
          prefer-ip: true # 使用ip注册进来
        management-url: /monitor
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: ip:8848
        metadata:   # 如果有context-path需要加上,否者报错
          management:
            context-path: ${server.servlet.context-path}/actuator
      config:
        # 配置中心地址
        server-addr: ip:8848
        # 配置文件格式
        file-extension: yml
management:  # actuator配置
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: '*'

启动后即可加入server服务,页面展示如下:
应用级监控方案Spring Boot Admin_第4张图片
应用级监控方案Spring Boot Admin_第5张图片
应用级监控方案Spring Boot Admin_第6张图片
应用级监控方案Spring Boot Admin_第7张图片

4.Security

4.1 修改pom文件。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

4.2 修改application.xml文件

加入登录账号密码。

spring:
  security:
    user:
      name: "admin"
      password: "1qaz@WSX"

4.3 新增登入登出配置

这里需要配置登入登出的页面地址,同其他博文相同配置。

@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter( "redirectTo" );

        http.authorizeRequests()
                .antMatchers( adminContextPath + "/assets/**" ).permitAll()
                .antMatchers( adminContextPath + "/login" ).permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage( adminContextPath + "/login" ).successHandler( successHandler ).and()
                .logout().logoutUrl( adminContextPath + "/logout" ).and()
                .httpBasic().and()
                .csrf().disable();
    }
}

再次登录可以看到需要账号登录。
应用级监控方案Spring Boot Admin_第8张图片

你可能感兴趣的:(spring,boot,后端,java)