SpringBootAdmin(SBA)是一个用于管理和监控SpringBoot应用的开源社区项目,它提供了详细的健康信息、内存信息、JVM系统和环境属性、垃圾收集信息、日志设置和查看等功能,计划任务视图,SpringBoot缓存视图和管理。SBA监控概览如下图所示:我们在上一篇文章中已经讲过SBA的搭建和使用,点击访问:https://mp.weixin.qq.com/s/cciU2u-LXnQHIrHN9uhVYA然而,上面的用法对我们来说还不够根据生产环境的要求,生产环境至少需要配置以下两个功能:被监控的SpringBoot项目的告警功能,因为我们无法时刻关注SBA监控系统,但是当系统出现问题的时候,我们需要第一时间知道,所以报警提醒功能必不可少。SBA的使用默认是没有权限验证的,即大家知道地址后就可以正常使用,不符合生产系统的安全要求,所以用户授权功能也是必不可少的。接下来我们看一下上述功能的具体实现。1.增加报警提醒功能报警提醒功能基于邮箱。当然也可以使用其他的提醒功能,比如钉钉或者飞书机器人提醒也是可以的,但是邮箱报警功能的实现成本是最低的,所以本文就来这里看看报警的具体实现邮箱提醒功能。1.1添加邮件支持框架在SBA依赖文件pom.xml中添加如下配置:>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发送邮箱固定主机为smtp.qq.com)spring.mail.host=smtp.qq.com#配置邮箱授权码(这里是授权码,不是密码,授权码会在本文下一步讲解)spring.mail.password=xxxxxx#配置邮箱的账号名(这里是账号名上面配置发送邮件)spring.mail.username=xxx@qq.com1.2.1启用SMTPserviceSMTP是一种提供可靠和高效的电子邮件传输的协议。发送邮箱必须开启SMTP服务,否则无法实现发送邮件功能。如果你使用的是QQ邮箱,参考如下配置,打开QQ邮箱,在邮箱的账户设置中找到IMAP/SMTP服务并启用,如下图:1.2.2生成授权码发送邮箱需要生成邮箱授权码,以QQ邮箱为例,在邮箱的账户设置中找到“生成授权码”,点击生成,如下图:1.3邮件报警测试以上配置完成后,就不需要再添加任何代码了!!!无需添加任何代码!!!无需添加任何代码!!!**即可实现项目状态变更邮件提醒功能。我们来测试一下,关闭我本地监控的SpringBoot项目,邮箱会收到项目的下线信息,如下图:当我启动监控的SpringBoot项目时,邮箱会收到服务器启动邮件,如下图如下图所示:也就是说,当你配置好接收和发送邮箱后,SpringBootAdmin会在监控的项目关闭或启动时,自动向接收提醒的邮箱发送邮件。1.4注意事项报警功能的注意事项如下:发送邮件的邮箱必须开通SMTP服务。发送邮件无需设置密码,只需要为配置项“spring.mail.password”设置邮件授权码即可。发送邮件和接收邮件可以是同一个邮件地址。SBA邮箱告警提醒功能不需要添加任何代码,只需要添加相应的框架支持,然后配置正确的收发邮箱即可。1.5配置多个报警通知邮箱。通常,一个项目的告警功能需要通知一组相关负责人,而不是一个人。例如运维负责人、程序负责人、项目经理等可能会被通知。提醒邮箱的配置也很容易。你只需要在SBA配置文件中添加多个接收邮箱即可。使用英文逗号分隔多个邮箱,如下配置所示:#配置接收邮箱spring.boot.admin。notify.mail.to=xxx@qq.com,yyy@qq.com2.访问权限设置SBA默认没有权限验证,生产环境必须配置权限验证。这里我们通过添加SpringSecurity框架来实现权限拦截。具体实现如下。2.1添加Security框架支持在SBA依赖文件pom.xml中添加如下配置:dependency>2.2设置登录账号在SBA配置文件application.properties中添加如下配置:#设置登录用户名、密码和角色spring.security.user.name=java666spring.security.user.password=java666spring.security.user.roles=SBA_ADMIN2.3权限资源设置接下来在SBA项目中,添加如下资源设置类,如下代码所示(直接复制到项目中使用):importde.codecentric.boot.admin.server.config.AdminServerProperties;导入org.springframework.context.annotation.Configuration;导入org.springframework.security.config.annotation.web.builders.HttpSecurity;导入org.springframework.security.config.annotation.web.builders.WebSecurity;导入org.springframework。security.config.annotation.web.configuration.EnableWebSecurity;导入org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;导入org.springframework.security.web。authentication.SavedRequestAwareAuthenticationSuccessHandler;导入org.springframework.security.web.csrf.CookieCsrfTokenRepository;@EnableWebSecurity@Configuration(proxyBeanMethods=false)publicclassAdminSecurityConfigextendsWebSecurityConfigurerAdapter{privatefinalStringadminContextPath;publicAdminSecurityConfig(AdminServerPropertiesadminServerProperties){this.adminContextPath=adminServerProperties.getContextPath();}@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException{SavedRequestAwareAuthenticationSuccessHandlersuccessHandler=newSavedRequestAwareAuthenticationSuccessHandler();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/**");}@Overridepublicvoidconfigure(WebSecurityweb){web.ignoring().antMatchers("/actuator/**");}}2.4访问SBA此时访问SBA监控系统需要输入用户名和密码才能正常使用,如下图:我们输入步骤2.2设置的用户名和密码进行登录,如图如下图:点击Logout退出SBA系统。添加邮件发送框架,配置正确收发邮件,无需添加任何代码即可实现告警提醒功能,告警提醒邮箱可配置多个。SBA可以通过添加SpringSecurity实现用户权限验证。