SpringCloud--Admin服务监控(十三)

一、Spring Boot Admin 简介

  Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。
  Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件。Spring Boot Admin 分为 Server 端和 Client 端,Spring Boot Admin UI部分使用AngularJs将数据展示在前端。
常见的功能或者监控如下:
显示健康状况
显示详细信息,例如
JVM和内存指标
micrometer.io指标
数据源指标
缓存指标
显示构建信息编号
关注并下载日志文件
查看jvm系统和环境属性
查看Spring Boot配置属性
支持Spring Cloud的postable / env-和/ refresh-endpoint
轻松的日志级管理
与JMX-beans交互
查看线程转储
查看http跟踪
查看auditevents
查看http-endpoints
查看计划任务
查看和删除活动会话(使用spring-session)
查看Flyway / Liquibase数据库迁移
下载heapdump
状态变更通知(通过电子邮件,Slack,Hipchat,......)
状态更改的事件日志(非持久性)

二、Maven依赖

  1. 项目结构


    项目结构
  2. 服务端依赖

<!--Admin-Server-->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.1.5</version>
</dependency>

  1. 客户端依赖
<!--Admin-Client-->
<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.1.5</version>
</dependency>

三、配置

  1. 服务端入口类配置
@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class SpringBootAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }
}
  1. 服务端配置文件
spring.application.name=admin-server
server.port=8769

  1. 客户端配置
spring.application.name=admin-client
server.port=8080
# 注册到Admin
spring.boot.admin.client.url=http://localhost:8769
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=ALWAYS

四、测试

  1. 分别启动服务端与客户端


    启动服务端与客户端
  2. 访问
    http://localhost:8769

    访问

    访问

五、结合Eureka注册中心

  1. 创建注册中心项目


    项目结构
  2. 添加Maven依赖
    注册中心:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

客户端(监控中心与业务服务):

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.1.3.RELEASE</version>
</dependency>

  1. 配置
    注册中心:
spring.application.name=eureka-server
server.port=8761
# 注册中心
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
# 健康数据
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=ALWAYS

admin监控中心:

spring.application.name=admin-server
server.port=8769
# 注册中心注册
eureka.client.registryFetchIntervalSeconds=5
eureka.client.service-url.defaultZone=${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
eureka.instance.leaseRenewalIntervalInSeconds=10
# 健康检查路径
eureka.instance.health-check-url-path=/actuator/health
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=ALWAYS

业务服务:

spring.application.name=admin-client
server.port=8080

# 注册中心注册
eureka.client.registryFetchIntervalSeconds=5
eureka.client.service-url.defaultZone=${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
eureka.instance.leaseRenewalIntervalInSeconds=10
# 健康检查路径
eureka.instance.health-check-url-path=/actuator/health
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=ALWAYS

六、测试

  1. 注册中心
    http://localhost:8761/

    注册中心

  2. 监控中心
    http://localhost:8769

    监控中心

七、集成spring security

  1. Admin监控中心添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.Admin监控中心 添加配置

# 安全配置
spring.security.user.name=admin
spring.security.user.password=admin
eureka.instance.metadata-map.user.name=${spring.security.user.name}
eureka.instance.metadata-map.user.password=${spring.security.user.password}

  1. Admin监控中心添加配置类
@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 {
        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();
    }
}
  1. Admin监控中心测试
    http://localhost:8769
    用户名与密码为配置的:admin
    安全登录

八、集成Email

  1. Admin监控中心添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

  1. Admin监控中心配置
# 配置邮件
spring.mail.host=smtp.163.com
spring.mail.username=XXXX
spring.mail.password=XXXX
# 当我们已注册的客户端的状态从 UP 变为 OFFLINE 或其他状态,
# 服务端就会自动将电子邮件发送到xxxx@qq.com。
spring.boot.admin.notify.mail.to=xxxx@qq.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容