使用springbootadmin监控应用状态(代码片段)

格格巫MMQ!! 格格巫MMQ!!     2022-12-01     521

关键词:

1 Spring Boot Actuator

Spring Boot Actuator 是 Spring Boot 提供的对应用的自省和监控功能,如健康检查,审计,指标收集,HTTP 跟踪等,可以帮助开发和运维人员监控和管理 Spring Boot 应用。该模块采集应用的内部信息,并暴露给外部的模块,支持 HTTP 和 JMX,并可以与一些第三方监控系统(如 Prometheus)整合。

1.1 Actuator endpoint
端点 Endpoint 是 Actuator 的核心组成部分,用来监视应用程序的各种状态。 Spring Boot Actuator 内置很多 Endpoint,总体上看分成三类:

应用配置类:主要包括配置信息、Spring Bean 的信息、配置文件信息、环境信息等;
度量指标类:应用在运行期间的信息,包括堆栈、健康状态、线程池信息、HTTP请求统计等;
操作控制类:如 shutdown,提供了对应用的关闭等操作类功能。
1.2 添加依赖
在 pom.xml 中添加 Actuator 的 starter:

org.springframework.boot spring-boot-starter-actuator 1.3 访问端点 添加依赖后,启动服务,可通过如下请求查看暴露的端点:

http://localhost:9099/actuator

该请求返回:


“_links”:
“self”:
“href”: “http://localhost:9099/actuator”,
“templated”: false
,
“health-path”:
“href”: “http://localhost:9099/actuator/health/*path”,
“templated”: true
,
“health”:
“href”: “http://localhost:9099/actuator/health”,
“templated”: false



从返回的结果可以看出默认只开放了 /actuator/health 端点。访问该端点 http://localhost:9099/actuator/health:

“status”:“UP”
其他未开放的端点可以独立配置开启或禁用。

在 application.yml 中添加如下配置,开放所有的端点,并显示详细的 health:

management:
endpoints:
web:
exposure:
include: ‘*’
endpoint:
health:
show-details: always
重启服务,再次查看暴露的端点,可以看出有如下端点:

2 Spring Boot Admin

Spring Boot Actuator 提供了各种端点,Spring Boot Admin 能够将 Actuator 中的信息进行界面化的展示,并提供实时报警功能。

在微服务环境中,使用 Spring Boot Admin,通常包括服务端和客户端,服务端只运行 Spring Boot Admin Server,收集各个客户端的数据,并以可视化界面显示出来。客户端运行 Spring Boot Admin Client,或者通过服务发现与注册获取应用的信息。

这里的 demo 我就不在 Spring Boot Admin Server了,将当前 hero-springboot-demo 既作为 server、也作为 client 使用。在后面的实战篇章中会独立 Admin Server,同时客户端也不使用 client,而是通过服务注册与发现。

2.1 添加依赖
在 pom.xml 中添加 Spring Boot Admin Server 的依赖:

de.codecentric spring-boot-admin-starter-server 2.7.4 de.codecentric spring-boot-admin-starter-client 2.7.4 需要注意版本号,由于 Spring Boot 版本使用的是 2.7.x,Spring Boot Admin Server 的版本也要用 2.7.x,千万别乱搞!

2.2 开启 Admin Server
在启动类 DemoApplication 上添加注解 @EnableAdminServer 开启 Spring Boot Admin Server。

@EnableAdminServer
@EnableAsync
@MapperScan(“com.yygnb.demo.mapper”)
@SpringBootApplication
public class DemoApplication


2.3 配置客户端
在 application.yml 中添加如下配置:

配置 Admin Server 的 context-path;
为客户端配置 Admin Server 的地址。
spring:
application:
name: hero-springboot-demo
boot:
admin:
client:
url: ‘http://localhost:9099/monitor’
context-path: ‘/monitor’
2.4 访问 Admin Server
重启服务,在浏览器中访问 Spring Boot Admin Server:

http://localhost:9099/monitor
可以看到当前应用的作为客户端注册到 Admin Server 上:

再次强调,上述操作仅仅针对demo学习,非真实的企业级开发!

3 自定义告警

当应用状态异常时,Spring Boot Admin 会自动实时告警,而告警的方式可以由我们自定义。这里模拟日志的方式。

在 config 包下创建类 DemoNotifier,该类继承自 AbstractEventNotifier:

@Slf4j
@Component
public class DemoNotifier extends AbstractEventNotifier

