SpringBoot Admin 系统监控

目录

1.新建系统监控服务

1.1 引入服务端依赖

1.2 添加启动注解

2.客户端添加配置

2.1 引入客户端依赖

2.2 添加配置参数

3.查看系统监控

4.配置安全验证

4.1 引入依赖

4.2 配置参数 

4.3 添加配置类 

5.配置线上日志

6.常见问题

6.1 线上服务离线


1.新建系统监控服务

1.1 引入服务端依赖

说明:由于我需要兼容客户端nacos的版本,所以这里 spring-boot-starter-parent 使用了2.3.6.RELEASE版本,客户端nacos-config-spring-boot-starter使用了0.2.4版本

        <spring-boot-admin.version>2.3.1</spring-boot-admin.version>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>${spring-boot-admin.version}</version>
        </dependency>

1.2 添加启动注解

        引入依赖后启动类添加 @EnableAdminServer 注解,并且配置服务端口号,因为这是一个向外部提供接口的web项目

        然后启动admin服务端

2.客户端添加配置

2.1 引入客户端依赖

这里admin版本尽量和boot保持一致,避免出现版本冲突问题

        <spring-boot-admin.version>2.3.1</spring-boot-admin.version>

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>${spring-boot-admin.version}</version>
        </dependency>

2.2 添加配置参数

spring:
  application:
    name: delivery

  boot:
    admin:
      client:
        url: http://localhost:9999

management:
  endpoint:
    health:
      show-details: always

  endpoints:
    web:
      exposure:
        include: "*"

配置好后启动客户端服务

3.查看系统监控

访问 http://localhost:9999/

4.配置安全验证

4.1 引入依赖

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

4.2 配置参数 

spring:
  application:
    name: monitor-service
  security:
    user:
      name: huachun
      password: huachun

4.3 添加配置类 

package com.hhmt.monitor.config;

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

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;

/**
 * 辉煌明天
 * FileName: AdminSecurityConfig
 * Author:   huachun
 * email: huachun_w@163.com
 * Date:     2022/3/3 17:26
 * Description: 原文链接:https://blog.csdn.net/wuxiuyong/article/details/119180458
 */
@EnableWebSecurity
@Configuration(proxyBeanMethods = false)
public class AdminSecurityConfig extends WebSecurityConfigurerAdapter {


    private final String adminContextPath;

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

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

        http.authorizeRequests()
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .antMatchers(adminContextPath + "/instances/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**"
                );
        // @formatter:on
    }

    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/actuator/**");
    }

}

再次访问发现需要输入用户名和密码才能进去

5.配置线上日志

 由于我项目中引入了log4j所以可以直接进行配置

logging:
  pattern:
    file: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"
  file:
    name: ./ocpx_logs/hhmt-cpa-ocpx.log

启动后效果如下:

 还是比较满意的

参考文档:Spring Boot Admin Reference Guide

6.常见问题

6.1 线上服务离线

 原文参考:解决spring-boot-Admin的服务端和客户端不在同一个服务器的通信问题_feidie436的专栏-CSDN博客

springboot项目接入springbootAdmin搭建流程_wuxiuyong的博客-CSDN博客

解决方法:配置参数中  prefer-ip设置为true

spring:
  boot:
    admin:
      client:
        instance:
          prefer-ip: true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值