SpringCloud微服务监控——admin(一):admin服务端搭建并加入安全控制
在SpringCloud微服务中,有多个服务,要监控这些服务是否已经挂掉,这时可以使用admin来实现。代码如下:基础工程的搭建何其他的微服务一样,不再赘述。1):在pom文件中加入依赖:<!-- eureka client start --><dependency><groupId>org.springframework.cloud</...
·
在SpringCloud微服务中,有多个服务,要监控这些服务是否已经挂掉,这时可以使用admin来实现。代码如下:
基础工程的搭建何其他的微服务一样,不再赘述。
1):在pom文件中加入依赖:
<!-- eureka client start -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- eureka client end -->
<!--admin start-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<!--admin end-->
2):在启动类中加入注解:
@EnableAdminServer
@EnableDiscoveryClient
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
3):在配置文件application.properties中,加入配置:
server.port=10009
spring.application.name=fyk-admin
eureka.client.serviceUrl.defaultZone=http://192.168.22.11:8761/eureka/
eureka.instance.prefer-ip-address=true
#为服务指定自己的IP地址
eureka.instance.ip-address=192.168.55.11
至此,简单的admin服务端就搭建好了。
上面的admin监控服务搭建好了之后,发现直接从页面就可以进入了该服务监控页面,在此,加入安全控制,让输入用户名密码才可以进入。(其实在实际应用中,也许用不到。因为一般而言,这种监控类的服务是不允许外网访问的或者只允许特定的IP访问,毕竟这种属于管理员操作的东西)
加入安全控制:(加入登录页面)
由于这里admin的UI中,已经有了登录页,这里就将就这个登录页:
1):pom文件中,加入依赖包:
<!-- 加入security start -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 加入security end -->
2):在启动类中加入如下代码: 这些都是和security相关的,对于security很了解的话,完全可以自己配置,或者不使用admin的登录页面,使用定制化的页面也是可以的。
@Configuration
public static 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");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
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()
//启用HTTP基本支持。这个是admin客户端注册所必须的配置
.httpBasic().and()
//使用cookie启用CRSF-Protection
.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers(
adminContextPath + "/instances", //禁用CRSF-Protection端点
adminContextPath + "/actuator/**" //禁用CRSF-Protection执行器端点
);
// @formatter:on
}
}
3):在application.properties中加入配置:登录的用户名@密码
spring.security.user.name=fyk
spring.security.user.password=123456
更多推荐
已为社区贡献8条内容
所有评论(0)