All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.lina.starter.monitor.MonitorConfigurationProperties Maven / Gradle / Ivy

package club.zhcs.lina.starter.monitor;

import java.util.List;

import org.nutz.lang.Lang;
import org.springframework.boot.context.properties.ConfigurationProperties;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * 
 * @author Kerbores([email protected])
 *
 */
@Data
@ConfigurationProperties("lina.monitor")
public class MonitorConfigurationProperties {

    Enableable http = Enableable.builder().build();

    Enableable druid = Enableable.builder().build();

    Enableable online = Enableable.builder().build();

    Enableable exception = Enableable.builder().build();

    Chain chain = new Chain();

    int interval = 10;

    Security security = Security.builder().build();

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Security {

        /**
         * 白名单网段
         */
        @Default
        List ipWhitelist = Lang.list();

        /**
         * 允许私网地址
         */
        @Default
        boolean allowPrivate = false;

        @Default
        String[] paths = Lang.array("/shutdown", "/pause", "/restart", "/actuator", "/actuator/*");
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Enableable {
        @Default
        boolean enabled = false;
    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @EqualsAndHashCode(callSuper = false)
    public static class Chain extends Enableable {

        List services = Lang.list();

        @Data
        @NoArgsConstructor
        @AllArgsConstructor
        public static class Service {
            /**
             * 服务名称
             */
            String name;
            /**
             * 服务域名
             */
            String domain;
            /**
             * 自定义检查地址
             */
            String customerCheckUrl;
            /**
             * 检查类型
             */
            Type type = Type.REST;
            /**
             * 检查端点类型
             */
            Endpoint endpoint = Endpoint.INFO;

            public enum Type {
                DISCOVERY, REST
            }

            @Getter
            @AllArgsConstructor
            public enum Endpoint {
                INFO("/actuator/info"), PING("/_ping"), CUSTOMER("");

                String url;
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy