在上一篇中,通过restful api的方式查看信息过于繁琐,也不直观,效率低下。当服务过多的时候看起来就过于麻烦,每个服务都需要调用不同的接口来查看监控信息。

SBA

  SBA全称spring boot admin 是一个管理和监控spring boot 应用程序的开源项目,分为admin-server与admin-client两个组件,admin-server通过采集actuator端点数据,显示在spring -boot-admin-ui上,已知的端点几乎都有进行采集,通过spring-boot-admin可以动态切换日志级别、导出日志、导出heapdump、监控各项指标 等等

spring boot admin在对单一服务监控的同时也提供了集群监控方案,支持通过eureka、consul、zookeeper等注册中心的方式实现多服务监控与管理

导入依赖

  在pom.xml中添加对spring-boot-admin的相关依赖

  1. <!-- 服务端:带UI界面 -->
  2. <dependency>
  3. <groupId>de.codecentric</groupId>
  4. <artifactId>spring-boot-admin-starter-server</artifactId>
  5. <version>2.0.0</version>
  6. </dependency>
  7. <!-- 客户端包 -->
  8. <dependency>
  9. <groupId>de.codecentric</groupId>
  10. <artifactId>spring-boot-admin-starter-client</artifactId>
  11. <version>2.0.0</version>
  12. </dependency>
  13. <!-- 安全认证 -->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-security</artifactId>
  17. </dependency>
  18. <!-- 端点 -->
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-actuator</artifactId>
  22. </dependency>
  23. <!-- 在管理界面中与 JMX-beans 进行交互所需要被依赖的 JAR -->
  24. <dependency>
  25. <groupId>org.jolokia</groupId>
  26. <artifactId>jolokia-core</artifactId>
  27. </dependency>

如果想访问info的信息需要如下配置

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. <executions>
  7. <execution>
  8. <goals>
  9. <goal>build-info</goal>
  10. </goals>
  11. </execution>
  12. </executions>
  13. </plugin>
  14. </plugins>
  15. </build>

属性配置

  在application.yml中配置actuator的相关配置,其中info开头的属性,就是访问info端点中显示的相关内容,值得注意的十spring boot2.x中,默认只开放了info、health两个端点,剩余的需要自己通过配置management.endpoints.web.exposure.include属性来加载,这个management.endpoints.web.base-path属性比较重要,因为spring boot2.x后每个端点默认的路径是/actuator/endpointId这样依赖spring boot admin是无法正常采集的

application.yml

  1. spring:
  2. profiles:
  3. active: prod #指定读取哪个文件
  4. boot:
  5. admin:
  6. client:
  7. url: http://localhost:8088
  8. instance:
  9. prefer-ip: true
  10.  
  11. info:
  12. head: head
  13. body: body
  14. management:
  15. endpoints:
  16. web:
  17. exposure:
  18. #加载所有的端点,默认只加载了info、health
  19. include: '*'
  20. #不配置SBA 扫描不到
  21. base-path: /
  22. endpoint:
  23. health:
  24. show-details: always
  25. #可以关闭指定的端点
  26. shutdown:
  27. enabled: false

application-dev.yml 空的

application-prod.yml

  1. server:
  2. port: 8088
  3. servlet:
  4. context-path: /
  5.  
  6. spring:
  7. boot:
  8. admin:
  9. client:
  10. username: david
  11. password: 123456
  12. instance:
  13. metadata:
  14. user:
  15. name: david
  16. password: 123456
  17. security:
  18. user:
  19. name: david
  20. password: 123456

在启动方法中增加@EnableAdminServer注解 代表是Server端

  1. @EnableAdminServer
  2. @SpringBootApplication
  3. public class BootApplication{
  4.  
  5. public static void main(String[] args) {
  6. SpringApplication.run(BootApplication.class,args);
  7. }
  8.  
  9. @Profile("dev")
  10. @Configuration
  11. public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter{
  12. @Override
  13. protected void configure(HttpSecurity http) throws Exception{
  14. http.authorizeRequests().anyRequest().permitAll().and().csrf().disable();
  15. }
  16. }
  17.  
  18. @Profile("prod")
  19. @Configuration
  20. public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter{
  21. private final String adminContextPath;
  22.  
  23. public SecuritySecureConfig(AdminServerProperties adminServerProperties){
  24. this.adminContextPath = adminServerProperties.getContextPath();
  25. }
  26.  
  27. @Override
  28. protected void configure(HttpSecurity http) throws Exception{
  29. SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
  30. successHandler.setTargetUrlParameter("redirectTo");
  31.  
  32. http.authorizeRequests()
  33. .antMatchers(adminContextPath + "/assets/**").permitAll()
  34. .antMatchers(adminContextPath + "/login").permitAll()
  35. .anyRequest().authenticated()
  36. .and()
  37. .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
  38. .logout().logoutUrl(adminContextPath + "/logout").and()
  39. .httpBasic().and()
  40. .csrf().disable();
  41. }
  42. }
  43. }

