美文网首页
SpringBoot 单应用监控方案(SpringBootAdm

SpringBoot 单应用监控方案(SpringBootAdm

作者: 码农家的蜗牛 | 来源:发表于2020-02-28 10:24 被阅读0次

一. 什么是 SpringBootAdmin?

它是一个非Spring官方开发的用于监控SpringBoot应用的辅助应用,
一直在随着官方版本更新, 可以实时查看应用的很多信息, 基于SpringBootActuator.

说明: 以下搭建方案基于SpringBoot 2.x版本

二. 搭建 SpringBootAdmin 服务端.

  1. 创建一个新的SpringBoot项目, 引入如下依赖:
        <!-- 用于启动应用 -->
        <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>2.1.0</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-mail</artifactId>
        </dependency>
  1. 配置文件 application.yml
# 端口
server:
  port: 8000

# 安全控制
spring:

  security:
    user:
      name: your_name
      password: your_password
  # 服务状态邮件通知
  mail:
    host: smtp.qq.com
    username: your_username
    password: your_password
    properties:
      mail:
        smtp:
          auth: true
          starttls.enable: true
          starttls.required: true

  boot.admin.notify.mail.from: your_from_email_address
  boot.admin.notify.mail.to: your_to_email_address
  1. SpringSecurity配置
package com.example.monitor.config;

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

/**
 * @Description: Spring Security配置
 * @Author: ZhangLuo
 */
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecurityConfig(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", 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/**"
                );
    }
}
  1. 应用启动类配置:
package com.example.monitor;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Description: Spring Boot 启动类
 * @Author: ZhangLuo
 */
@EnableAdminServer
@SpringBootApplication
public class MonitorApplication {

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

}

至此, 一个简单的搭建完成, 启动打开 http://127.0.0.1:8000 即可查看, 输入在配置文件配置的账号密码即可.

三. 搭建 SpringBootAdmin 客户端.

  1. 创建或者使用现有的SpringBoot应用 引入依赖
        <!-- 应用监控客户端 -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.1.0</version>
        </dependency>
  1. 配件文件 application.yml
  # 应用监控
spring:
  boot.admin.client.url: http://127.0.0.1:8000 #服务端的地址
  boot:
    admin:
      client:
        instance:
          service-url: http://127.0.0.1:8080 #客户端告诉服务端自己的地址

说明: 如果客户端有鉴权,请把 contextPath/actuator/** 设置为不需要鉴权, 这是服务端获取客户端信息的地址

启动后, 查看http://127.0.0.1:8000 即可看到应用上线, 查看客户端应用状态了。

应用上线查看:


image.png

应用信息查看:


image.png

完结!!!!

相关文章

网友评论

      本文标题:SpringBoot 单应用监控方案(SpringBootAdm

      本文链接:https://www.haomeiwen.com/subject/kyjkhhtx.html