Spring Boot之Admin监控服务

Spring Boot之Admin监控服务

Spring Boot Admin监控服务

Spring Boot Admin(SBA)是一款基于Actuator开发的开源软件:https://github.com/codecentric/spring-boot-admin,以图形化界面的方式展示Spring Boot应用的配置信息、Beans信息、环境属性、线程信息、JVM状况等。

Spring Boot Admin文档: https://codecentric.github.io/spring-boot-admin/2.3.1/

搭建SBA服务端

搭建一个SBA服务端(Server),其他被监控的Spring Boot应用作为客户端(Client),客户端通过HTTP的方式将自己注册到服务端,以供服务端进行监控服务。

引入依赖

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

		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-server-ui</artifactId>
			<version>2.3.1</version>
		</dependency>

开启Admin监控

在Spring Boot入口类中加入@EnableAdminServer注解开启监控功能

@SpringBootApplication
@EnableAdminServer
public class DemoApplication {

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

配置

server:
  port: 8888

spring:
  application:
    name: admin-server

访问控制台

http://localhost:8888/
Spring Boot之Admin监控服务

搭建客户端

引入依赖

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

配置

# 打开客户端的监控
management:
  endpoints:
    web:
      exposure:
        include: '*'
server:
  port: 9999
  
spring:
  application:
    name: admin-client
  boot:
    admin:
      client:
        url: http://localhost:8888 #admin server的地址列表
        instance:
          service-url: http://127.0.0.1:9999 #当前系统地址

查看控制台

Admin 服务端会自动检查到客户端的变化
Spring Boot之Admin监控服务
页面会展示被监控的服务列表,点击详项目名称会进入此应用的详细监控信息 , 这些信息大多都来自于 Spring Boot Actuator 提供的接口。

Spring Boot之Admin监控服务

提醒功能

SBA提供了强大的提醒功能,能够在发生服务状态变更的时候发出告警。

添加邮件预警

默认情况下对于被检测的应用启动或者停止的时候会触发预警。

添加依赖

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

配置

spring:
  application:
    name: admin-server
  mail:
    # 配置 SMTP 服务器地址
    host: smtp.163.com
    # 发送者邮箱
    username: XXX@163.com
    # 配置密码,注意不是真正的密码,而是刚刚申请到的授权码
    password: JIZDE33434KZSVOTZ
    # 端口号:465或者994
    port: 465
    protocol: smtps
    properties:
      mail:
        # 表示开启 DEBUG 模式
        debug: true
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory
          auth: true
          starttls:
            enable: true
            required: true
            
  boot:
    admin:
      notify:
        mail:
          from: XXX@163.com
          to: XXX@onmicrosoft.com

查看邮件内容

Spring Boot之Admin监控服务

安全保护

admin-server安全保护

添加Spring Security依赖

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

配置用户和密码

spring:
  security:
    user:
      name: admin
      password: admin

Spring Boot之Admin监控服务

此时 , 由于admin-server进行了安全认证 , 因此admin-client端也需要配置下 admin-server的账号和密码。

Spring Boot之Admin监控服务
客户端配置

spring:
  boot:
    admin:
      client:
        url: http://localhost:8888 #admin server 的地址列表
        instance:
          service-url: http://127.0.0.1:9999 #当前系统地址
          name: client
        # admin-server若开启安全保护,则客户端注册到admin-server,需配置 admin-server的账号和密码
        password: admin
        username: admin

重启客户端,发现控制台有日志警告

 WARN 28024 --- [gistrationTask1] d.c.b.a.c.r.ApplicationRegistrator       : Failed to register application as Application(name=client, managementUrl=http://127.0.0.1:9999/actuator, healthUrl=http://127.0.0.1:9999/actuator/health, serviceUrl=http://127.0.0.1:9999) at spring-boot-admin ([http://localhost:8888/instances]): 401 : [no body]. Further attempts are logged on DEBUG level

由于admin-client 注册到 admin-server时,admin-server端有个http Basic认证,通过了认证后 admin-client才能注册到 admin-server上。

admin-server禁用安全性

@Configuration
public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()  
            .and().csrf().disable();
    }
}

Spring Boot之Admin监控服务

admin-client安全保护

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
spring:
  application:
    name: admin-client
  # admin-client 的用户名和密码
  security:
    user:
      name: admin123
      password: admin123
  boot:
    admin:
      client:
        url: http://localhost:8888 #admin server 的地址列表
        # 配置 admin-server的账号和密码
        username: admin
        password: admin
        instance:
          service-url: http://127.0.0.1:9999 #当前系统地址
          name: client
          metadata:
          # 这里配置admin-client的账号和密码
            user.name: ${spring.security.user.name}
            user.password: ${spring.security.user.password}
上一篇:阿里云ECS使用体验


下一篇:Django新建默认项目中,Static文件404的解决办法