测试

启动项目 访问 http://localhost:8088/login

Spring Boot (28) actuator与spring-boot-admin的更多相关文章

  1. Spring Boot,Spring Cloud,Eureka,Actuator,Spring Boot Admin,Stream,Hystrix

    Spring Boot,Spring Cloud,Eureka,Actuator,Spring Boot Admin,Stream,Hystrix 一.Spring Cloud 之 Eureka. 1 ...

  2. spring boot 2.0.3+spring cloud (Finchley)8、微服务监控Spring Boot Admin

    参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提 ...

  3. Spring Cloud第十三篇 | Spring Boot Admin服务监控

    本文是Spring Cloud专栏的第十三篇文章,了解前十二篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Clo ...

  4. Spring Boot (27) actuator服务监控与管理

    actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管.审计.收集应用的运行情况,针对微服务而言它是必不可少的一个环节. ...

  5. 第11章 Spring Boot使用Actuator

    在生产环境中,需要实时或定期监控服务的可用性,spring-Boot的Actuator 功能提供了很多监控所需的接口. Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能, ...

  6. Spring Boot整合actuator实现监控管理

    Spring Boot使用actuator监控管理 1.在pom文件中导入相关的依赖 <dependency> <groupId>org.springframework.boo ...

  7. 【Spring】关于Boot应用中集成Spring Security你必须了解的那些事

    Spring Security Spring Security是Spring社区的一个顶级项目,也是Spring Boot官方推荐使用的Security框架.除了常规的Authentication和A ...

  8. spring Boot 入门--为什么用spring boot

    为什么用spring boot 回答这个问题不得不说下spring 假设你受命用Spring开发一个简单的Hello World Web应用程序.你该做什么? 我能想到一些 基本的需要.  一个项目 ...

  9. Spring Boot(十四):spring boot整合shiro-登录认证和权限管理

    Spring Boot(十四):spring boot整合shiro-登录认证和权限管理 使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉 ...

随机推荐

  1. [bzoj2733][HNOI2012]永无乡_权值线段树_线段树合并

    永无乡 bzoj-2733 HNOI-2012 题目大意:题目链接. 注释:略. 想法: 它的查询操作非常友善,就是一个联通块内的$k$小值. 故此我们可以考虑每个联通块建一棵权值线段树. 这样的话每 ...

  2. Ubuntu 16.04出现:qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory

    没有安装qt4-qmake,安装即可: sudo apt-get install qt4-qmake 参考: https://stackoverflow.com/questions/23703864/ ...

  3. 得到java异常printStackTrace的详细信息

    平时写Java代码时,想看抛出的异常信息,来找出具体的异常点,我们常常会用Exception.toString ()或者 Exception.getMessage()来取得异常信息,再把它print到 ...

  4. sql 按中文排序

    sql server:select * from [表名]order by [字段],[字段] collate Chinese_PRC_CS_AS_KS_WS mysql:select * from ...

  5. Oracle SqlPlus导出查询结果

    Oracle SqlPlus导出查询结果 在sqlplus下导出查询的结果保存到本地sql文件中,可以采用如下方式:1.连接数据库: sqlplus xmq/xmqpwd@192.168.1.57:1 ...

  6. C#如何设置窗体不能修改大小

    找到FormBorderStyle设置为FixedDialog即可                      

  7. UG如何把语言改成中文,UG如何把界面语言改成中文

    1 高级系统设置,高级,新建一个用户变量(变量名为lang,变量值为chs)   2 高级系统设置,高级,环境变量,系统变量中,查看变量名为UGII_LANG的值是否为simpl_chinese,如果 ...

  8. Linux系统下ssh登陆很慢的解决办法

    很多的Linux用户发现连接上Linux服务器在输入用户名之后还要再等一下才能输入密码,时间过长了,现在小白与大家分享一下如何解决ssh登陆问题的问题,希望对您有所帮助. 1.我们平时登陆Linux服 ...

  9. JQuery编程demo练习

    JQuery练习demo:     编敲代码,实现:     1.选中当中一列的复选框时,该复选框所在行的背景色高亮显示(黄色). 2.取消选中复选框时,所在行的背景色恢复. ============ ...

  10. (十)Net Core项目使用Cookies (八)Net Core项目使用Controller之三-入参

    (十)Net Core项目使用Cookies 一.简介 1.Net Core可以直接使用Cookies,但是调用方式有些区别. 2.Net Core将Request和Response分开实现. 二.基 ...