随着 微服务 的流行,相比较以前一个大型应用程序搞定所有需求,我们现在更倾向于把大型应用程序切分成多个微服务,当然快速搭建微服务springBoot是个不错的选择,当然springBoot优势不仅仅在于快速开发,spring-boot-starter-actuator 它提供了监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量、当前应用的并发数、服务资源、延迟以及其他度量信息,精简配置,运用javaconfig不用再去添加“一坨”xml配置。简明而强大的springBoot具有很大的应用价值。开源的SBA监控工具从此诞生(示例版本V1.5.x)。
SpringBootAdmin较其他监控工具对比。
优势:
开源、低侵入式、配置简单等等。
缺点:
权限控制粒度问题(各个模块没有权限区分)
SBA 充当server其他Boot应用作为client,sever收集client数据信息(client 前往server进行注册),我们便可以通server后台看到各个client信息。在除了引用相应的依赖外我们需要配置以下信息,来完成我们整体服务
- Server
a. 端配置添加 @EnableAdminServer 注解开启监控;
b. 配置admin登入账号,当然不想写死认证信息还支持OAuth2认证;
c. 配置turbine需要指定配置turbine 来聚合client hystrix的监控中服务器发送事件流数据;
d. 配置邮件通知;
。。。
- Client
a.配置注册server端地址,触发自动配置、指明Server注册地址。手动配置地址/配置Eureka server发现服务,同时需要配置注册认证用户和认证密码;
b. 配置JMX-bean管理;
c. Loglevel 管理 在logback.xml文件中加入
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<jmxConfigurator/>
当然这是默认配置,我们需要定义格式,文本输出 等等。
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<jmxConfigurator/>
直接添加即可。
d.配置hystrix;
。。。
- 基础信息
当我们服务运行某个模块出现问题会出现up->down或者非过滤(spring.boot.admin.notify.mail.ignore-changes 默认过滤"UNKNOWN:UP")状态,并且配置邮件也会告警。
- Logging日志级别修改(目前仅适用于Logback)
- Environment配置
支持Spring Cloud的postable,env和refresh-endpoint。我们可以集中配置我们程序中的配置,可以运用我们admin后台来修改配置类解决线上一些突发情况。
- 在线Heapdump
我们可通过SBA后台下载dump文件利用HeapAnalyzer来生成直观的信息
- Trace日志追踪和hystrix ui
- Journal
健康状态记录日志,工具会告诉我们是哪一模块出现问题
此外还有统计接口信息接口响应信息、JMX beans管理、Threads会话和线程管理,邮件告警等等,注解式服务,对现有项目耦合性很低,穿插在服务之间,为服务提供服务,及时发现问题,并高效的解决问题。