美文网首页程序员Spring Boot首页推荐
SpringBoot基础教程(十)——与actuator的结合

SpringBoot基础教程(十)——与actuator的结合

作者: 数齐 | 来源:发表于2018-03-24 12:59 被阅读146次

    之前的文章SpringBoot基础教程(七)——与remote shell的结合中我们有讲到项目的监控。但是spring boot拥有自己的监控系统运行的体系,就是Actuator模块。它可以实现对应用系统进行配置查看、相关功能统计等。它是通过一个个endpoint(端点)来实现的。今天我们来说2点,第一是关闭系统自带的endpoint,第二点是实现一个自己的endpoint。
    老规矩,看下pom

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    

    spring-boot-starter-actuator包含了端点功能所需要的jar。我们什么不用做,启动项目。输入
    http://localhost:8080/health 看到页面上有Json返回

    image.png
    /health说的是当前系统的一个健康状况,我们什么都没有做,也没有定义/health这个路径要处理的逻辑(没有RequestMapping),说明这是框架自带的功能,是框架帮我们实现好的。所以像这些自带的功能有
    image.png
    我们都可以利用。当然我们可以看到主要是get请求,但是也有POST请求的/shutdown,这个操作是在运行时让我们的系统关闭的,比较危险,所以不能使用GET这种很容易模拟的,说不定哪天因为误操作点到了,就会造成不可避免的损失,所以使用POST,因为POST的请求是需要特殊构建的。如果我们不希望这样的请求暴露出去怎么办,我们可以在配置文件中让他关闭endpoints.shutdown.enabled: false,这样这个功能就不会被暴露出去。
    下面我们想实现一个自己的endpoint。其实也比较简单,看代码吧
    package com.shuqi.endpoint;
    
    import org.springframework.boot.actuate.endpoint.AbstractEndpoint;
    import org.springframework.stereotype.Component;
    
    import java.util.concurrent.atomic.AtomicLong;
    
    @Component
    public class LongEndpoint extends AbstractEndpoint<Long> {
    
        private AtomicLong count = new AtomicLong();
    
        public LongEndpoint() {
            super("long");
        }
    
        @Override
        public Long invoke() {
            return count.getAndIncrement();
        }
    }
    
    
    

    继承AbstractEndpoint这个类,我们的逻辑在invoke中写就可以了。示例中实现的功能,是每次请求返回值+1。这个endpoint的名称就是“long”。看下具体的效果


    image.png

    再请求一次


    image.png
    和我们预想的结果是一致的。大家可以发动自己的想象力,看看他能给我们的系统带来什么方便的改造了。

    下节将的内容是:SpringBoot基础教程(十一)——与自定义Runner的结合

    本节项目源码

    参考文档:

    使用Spring Boot Actuator监控应用

    相关文章

      网友评论

        本文标题:SpringBoot基础教程(十)——与actuator的结合

        本文链接:https://www.haomeiwen.com/subject/eosqcftx.html