使用Spring|使用Spring Boot管理监控应用程序状态

使用Spring Boot管理监控应用程序状态 1个Spring Boot执行器
Spring Boot执行器是Spring Boot提供的应用程序的自检和监控功能,如健康检查、审计、索引收集、HTTP跟踪等。,可以帮助开发者和运营商监控和管理Spring Boot应用。该模块收集应用的内部信息并向外部模块公开,支持HTTP和JMX,可以与一些第三方监控系统(如Prometheus)集成。
1.1致动器端点
端点是执行器的核心组件,用来监控应用程序的各种状态。Spring Boot致动器内置有许多端点,通常分为三类:
应用类:主要包括配置信息、Spring Bean信息、配置文件信息、环境信息等。
Metric class:运行时应用程序的信息,包括堆栈、健康状态、线程池信息、HTTP请求统计等。
操作类:如关机,提供关闭应用等操作类功能。
1.2添加依赖关系
在pom.xml中添加执行器的启动器:
springframework.boot
弹簧靴起动器致动器
1.3访问端点
添加依赖项后,启动服务,您可以通过以下请求查看公开的端点:

http://localhost:9099/actuator 该请求返回: { " _links": { "自我":{ " href ":" http://localhost:9099/actuator ", “模板化”:假 }, "健康路径":{ " href ":" http://localhost:9099/actuator/health/{ * path } ", “模板化”:真 }, "健康":{ " href ":" http://localhost:9099/actuator/health ", “模板化”:假 } }

复制代码
从返回的结果可以看出,默认情况下只打开了/actuator/health端点。访问端点
{"status":"UP"}
复制代码
其他未打开的端点可以独立配置为打开或关闭。
在application.yml中添加以下配置,以打开所有端点并显示详细的运行状况:
管理层: 端点: 网页: 曝光率: 包括:“*” 端点: 健康: 显示详细信息:始终

2 Spring Boot管理
Spring Boot执行器提供各种端点。Spring Boot管理员可以在一个界面中显示执行器中的信息,并提供实时报警功能。
在微服务环境中,使用Spring Boot管理,通常包括服务器和客户端。服务器只运行Spring Boot管理服务器来收集每个客户端的数据并显示在可视化界面中。运行客户端Spring Boot管理客户端,或通过服务发现和注册获取应用程序信息。
我不在这里演示的Spring Boot管理服务器上。我将使用当前的hero-springboot-demo作为服务器和客户端。在后面的实战章节中,Admin服务器将是独立的,客户端不会使用客户端,而是通过服务进行注册和发现。
2.1添加依赖关系
在pom.xml中添加Spring Boot管理服务器的依赖关系:
去代码中心化 弹簧-启动-管理-启动-服务器 2.7.4 去代码中心化 spring-boot-管理-启动器-客户端 2.7.4

复制代码
注意版本号。因为Spring Boot的版本用的是2.7.x,所以Spring Boot Admin服务器的版本应该也是2.7.x,不要乱来!
2.2打开管理服务器
在启动类demo application @ enableadminserver上添加注释,以打开Spring Boot管理服务器。
@EnableAdminServer @启用异步 @ mapper scan(" com . yygnb . demo . mapper ") @SpringBootApplication 公共类演示应用程序{ ... }

复制代码
2.3配置客户端
在application.yml中添加以下配置:
配置上下文路径;管理服务器的;
为客户机配置管理服务器的地址。
春天: 应用: 名称:英雄-跳羚-演示 开机: 管理员: 客户: URL:“http://localhost:9099/monitor” 上下文路径:“/monitor”

复制代码
2.4访问管理服务器
重新启动服务,并在浏览器中访问Spring Boot管理服务器:
http://本地主机:9099/monitor
复制代码
您可以看到,当前应用的在管理服务器上注册为客户端:
3个自定义警报
当应用状态异常时,Spring Boot管理员会实时自动报警,报警方式可由我们自定义。这里模拟日志的方式。
在配置包下,创建DemoNotifier类,该类继承自AbstractEventNotifier:
@Slf4j @组件 公共类DemoNotifier扩展AbstractEventNotifier {受保护的演示通知程序(实例存储库){ 超级(储存库); }@覆盖 受保护的Mono doNotify(InstanceEvent事件,Instance实例){ 返回mono . from runnable(()--> log . error("实例信息:{},{},{} ", instance.getRegistration()。getName(),event.getInstance(), event . gettype())); } }

复制代码
此时,当注册到此管理服务器的其他客户机启动和停止时,当前应用程序将监听事件并输出日志。你可以发送邮件、信息等。在实战中。
4登录权限
上面配置的管理服务器可以不用登录就可以访问,但是只有在real development中登录后才能访问。管理服务器还提供了一个登录页面。
4.1添加依赖关系
在pom.xml中添加Spring Security的依赖项:
`springframework.boot
弹簧-启动-启动-安全`
复制代码
4.2配置用户名和密码
在application.yml中配置登录用户名和密码:
春天: 应用: 名称:英雄-跳羚-演示 开机: 管理员: 客户: URL:“http://localhost:9099/monitor” 上下文路径:“/monitor” 安全性: 用户: 名称:管理员 密码:111111

复制代码
上面的配置是在前一个的基础上增加的:spring.security.user的配置
4.3添加配置类
在配置包下添加Spring Security的配置类SecurityConfig:
@配置 公共类安全配置{私有最终字符串adminContextPath公共安全配置(adminserver properties adminserver properties){ this . admincontextpath = adminserver properties . getcontextpath(); }@Bean 公共安全过滤器链过滤器链(HttpSecurity http)引发异常{ SavedRequestAwareAuthenticationSuccessHandler成功处理程序= new SavedRequestAwareAuthenticationSuccessHandler(); success handler . settargeturlparameter(" redirecto "); success handler . setdefaulttargeturl(adminContextPath+"/"); 返回http . authorizehttprequests(auth-> auth . ant matchers( adminContextPath + "/assets/** ", adminContextPath + "/login ", adminContextPath + "/instances ", adminContextPath + "/actuator/** " ).permitAll() 。ant matchers(adminContextPath+"/* * ")。已验证() 。anyRequest()。permitAll() ).formlog in(form-> form . log in page(adminContextPath+"/log in ") 。成功处理程序(成功处理程序) ).注销(logout-> logout . logout URL(adminContextPath+"/logout ")) 。csrf(AbstractHttpConfigurer::disable) 。build(); } }

复制代码
上面配置文件中的AdminContextPath就是前面配置的spring.boot.admin.context-path,即/monitor。
上述配置包括几个部分:
仅请求路径/monitor/**的权限控制;
成功登录后的登录页面和默认地址;
表单的登录配置;
禁用CSRF。
4.4试运行
重启服务,访问之前开发的电脑等界面,可以正常访问;如果你访问一个路径,比如/monitor,你将跳转到Spring Boot管理员提供的登录页面。
【使用Spring|使用Spring Boot管理监控应用程序状态】使用配置好的用户名和密码(admin/111111)登录,成功登录后进入管理服务器页面。

    推荐阅读