继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

SpringBoot 2.x 开发案例之整合Spring Boot Admin

小柒2012
关注TA
已关注
手记 103
粉丝 1.7万
获赞 2434

前言

Spring Boot Admin 就是将 Spring Boot Actuator中提供的endpoint信息可视化表示,并且可以通过邮件、Telegram、Hipchat等发送告警消息。

集成

注意一定要版本对应,否则会出现意想不到的问题,建议使用Srping Boot Admin 2.0+以上版本,可以多语言切换。

父项目

pom.xml引入:

<modules>
        <module>admin-server</module>
        <module>admin-client</module>
</modules>

<parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.2.2.RELEASE</version>
      <relativePath/>
</parent>
<dependencies>
      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
      </dependency>
      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
      </dependency>
</dependencies>

监控服务端

pom.xml引入:

<artifactId>admin-server</artifactId>
<dependencies>
      <dependency>
          <groupId>de.codecentric</groupId>
          <artifactId>spring-boot-admin-starter-server</artifactId>
          <version>2.2.1</version>
      </dependency>
      <!--登录认证-->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      <!--掉线发送邮件通知-->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-mail</artifactId>
      </dependency>
</dependencies>

application.properties配置文件:

# 爪哇笔记:https://blog.52itstyle.vip
server.port=9000
spring.application.name=SpringBootAdmin
spring.security.user.name=admin
spring.security.user.password=admin
spring.boot.admin.monitor.status-interval = 10000
spring.boot.admin.monitor.info-interval = 10000

spring.mail.host = smtp.163.com
spring.mail.username = 13188888888@163.com
spring.mail.password = 2020
spring.boot.admin.notify.mail.from = 13188888888@163.com
spring.boot.admin.notify.mail.to = 88888888@qq.com

启动类:

/**
 * 系统监控
 * 爪哇笔记:https://blog.52itstyle.vip
 */
@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Configuration
    public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

        private final AdminServerProperties adminServer;

        public SecuritySecureConfig(AdminServerProperties adminServer) {
            this.adminServer = adminServer;
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
            successHandler.setTargetUrlParameter("redirectTo");
            successHandler.setDefaultTargetUrl(this.adminServer.path("/"));

            http.authorizeRequests()
                    .antMatchers(this.adminServer.path("/assets/**")).permitAll()
                    .antMatchers(this.adminServer.path("/login")).permitAll()
                    .anyRequest().authenticated()
                    .and()
                    .formLogin().loginPage(this.adminServer.path("/login")).successHandler(successHandler).and()
                    .logout().logoutUrl(this.adminServer.path("/logout")).and()
                    .httpBasic().and()
                    .csrf()
                    .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                    .ignoringRequestMatchers(
                            new AntPathRequestMatcher(this.adminServer.path("/instances"), HttpMethod.POST.toString()),
                            new AntPathRequestMatcher(this.adminServer.path("/instances/*"), HttpMethod.DELETE.toString()),
                            new AntPathRequestMatcher(this.adminServer.path("/actuator/**"))
                    )
                    .and()
                    .rememberMe().key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600);
        }
    }
}

监控客户端

pom.xml引入:

<artifactId>admin-client</artifactId>
<dependencies>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.2.1</version>
    </dependency>
</dependencies>

application.properties配置文件:

# 爪哇笔记:https://blog.52itstyle.vip
spring.boot.admin.client.instance.name = 007
spring.boot.admin.client.url= http://localhost:9000
management.endpoints.web.exposure.include=*
spring.boot.admin.client.username = admin
spring.boot.admin.client.password = admin
spring.boot.admin.client.period = 10000
spring.boot.admin.client.connect-timeout = 5000
spring.boot.admin.client.read-timeout = 5000
spring.boot.admin.client.instance.service-url = http://localhost:8080

监控界面


小结

不得不说,2.X 版本还是很美观大气上档次的,并且监控告警功能齐全,小微服务必备神器。

参考

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP