专栏首页程序猿DD在传统Spring应用中使用spring-boot-actuator模块提供监控端点

在传统Spring应用中使用spring-boot-actuator模块提供监控端点

在之前发布的《Spring Boot Actuator监控端点小结》一文中,我们介绍了Spring Boot Actuator模块为应用提供的强大监控能力。在Spring Boot应用中,我们只需要简单的引入`spring-boot-starter-actuator`依赖就能为应用添加各种有用的监控端点。其中,`/health`端点能够全面检查应用的健康状态,该端点也被Spring Cloud中的服务治理(Eureka、Consul)用来检查应用的健康状态。所以,在使用Spring Cloud构建微服务架构的时候,如果还存在一些遗留的传统Spring应用时,我们就需要为这些应用也加入`/health`端点。那么在传统的Spring应用中我们是否也能引入该模块来提供这些有用的监控端点呢?下面我们就来介绍整合的详细步骤。

引入相关依赖

由于在传统Spring应用中,我们不能直接使用Starter POMs。所以,我们需要拆解了来引入到传统Spring应用的`pom.xml`中,主要有如下两个依赖:

手工引入配置

由于在传统Spring应用中没有自动化配置功能,所以我们需要手工的来创建配置并启用Spring Boot Actuator的监控端点。比如,我们先来创建一个实现`/health`端点的配置,具体如下:

其中,`@Import`中引入的`org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration`类是Spring Boot Actuator的基础配置类。`org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration`类是`/health`端点的基础配置,具体内容本文不做详细展开,读者可自行查看。而在该配置类中,还创建了两个Bean,其中`EndpointHandlerMapping`是`org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping`的子类,它用来加载所有的监控端点;而`HealthMvcEndpoint`是具体的`/health`端点实现。

在完成上面配置之后,我们就可以启动Spring应用,此时就可以看控制台中看到打印出了`/health`端点,我们可以尝试访问该端点来获取当前实例的健康状况。

除了在传统应用中可以加载`/health`端点之外,我们也可以如法炮制地创建其他端点,比如:获取各个度量指标的`/metrics`端点,可以通过如下配置实现:

这里,我们主要增加了两个内容:

- `@Import`中增加引入`PublicMetricsAutoConfiguration`配置类

- 创建`/metrics`端点的实现Bean

到这里,本文的内容就介绍完了,更多关于传统Spring应用与Spring Boot/Cloud的配合使用。敬请关注我的博客和公众号,获取持续分享。

本文分享自微信公众号 - 程序猿DD(didispace)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • spring cloud 学习(5) - config server

     分布式环境下的统一配置框架,已经有不少了,比如百度的disconf,阿里的diamand。今天来看下spring cloud对应的解决方案: ? 如上图,从架...

    菩提树下的杨过
  • spring-boot 速成(12) - 如何注入多个redis StringRedisTemplate

    默认情况下,spring-boot的redis自动配置,只能注册一个StringRedisTemplate实例,如果希望注入多个,比如:1个读写database...

    菩提树下的杨过
  • spring cloud 学习(2) - eureka server注册中心高可用及安全认证

    接上节继续,注册中心单点肯定是不牢靠的,可以参考下面的方案做成注册中心集群: ? 弄成3个节点,每个节点向其它节点注册,这样只要集群中有一个节点正常工作即可。为...

    菩提树下的杨过
  • spring-boot 速成(9) druid+mybatis 多数据源及读写分离的处理

    按上节继续学习,稍微复杂的业务系统,一般会将数据库按业务拆开,比如产品系统的数据库放在product db中,订单系统的数据库放在order db中...,然后...

    菩提树下的杨过
  • spring-boot 速成(8) 集成druid+mybatis

    spring-boot与druid、mybatis集成(包括pageHelper分页插件), 要添加以下几个依赖项: compile('mysql:my...

    菩提树下的杨过
  • spring cloud 学习(4) - hystrix 服务熔断处理

    hystrix 是一个专用于服务熔断处理的开源项目,当依赖的服务方出现故障不可用时,hystrix有一个所谓的断路器,一但打开,就会直接拦截掉对故障服务的调用,...

    菩提树下的杨过
  • spring cloud 学习(8) - sleuth & zipkin 调用链跟踪

    业务复杂的微服务架构中,往往服务之间的调用关系比较难梳理,一次http请求中,可能涉及到多个服务的调用(eg: service A -> service B -...

    菩提树下的杨过
  • spring cloud 学习(1) - 基本的SOA示例

    有过dubbo/dubbox使用经验的朋友,看到下面这张图,一定很熟悉,就是SOA架构的最基本套路。 ? 与dubbo对比,上图的3大要素中,spring cl...

    菩提树下的杨过
  • spring集成kafka

    一、添加依赖项 compile 'org.springframework.kafka:spring-kafka:1.2.2.RELEASE' 二、发消息(生产者...

    菩提树下的杨过
  • redis 学习笔记(7)-cluster 客户端(jedis)代码示例

    上节学习了cluster的搭建及redis-cli终端下如何操作,但是更常用的场景是在程序代码里对cluster读写,这需要redis-client对clust...

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券