本文共 4486 字,大约阅读时间需要 14 分钟。
Spring Boot Admin
看到这几个页面是不是觉得还是蛮炫酷的,毕竟是Spring自家的产品,做的还是可以的。
我们就来简易的搭一下这个监控中中心org.springframework.boot spring-boot-starter-web de.codecentric spring-boot-admin-starter-server de.codecentric spring-boot-admin-server-ui org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-test test
@SpringBootApplication@EnableAdminServerpublic class MonitorApplication { public static void main(String[] args) { SpringApplication.run(MonitorApplication.class, args); }}
@EnableAdminServer
:标明组件名称
/** * @Author:LiuPu * @Date:2018/9/26 14:48 * @Description: * @Version 1.011 */@Configurationpublic class SecuritySecureConfig extends WebSecurityConfigurerAdapter{ private final String adminContextPath; public SecuritySecureConfig(AdminServerProperties adminServerProperties) { this.adminContextPath = adminServerProperties.getContextPath(); } @Override protected void configure(HttpSecurity http) throws Exception { // @formatter:off SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); http.authorizeRequests() .antMatchers(adminContextPath + "/assets/**").permitAll() .antMatchers(adminContextPath + "/login").permitAll() .anyRequest().authenticated() .and() .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() .logout().logoutUrl(adminContextPath + "/logout").and() .httpBasic().and() .csrf().disable(); // @formatter:on } }
WebSecurityConfigurerAdapter
:优先级高于ResourceServerConfigurer,用于保护oauth相关的endpoints,同时主要作用于用户的登录(form login,Basic auth )WebSecurityConfigurerAdapter是默认情况下Spring security的http配置;ResourceServerConfigurerAdapter是默认情况下spring security oauth 的http配置。
WebSecurityConfigurerAdapter部分源码:
public abstract class WebSecurityConfigurerAdapter implements WebSecurityConfigurer{ protected void configure(AuthenticationManagerBuilder auth) throws Exception { ...... } protected void configure(WebSecurity web) throws Exception { ...... } protected void configure(HttpSecurity http) throws Exception { ........ }}
server.port=18080spring.application.name=monitoreureka.client.service-url.defaultZone=http://localhost:10000/eureka/management.endpoints.web.exposure.include=refresh,health,info,env,loggers,metrics,trace,dumpmanagement.endpoint.health.show-details=alwaysspring.security.user.name=aboyliupuspring.security.user.password=lp1234eureka.instance.metadata-map.user.name=aboyliupueureka.instance.metadata-map.user.password=lp1234
这里有一个细节需要说明一下:
SpringBoot 2.0 默认是关闭了自带的一些接口,比如说实例的健康状态,心跳之类的management.endpoints.web.exposure.include=refresh,health,info,env,loggers,metrics,trace,dump
这里需要开放一些端口eureka.client.service-url.defaultZone=http://localhost:10000/eureka/
:把实例注册到注册中心spring.security.user.name=aboyliupu
spring.security.user.password=lp1234
eureka.instance.metadata-map.user.name=aboyliupu
eureka.instance.metadata-map.user.password=lp1234
: 登录的账号和密码及其配置 在整个实例种,SpringSercurity这么庞大的框架其实只是用到了其作用的九牛一毛----登录拦截.
如果细说,这个登录界面有没有用呢?俗话说的好,防君子不防小人,这个就要看字自己斟酌。我们搭这样一个监控中心的意义是什么?
比如说,你们公司的项目使用的是SOA框架,在入口上的软硬件上做了Nginx+服务器集群,同时在软件上也做了集群,例如注册中心集群..... 尽管我们拥有这么完美的熔断机制和预防机制,但是实例出了问题我们还是需要去解决问题。这个时候监控中心监测实例健康和心跳的作用就起了大作用了。我们就能一眼看出是哪些实例挂掉了。转载地址:http://eyjko.baihongyu.com/