0109 springboot的部署测试监控


springboot的部署测试监控

原理是: 从servlet3.1开始,运行无web.xml的web程序,只需要实现ServletContainerInitializer接口,而SpringBootServletInitializer扩展了该类,所以可以实现无xml启动;

3 配置外置tomcat

4 忽略打包检查

  
                org.apache.maven.plugins
                maven-war-plugin
                2.3
                
                    false
                
            

热部署

开发的时候用到, spring-boot-devtools ;
引入依赖:


            org.springframework.boot
            spring-boot-devtools
            true

暴露的配置信息可以配置更多细节方面的处理:

@ReadOperation标注方法 标识GET方法
@WriteOperation  标识POST方法
@DeleteOperation 标识Delete方法

package com.springbootpractice.egproduct.endpoint;

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;

/**
 * @author carterbrother
 * @description 新增actuator的一个端点 
 * @date 2019年06月21日 18:42
 * @Copyright (c) carterbrother
 */
@Endpoint(id = "dbCheck",enableByDefault = true)
@Component
public class DBCheckEndpoint {

    @ReadOperation
    public String test(){
        return "db check ok";
    }


}

actuator内置了很多的健康指标 需要配置才能显示,配置方法:

management.endpoint.health.show-details=always

package com.springbootpractice.egproduct.health;

import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.net.InetAddress;

/**
 * @author carterbrother
 * @description 进行网络检查
 * @date 2019年06月21日 18:30
 * @Copyright (c) carterbrother
 */
@Component
public class WWWHealthIndicator extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {

        if (ping()){
            builder.withDetail("message","可以正常连接互联网").up();
            return;
        }

        builder.withDetail("message","无法连接互联网").unknown();

    }

    private boolean ping() {

        try {
            return   InetAddress.getByName("www.baidu.com").isReachable(3000);
        } catch (IOException e) {
            return false;
        }

    }
}

JMX监控

相对于http监控,也提供了jmx的监控方式;

典型使用方式使用的是jdk的 jconsole,使用jmx协议连接本地的jvm,进行监控,MBean下的Health下可以查看到返回信息;以此来进行监控。

原创不易,转载请注明出处。