protected DemoNotifier(InstanceRepository repository) 
    super(repository);


@Override
protected Mono<Void> doNotify(InstanceEvent event, Instance instance) 
    return Mono.fromRunnable(() -> log.error("Instance info: , , ",
            instance.getRegistration().getName(), event.getInstance(),
            event.getType()));


此时,注册到这个Admin Server的其他客户端启动、停止等,当前应用都会监听到事件,输出日志。实战中可以在这里面发送邮件、消息等。

4 登录访问

上面配置的 Admin Server 无需登录就可以访问,在真实开发中需要登录后才能访问。admin server 也提供了登录页面。

4.1 添加依赖

在 pom.xml 添加 Spring Security 的依赖:

org.springframework.boot spring-boot-starter-security # 4.2 配置用户名密码 在 application.yml 中配置登录的用户名和密码:

spring:
application:
name: hero-springboot-demo
boot:
admin:
client:
url: ‘http://localhost:9099/monitor’
context-path: ‘/monitor’
security:
user:
name: admin
password: 111111
上面的配置在之前的基础上增加了:spring.security.user 的配置。

4.3 添加配置类

在 config 包下添加 Spring Security 的配置类 SecurityConfig:

@Configuration
public class SecurityConfig

private final String adminContextPath;

public SecurityConfig(AdminServerProperties adminServerProperties) 
    this.adminContextPath = adminServerProperties.getContextPath();


@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception 
    SavedRequestAwareAuthenticationSuccessHandler successHandler =
            new SavedRequestAwareAuthenticationSuccessHandler();
    successHandler.setTargetUrlParameter("redirectTo");
    successHandler.setDefaultTargetUrl(adminContextPath + "/");
    return http.authorizeHttpRequests(auth -> auth.antMatchers(
                                    adminContextPath + "/assets/**",
                                    adminContextPath + "/login",
                                    adminContextPath + "/instances",
                                    adminContextPath + "/actuator/**"
                            ).permitAll()
                            .antMatchers(adminContextPath + "/**").authenticated()
                            .anyRequest().permitAll()
            ).formLogin(form -> form.loginPage(adminContextPath + "/login")
                    .successHandler(successHandler)
            ).logout(logout -> logout.logoutUrl(adminContextPath + "/logout"))
            .csrf(AbstractHttpConfigurer::disable)
            .build();


上面配置文件中的 adminContextPath 就是前面配置的 spring.boot.admin.context-path,即 /monitor。

上面配置包括几个部分:

