共计 4359 个字符,预计需要花费 11 分钟才能阅读完成。
Spring Boot Admin(SBA)是一个开源的社区我的项目,用于治理和监控 Spring Boot 应用程序,它提供了具体的衰弱信息、内存信息、JVM 零碎和环境属性、垃圾回收信息、日志设置和查看、定时工作查看、Spring Boot 缓存查看和治理等性能。
SBA 监控概览如下图所示:
上一篇咱们曾经说了 SBA 的搭建和应用了,点击拜访:https://mp.weixin.qq.com/s/cciU2u-LXnQHIrHN9uhVYA
然而下面的应用是无奈满足咱们生产环境的要求的,生产环境至多还须要配置以下两个性能:
- 被监控的 Spring Boot 我的项目的报警性能,因为咱们不能时刻盯着 SBA 监控零碎,但当零碎呈现问题时,咱们又须要第一工夫晓得,因而报警揭示性能是必不可少的。
- 默认状况下 SBA 的应用是没有权限验证的,也就是所有人晓得了地址都能够失常应用,这不满足生产零碎的平安要求,所以用户受权性能也是必不可少的。
接下来咱们来看以上性能的具体实现。
1. 增加报警揭示性能
报警揭示性能是基于邮箱实现的,当然也能够应用其余的揭示性能,如钉钉或飞书机器人揭示也是能够的,但邮箱报警性能的实现老本最低,所以本文咱们就来看邮箱的报警揭示性能的具体实现。
1.1 增加邮件反对框架
在 SBA 的依赖文件 pom.xml 中增加以下配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1.2 配置收、发邮箱信息
在 SBA 的配置文件 application.properties 中增加以下收、发邮箱的配置:
# 配置发送邮箱
spring.boot.admin.notify.mail.from=xxx@qq.com
# 配置接管邮箱
spring.boot.admin.notify.mail.to=xxx@qq.com
# 配置邮箱 smtp 地址(qq 发送邮箱的固定 host 是 smtp.qq.com)spring.mail.host=smtp.qq.com
# 配置邮箱受权码(此处为受权码,而非明码,获取受权码本文下一步有阐明)spring.mail.password=xxxxxx
# 配置邮箱的账户名(这个是下面配置发送邮件的账户名)spring.mail.username=xxx@qq.com
1.2.1 开启 SMTP 服务
SMTP 是一种提供牢靠且无效的电子邮件传输的协定。发送的邮箱必要要开启 SMTP 服务,否则就实现不了邮件的发送性能了。如果应用的是 QQ 邮箱参考以下配置,关上 QQ 邮箱,在邮箱的账号设置中找到 IMAP/SMTP 服务并开启它,如下图所示:
1.2.2 生成受权码
发送的邮箱要生成邮箱受权码,以 QQ 邮箱为例,在邮箱的账号设置中找到“生成受权码”,点击即可生成,如下图所示:
1.3 邮件报警测试
通过以上配置之后, 无需增加任何代码!!!无需增加任何代码!!!无需增加任何代码!!! 就能够实现我的项目状态扭转的邮件揭示性能了。
咱们来测试一下,敞开我本地被监控的 Spring Boot 我的项目,邮箱会收到我的项目离线信息,如下图所示:
当我把被监控的 Spring Boot 我的项目启动之后,邮箱会收到服务器启动邮件,如下图所示:
也就是说,当你配置好了收、发邮箱之后,Spring Boot Admin 会在被监控的我的项目停机或启动时,主动发送邮件到接管揭示的邮箱了。
1.4 注意事项
报警性能注意事项有以下几个:
- 发送邮件的邮箱必须开启 SMTP 服务。
- 发送邮箱无需设置明码,只须要为配置项“spring.mail.password”设置邮箱受权码即可。
- 发送邮箱和接管邮箱能够是同一个邮箱地址。
-
SBA 邮箱报警揭示性能无需增加任何代码,只须要增加相应的框架反对,而后再配置上正确的收、发邮箱即可。
1.5 配置多个报警告诉邮箱
通常我的项目的报警性能,须要告诉的是一群相干负责人,而不是一个人,比方可能会告诉运维负责人、程序负责人,还有项目经理等,而 SBA 多人揭示邮箱的配置也很容易,只须要在 SBA 的配置文件中增加多个收件邮箱即可,多个邮箱间应用英文逗号隔开,如下配置所示:
# 配置接管邮箱 spring.boot.admin.notify.mail.to=xxx@qq.com,yyy@qq.com
2. 拜访权限设置
SBA 默认是没有权限验证的,而生产环境肯定要配置权限验证,咱们这里通过增加 Spring Security 框架来实现权限拦挡,具体实现如下。
2.1 增加 Security 框架反对
在 SBA 的依赖文件 pom.xml 中增加如下配置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
2.2 设置登录账户
在 SBA 的配置文件 application.properties 中增加如下配置:
# 设置登录用户名、明码和角色 spring.security.user.name=java666 spring.security.user.password=java666 spring.security.user.roles=SBA_ADMIN
2.3 权限资源设置
接下来在 SBA 我的项目中,增加以下资源设置类,如下代码所示(间接复制到我的项目中即可应用):
import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.csrf.CookieCsrfTokenRepository; @EnableWebSecurity @Configuration(proxyBeanMethods = false) public class AdminSecurityConfig extends WebSecurityConfigurerAdapter { private final String adminContextPath; public AdminSecurityConfig(AdminServerProperties adminServerProperties) {this.adminContextPath = adminServerProperties.getContextPath(); } @Override protected void configure(HttpSecurity http) throws Exception {SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl(adminContextPath + "/"); http.authorizeRequests() .antMatchers(adminContextPath + "/assets/**").permitAll() .antMatchers(adminContextPath + "/login").permitAll() .antMatchers(adminContextPath + "/instances/**").permitAll() .anyRequest().authenticated() .and() .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() .logout().logoutUrl(adminContextPath + "/logout").and() .httpBasic().and() .csrf() .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) .ignoringAntMatchers( adminContextPath + "/instances", adminContextPath + "/actuator/**" ); } @Override public void configure(WebSecurity web) {web.ignoring().antMatchers("/actuator/**"); } }
2.4 拜访 SBA
此时拜访 SBA 监控零碎就须要输出用户名和明码能力失常应用了,如下图所示:
咱们输出 2.2 步骤中设置的用户名和明码即可登录,如下图所示:
点击登记就退出 SBA 零碎了。总结
SBA 报警揭示性能只须要增加邮件发送框架,配置正确的收、发邮件,无需增加任何代码就能够实现报警揭示性能了,而且报警揭示的邮箱能够配置多个。SBA 可通过增加 Spring Security 来实现用户的权限效验。
是非审之于己,毁誉听之于人,得失安之于数。
公众号:Java 面试真题解析
面试合集:gitee.com/mydb/interview