spring使用spring boot actuator

相信大家也搜索过相关资料来查看相关的spring整合actuator添加项目监控,相对而言比较简单,毕竟是spring自己的东西,可以无缝对接。因快速开发本文从最简单的方法整合actuator,各位有什么好的方法欢迎推荐。

1.环境: 

spring 版本4.2.1 .RELEASE 

spring-boot-actuator  1.2.8.RELEASE(只要版本比spring版本低就行)

jdk1.7或1.8

必须注意的一点项目必须支持http请求,就是说需要有spring的web webmvc tx的jar,actuator会相应的引用依赖其中的方法。

2.集成

    引用actuator jar

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-actuator</artifactId>
    <version>1.2.8.RELEASE</version>
</dependency>
   配置:

<servlet>
  <servlet-name>DispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring-servlet.xml</param-value>  路径自己根据实际情况配置
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>DispatcherServlet</servlet-name>

 
 
<url-pattern> *.do </url-pattern> 建议加上后缀 之后actuator 将自动为访问地址加上后缀,防止对其他资源访问干扰
</servlet-mapping>

     spring-servlet.xml 文件内容:

<mvc:annotation-driven/>
自定义spring config用于整合actuator方法
import org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.PublicMetricsAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration;
import org.springframework.boot.actuate.endpoint.*;
import org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping;
import org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter;
import org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint;
import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.context.support.StandardServletEnvironment;

import java.util.Collection;

//其中有多少个自动配置就引用多少个
//具体请到jar中查看
//一定要将此类放置在spring 扫描路径下
@Configuration
@Import({EndpointAutoConfiguration.class,
        PublicMetricsAutoConfiguration.class,
        HealthIndicatorAutoConfiguration.class,
        TraceRepositoryAutoConfiguration.class})
public class MyAppSpringConfig {
    //
    //=============================以下对象已经在开始自动配置,并给我们生成了直接设置返回就好===========================================
    //EndpointAutoConfiguration PublicMetricsAutoConfiguration  HealthIndicatorAutoConfiguration TraceRepositoryAutoConfiguration
    @Bean
    public EndpointHandlerMapping endpointHandlerMapping(
            Collection<? extends MvcEndpoint> endpoints) {
        EndpointHandlerMapping mapping = new EndpointHandlerMapping(endpoints);
        //给访问路径加上前缀作为区分
        mapping.setPrefix("/actuator");
        return mapping;
    }

    @Bean
    public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
        return new HealthMvcEndpoint(delegate, false);
    }

    @Bean
    public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }

    @Bean
    public EndpointMvcAdapter infoEndPoint(InfoEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }

    @Bean
    public EndpointMvcAdapter traceEndPoint(TraceEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }

    //==========================================================================================================================

    @Bean
    public EndpointMvcAdapter dumpEndpoint() {
        //不需要引用什么spring中的方法  独立运行
        return new EndpointMvcAdapter(new DumpEndpoint());
    }

    @Bean
    public EndpointMvcAdapter environmentEndpoint(StandardServletEnvironment environment) {
        //手动创建EnvironmentEndpoint对象并设置 StandardServletEnvironment值 由spring自动注入
        //因为actuator中的StandardServletEnvironment是spring中的实体 直接注入就结合起来了 以下同理
        EnvironmentEndpoint environmentEndpoint = new EnvironmentEndpoint();
        environmentEndpoint.setEnvironment(environment);
        return new EndpointMvcAdapter(environmentEndpoint);
    }

    @Bean
    public EndpointMvcAdapter beansEndpoint(ApplicationContext context) {
        BeansEndpoint endpoint = new BeansEndpoint();
        //如果不给注入并设置context 将无法获取bean数据
        endpoint.setApplicationContext(context);
        return new EndpointMvcAdapter(endpoint);
    }

    @Bean
    public EndpointMvcAdapter requestMappingEndpoint(ApplicationContext context) {
        RequestMappingEndpoint requestMappingEndpoint = new RequestMappingEndpoint();
        //同理如上
        requestMappingEndpoint.setApplicationContext(context);
        return new EndpointMvcAdapter(requestMappingEndpoint);
    }

    //实际开发中相的配置是不应该展示给开发人员,在这里配置的是无权限版的结合,可参考上面的配置按需增加
    /*
    //由于容器不是集成在spring,而使用的是独立的tomcat 虽然可以执行 但并不会shutdown tomcat
    @Bean
    public EndpointMvcAdapter shutdownEndpoint(ApplicationContext context) {
        ShutdownEndpoint shutdownEndpoint = new ShutdownEndpoint();
        //同理如上
        shutdownEndpoint.setApplicationContext(context);
        //默认禁用 开启才能生效
        shutdownEndpoint.setEnabled(true);
        return new EndpointMvcAdapter(shutdownEndpoint);
    }*/
}

3.关于actuator访问

  actuator请求返回的json数据,具体请求如下:


详细介绍请参考: http://blog.csdn.net/u011851478/article/details/55046918 顺便感谢博主的图片

经过以上修改访问地址变成


 启动时也可发现多了几个意外的访问url:


   文章比较粗糙,希望能帮到大家

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值