乐趣区

关于spring-boot-编程思想:使用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 管理员提供的登录页面。

应用配置好的用户名和明码 (admin/111111) 登录,胜利登录后进入治理服务器页面。

退出移动版