仅对路径 /monitor/** 请求权限控制;
登录页面和登录成功后的默认地址;
表单登录配置;
禁用 CSRF。

4.4 测试运行

重启服务,访问之前开发的 computer 等接口,可以正常访问;如果访问 /monitor 等路径,就会跳转 Spring Boot Admin 提供的登录页:

使用配置的用户名密码(admin/111111)登录,登录成功后进入 Admin Server 页面。

springboot度量指标监控与健康检查和可视化监控应用springbootadmin

...            使用可视化监控应用SpringBootAdmin  使用步骤:    SpringBootAdmin的使用是需要建立服务端和客户端的    服务端:独立的项目,会将收集到的数据在自己的图形界面中展示   查看详情

springbootadmin

转SpringBootAdmin的使用 作者杜琪关注2015.12.2517:30*字数1803阅读16569评论21喜欢55上一篇文章中了解了SpringBoot提供的监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的... 查看详情

springcloud-springbootadmin服务监控(十三)

springcloud笔记推荐文章前言SpringBootAdmin是一个管理和监控你的SpringBoot应用程序的应用程序。这些应用程序通过SpringBootAdminClient(通过HTTP)注册或者使用SpringCloud(例如Eureka)发现。UI只是SpringBootActuator端点上的一个AngularJs应用程... 查看详情

springboot监控-springbootadmin(代码片段)

01:SpringBoot高级–SpringBoot监控02:SpringBoot监控-SpringBootAdmin1.SpringBootAdmin使用游览器地址栏访问SpringBoot的监控信息太繁琐了,所以SpringBootAdmin就诞生了,以UI界面的方式来显示监控信息。SpringBootAdmin说明:SpringBootAdmi... 查看详情

springbootadmin微服务监控管理

...项目:https://github.com/codecentric/spring-boot-admin功能特性SpringBootAdmin为注册的应用程序提供以下功能:显示健康状况显示详细信息,例如JVM和内存指标micrometer.io指标数据源指标缓存指标显示构建信息编号关注并下载日志... 查看详情

springcloud微服务监控springbootadmin

1.简介SpringBootAdmin是一个管理和监控SpringBoot应用程序的开源软件。SpringBootAdmin分为Server端和Client端,SpringBootAdminUI部分使用AngularJs将数据展示在前端。2.工程架构EurekaServer:服务注册中心,端口为8761。AdminServer:用于对微服务系... 查看详情

springbootadmin2实例状态监控详解(代码片段)

其他相关文章:SpringBootAdmin参考指南SpringBootAdmin服务离线、不显示健康信息的问题SpringBootAdmin2@EnableAdminServer的加载SpringBootAdmin2AdminServerAutoConfiguration详解在微服务中集成SpringBootAdmin的主要作用之一就是用来监控服务的实例... 查看详情

springbootadmin监控搭建-nacos版本(代码片段)

SpringBootAdmin介绍SpringBootAdmin是github上一款用于SpringBoot的监控管理的开源项目,通过http直接注册或者通过注册中心注册的方式,实现了SpringBoot应用上的一些常见监控项,具体功能点如下:显示应用程序的监控状态应用程序上... 查看详情

springbootadmin节点状态一直为down的排查

项目中需要监控各个微服务节点的健康状态,找到了springbootadmin这个全家桶监控工具,它其实是Vue.js美化过的SpringBootActuator,官方的解释是:codecentric’sSpringBootAdminisacommunityprojecttomanageandmonitoryourSpringBoot?applications.Theapplicationsregi 查看详情

springbootadmin微服务监控管理

...项目:https://github.com/codecentric/spring-boot-admin功能特性SpringBootAdmin为注册的应用程序提供以下功能:显示健康状况显示详细信息,例如JVM和内存指标mi 查看详情

springbootadmin,贼好使!

来源|Java中文社群(ID:javacn666)SpringBootAdmin(SBA)是一个开源的社区项目,用于管理和监控SpringBoot应用程序。应用程序可以通过http的方式,或SpringCloud服务发现机制注册到SBA中,然后就可以实现对... 查看详情

使用springbootadmin监控springcloud微服务

本文基于SpringCloud的环境和配置上增加配置信息,而不是从0开始的配置。一、搭建admin服务端1、引入pom<properties><spring-boot-admin-starter-client.version>1.5.6</spring-boot-admin-starter-client.version><spring-boot-admin 查看详情

springboot监控管理之admin监管使用

SpringBootAdmin用于监控基于SpringBoot的应用,它是在SpringBootActuator的基础上提供简洁的可视化WEBUI。SpringBootAdmin是一个社区项目,用于管理和监视SpringBoot®应用程序。其实说作用大也大,说不大也不大。感兴趣的同学可以了解一下... 查看详情

物联网架构成长之路(30)-springbootadmin微服务webui监控

...要观察各个微服务的运行状态,因此SpringBoot生态提供了SpringBootAdmin这个组件来实现微服务管理WEBUI。但是整体的注册中心还是基于Eureka,只是WebUI是用这个SpringBootAdmin来显示而已。具体的结构如下所示1.Eureka服务  这个没什么... 查看详情

skywalking与springbootadmin区别

参考技术A作用不一样。根据查询相关公开信息,skywalking是一个apm系统,包含监控、追踪、并拥有故障诊断能力的分布式系统。springbootadmin是一个开源的社区项目,用于管理和监控应用程序的软件。 查看详情

springbootadmin指南2.4.1(代码片段)

...子邮件通知6.2.Hipchat通知6.3.自定义通知配置7.结论1.概述SpringBootAdmin是一个Web应用程序,用于管理和监控SpringBoot应用程序。每个应用程序都被视为 查看详情

springboot学习----springbootadmin(代码片段)

什么是SpringBootAdminSpringBootAdmin是一个管理和监控SpringBoot应用程序的开源软件,SpringBootAdmin的GitHub地址https://github.com/codecentric/spring-boot-admin他是一个基于C/S架构的实现。它可以通过HTTP或者Eureka注册到adminserver中进行展示,通过它... 查看详情

springcloud第十三篇|springbootadmin服务监控

本文是SpringCloud专栏的第十三篇文章,了解前十二篇文章内容有助于更好的理解本文:SpringCloud第一篇|SpringCloud前言及其常用组件介绍概览SpringCloud第二篇|使用并认识Eureka注册中心SpringCloud第三篇|搭建高可用Eureka注册中心SpringCloud... 查看详情