mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 11:52:08 +08:00
健康分调整为健康状态
This commit is contained in:
@@ -3,6 +3,7 @@ package com.xiaojukeji.know.streaming.km.common.bean.entity.broker;
|
||||
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.common.IpPortData;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.JmxConfig;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.po.broker.BrokerPO;
|
||||
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -65,13 +66,13 @@ public class Broker implements Serializable {
|
||||
*/
|
||||
private Map<String, IpPortData> endpointMap;
|
||||
|
||||
public static Broker buildFrom(Long clusterPhyId, Node node, Long startTimestamp) {
|
||||
public static Broker buildFrom(Long clusterPhyId, Node node, Long startTimestamp, JmxConfig jmxConfig) {
|
||||
Broker metadata = new Broker();
|
||||
metadata.setClusterPhyId(clusterPhyId);
|
||||
metadata.setBrokerId(node.id());
|
||||
metadata.setHost(node.host());
|
||||
metadata.setPort(node.port());
|
||||
metadata.setJmxPort(-1);
|
||||
metadata.setJmxPort(jmxConfig != null ? jmxConfig.getJmxPort() : -1);
|
||||
metadata.setStartTimestamp(startTimestamp);
|
||||
metadata.setRack(node.rack());
|
||||
metadata.setStatus(1);
|
||||
|
||||
@@ -13,9 +13,4 @@ public class BaseClusterHealthConfig extends BaseClusterConfigValue {
|
||||
* 健康检查名称
|
||||
*/
|
||||
protected HealthCheckNameEnum checkNameEnum;
|
||||
|
||||
/**
|
||||
* 权重
|
||||
*/
|
||||
protected Float weight;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author wyb
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
@Data
|
||||
public class HealthAmountRatioConfig extends BaseClusterHealthConfig {
|
||||
/**
|
||||
* 总数
|
||||
*/
|
||||
private Integer amount;
|
||||
/**
|
||||
* 比例
|
||||
*/
|
||||
private Double ratio;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.health;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.po.health.HealthCheckResultPO;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.health.HealthCheckNameEnum;
|
||||
import com.xiaojukeji.know.streaming.km.common.utils.ValidateUtils;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class HealthCheckAggResult {
|
||||
private HealthCheckNameEnum checkNameEnum;
|
||||
|
||||
private List<HealthCheckResultPO> poList;
|
||||
|
||||
private Boolean passed;
|
||||
|
||||
public HealthCheckAggResult(HealthCheckNameEnum checkNameEnum, List<HealthCheckResultPO> poList) {
|
||||
this.checkNameEnum = checkNameEnum;
|
||||
this.poList = poList;
|
||||
if (!ValidateUtils.isEmptyList(poList) && poList.stream().filter(elem -> elem.getPassed() <= 0).count() <= 0) {
|
||||
passed = true;
|
||||
} else {
|
||||
passed = false;
|
||||
}
|
||||
}
|
||||
|
||||
public Integer getTotalCount() {
|
||||
if (poList == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return poList.size();
|
||||
}
|
||||
|
||||
public Integer getPassedCount() {
|
||||
if (poList == null) {
|
||||
return 0;
|
||||
}
|
||||
return (int) (poList.stream().filter(elem -> elem.getPassed() > 0).count());
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前检查的健康分
|
||||
* 比如:计算集群Broker健康检查中的某一项的健康分
|
||||
*/
|
||||
public Integer calRawHealthScore() {
|
||||
if (poList == null || poList.isEmpty()) {
|
||||
return 100;
|
||||
}
|
||||
|
||||
return 100 * this.getPassedCount() / this.getTotalCount();
|
||||
}
|
||||
|
||||
public List<String> getNotPassedResNameList() {
|
||||
if (poList == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return poList.stream().filter(elem -> elem.getPassed() <= 0).map(elem -> elem.getResName()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
if (ValidateUtils.isEmptyList(poList)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return poList.get(0).getCreateTime();
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
if (ValidateUtils.isEmptyList(poList)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return poList.get(0).getUpdateTime();
|
||||
}
|
||||
}
|
||||
@@ -17,10 +17,6 @@ import java.util.stream.Collectors;
|
||||
public class HealthScoreResult {
|
||||
private HealthCheckNameEnum checkNameEnum;
|
||||
|
||||
private Float presentDimensionTotalWeight;
|
||||
|
||||
private Float allDimensionTotalWeight;
|
||||
|
||||
private BaseClusterHealthConfig baseConfig;
|
||||
|
||||
private List<HealthCheckResultPO> poList;
|
||||
@@ -28,15 +24,11 @@ public class HealthScoreResult {
|
||||
private Boolean passed;
|
||||
|
||||
public HealthScoreResult(HealthCheckNameEnum checkNameEnum,
|
||||
Float presentDimensionTotalWeight,
|
||||
Float allDimensionTotalWeight,
|
||||
BaseClusterHealthConfig baseConfig,
|
||||
List<HealthCheckResultPO> poList) {
|
||||
this.checkNameEnum = checkNameEnum;
|
||||
this.baseConfig = baseConfig;
|
||||
this.poList = poList;
|
||||
this.presentDimensionTotalWeight = presentDimensionTotalWeight;
|
||||
this.allDimensionTotalWeight = allDimensionTotalWeight;
|
||||
if (!ValidateUtils.isEmptyList(poList) && poList.stream().filter(elem -> elem.getPassed() <= 0).count() <= 0) {
|
||||
passed = true;
|
||||
} else {
|
||||
@@ -59,32 +51,6 @@ public class HealthScoreResult {
|
||||
return (int) (poList.stream().filter(elem -> elem.getPassed() > 0).count());
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算所有检查结果的健康分
|
||||
* 比如:计算集群健康分
|
||||
*/
|
||||
public Float calAllWeightHealthScore() {
|
||||
Float healthScore = 100 * baseConfig.getWeight() / allDimensionTotalWeight;
|
||||
if (poList == null || poList.isEmpty()) {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
return healthScore * this.getPassedCount() / this.getTotalCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前维度的健康分
|
||||
* 比如:计算集群Broker健康分
|
||||
*/
|
||||
public Float calDimensionWeightHealthScore() {
|
||||
Float healthScore = 100 * baseConfig.getWeight() / presentDimensionTotalWeight;
|
||||
if (poList == null || poList.isEmpty()) {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
return healthScore * this.getPassedCount() / this.getTotalCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前检查的健康分
|
||||
* 比如:计算集群Broker健康检查中的某一项的健康分
|
||||
@@ -102,7 +68,7 @@ public class HealthScoreResult {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return poList.stream().filter(elem -> elem.getPassed() <= 0).map(elem -> elem.getResName()).collect(Collectors.toList());
|
||||
return poList.stream().filter(elem -> elem.getPassed() <= 0 && !ValidateUtils.isBlank(elem.getResName())).map(elem -> elem.getResName()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.param.zookeeper;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.ZKConfig;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.param.cluster.ClusterPhyParam;
|
||||
import com.xiaojukeji.know.streaming.km.common.utils.Tuple;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class ZookeeperParam extends ClusterPhyParam {
|
||||
private List<Tuple<String, Integer>> zkAddressList;
|
||||
|
||||
private ZKConfig zkConfig;
|
||||
|
||||
public ZookeeperParam(Long clusterPhyId, List<Tuple<String, Integer>> zkAddressList, ZKConfig zkConfig) {
|
||||
super(clusterPhyId);
|
||||
this.zkAddressList = zkAddressList;
|
||||
this.zkConfig = zkConfig;
|
||||
}
|
||||
}
|
||||
@@ -32,9 +32,6 @@ public class HealthCheckConfigVO {
|
||||
@ApiModelProperty(value="检查说明", example = "Group延迟")
|
||||
private String configDesc;
|
||||
|
||||
@ApiModelProperty(value="权重", example = "10")
|
||||
private Float weight;
|
||||
|
||||
@ApiModelProperty(value="检查配置", example = "100")
|
||||
private String value;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ public class HealthScoreBaseResultVO extends BaseTimeVO {
|
||||
@ApiModelProperty(value="检查维度", example = "1")
|
||||
private Integer dimension;
|
||||
|
||||
@ApiModelProperty(value="检查维度名称", example = "cluster")
|
||||
private String dimensionName;
|
||||
|
||||
@ApiModelProperty(value="检查名称", example = "Group延迟")
|
||||
private String configName;
|
||||
|
||||
@@ -27,9 +30,6 @@ public class HealthScoreBaseResultVO extends BaseTimeVO {
|
||||
@ApiModelProperty(value="检查说明", example = "Group延迟")
|
||||
private String configDesc;
|
||||
|
||||
@ApiModelProperty(value="权重百分比[0-100]", example = "10")
|
||||
private Integer weightPercent;
|
||||
|
||||
@ApiModelProperty(value="得分", example = "100")
|
||||
private Integer score;
|
||||
|
||||
|
||||
@@ -35,14 +35,9 @@ public class Constant {
|
||||
public static final Integer DEFAULT_SESSION_TIMEOUT_UNIT_MS = 15000;
|
||||
public static final Integer DEFAULT_REQUEST_TIMEOUT_UNIT_MS = 5000;
|
||||
|
||||
public static final Float MIN_HEALTH_SCORE = 10f;
|
||||
|
||||
|
||||
/**
|
||||
* 指标相关
|
||||
*/
|
||||
public static final Integer DEFAULT_CLUSTER_HEALTH_SCORE = 90;
|
||||
|
||||
public static final Integer PER_BATCH_MAX_VALUE = 100;
|
||||
|
||||
public static final String DEFAULT_USER_NAME = "know-streaming-app";
|
||||
|
||||
@@ -15,24 +15,15 @@ public class HealthScoreVOConverter {
|
||||
private HealthScoreVOConverter() {
|
||||
}
|
||||
|
||||
public static List<HealthScoreResultDetailVO> convert2HealthScoreResultDetailVOList(List<HealthScoreResult> healthScoreResultList, boolean useGlobalWeight) {
|
||||
Float globalWeightSum = 1f;
|
||||
if (!healthScoreResultList.isEmpty()) {
|
||||
globalWeightSum = healthScoreResultList.get(0).getAllDimensionTotalWeight();
|
||||
}
|
||||
|
||||
public static List<HealthScoreResultDetailVO> convert2HealthScoreResultDetailVOList(List<HealthScoreResult> healthScoreResultList) {
|
||||
List<HealthScoreResultDetailVO> voList = new ArrayList<>();
|
||||
for (HealthScoreResult healthScoreResult: healthScoreResultList) {
|
||||
HealthScoreResultDetailVO vo = new HealthScoreResultDetailVO();
|
||||
vo.setDimension(healthScoreResult.getCheckNameEnum().getDimensionEnum().getDimension());
|
||||
vo.setDimensionName(healthScoreResult.getCheckNameEnum().getDimensionEnum().getMessage());
|
||||
vo.setConfigName(healthScoreResult.getCheckNameEnum().getConfigName());
|
||||
vo.setConfigItem(healthScoreResult.getCheckNameEnum().getConfigItem());
|
||||
vo.setConfigDesc(healthScoreResult.getCheckNameEnum().getConfigDesc());
|
||||
if (useGlobalWeight) {
|
||||
vo.setWeightPercent(healthScoreResult.getBaseConfig().getWeight().intValue() * 100 / globalWeightSum.intValue());
|
||||
} else {
|
||||
vo.setWeightPercent(healthScoreResult.getBaseConfig().getWeight().intValue() * 100 / healthScoreResult.getPresentDimensionTotalWeight().intValue());
|
||||
}
|
||||
|
||||
vo.setScore(healthScoreResult.calRawHealthScore());
|
||||
if (healthScoreResult.getTotalCount() <= 0) {
|
||||
@@ -57,9 +48,9 @@ public class HealthScoreVOConverter {
|
||||
for (HealthScoreResult healthScoreResult: healthScoreResultList) {
|
||||
HealthScoreBaseResultVO vo = new HealthScoreBaseResultVO();
|
||||
vo.setDimension(healthScoreResult.getCheckNameEnum().getDimensionEnum().getDimension());
|
||||
vo.setDimensionName(healthScoreResult.getCheckNameEnum().getDimensionEnum().getMessage());
|
||||
vo.setConfigName(healthScoreResult.getCheckNameEnum().getConfigName());
|
||||
vo.setConfigDesc(healthScoreResult.getCheckNameEnum().getConfigDesc());
|
||||
vo.setWeightPercent(healthScoreResult.getBaseConfig().getWeight().intValue() * 100 / healthScoreResult.getPresentDimensionTotalWeight().intValue());
|
||||
vo.setScore(healthScoreResult.calRawHealthScore());
|
||||
vo.setPassed(healthScoreResult.getPassedCount().equals(healthScoreResult.getTotalCount()));
|
||||
vo.setCheckConfig(convert2HealthCheckConfigVO(ConfigGroupEnum.HEALTH.name(), healthScoreResult.getBaseConfig()));
|
||||
@@ -86,7 +77,6 @@ public class HealthScoreVOConverter {
|
||||
vo.setConfigName(config.getCheckNameEnum().getConfigName());
|
||||
vo.setConfigItem(config.getCheckNameEnum().getConfigItem());
|
||||
vo.setConfigDesc(config.getCheckNameEnum().getConfigDesc());
|
||||
vo.setWeight(config.getWeight());
|
||||
vo.setValue(ConvertUtil.obj2Json(config));
|
||||
return vo;
|
||||
}
|
||||
|
||||
@@ -10,13 +10,15 @@ import lombok.Getter;
|
||||
public enum HealthCheckDimensionEnum {
|
||||
UNKNOWN(-1, "未知"),
|
||||
|
||||
CLUSTER(0, "Cluster维度"),
|
||||
CLUSTER(0, "Cluster"),
|
||||
|
||||
BROKER(1, "Broker维度"),
|
||||
BROKER(1, "Broker"),
|
||||
|
||||
TOPIC(2, "Topic维度"),
|
||||
TOPIC(2, "Topic"),
|
||||
|
||||
GROUP(3, "消费组维度"),
|
||||
GROUP(3, "Group"),
|
||||
|
||||
ZOOKEEPER(4, "Zookeeper"),
|
||||
|
||||
;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.enums.health;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck.BaseClusterHealthConfig;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck.HealthAmountRatioConfig;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck.HealthCompareValueConfig;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck.HealthDetectedInLatestMinutesConfig;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
||||
@@ -19,7 +20,8 @@ public enum HealthCheckNameEnum {
|
||||
"未知",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "UNKNOWN",
|
||||
"未知",
|
||||
BaseClusterHealthConfig.class
|
||||
BaseClusterHealthConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
CLUSTER_NO_CONTROLLER(
|
||||
@@ -27,7 +29,8 @@ public enum HealthCheckNameEnum {
|
||||
"Controller",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "CLUSTER_NO_CONTROLLER",
|
||||
"集群Controller数正常",
|
||||
HealthCompareValueConfig.class
|
||||
HealthCompareValueConfig.class,
|
||||
true
|
||||
),
|
||||
|
||||
BROKER_REQUEST_QUEUE_FULL(
|
||||
@@ -35,7 +38,8 @@ public enum HealthCheckNameEnum {
|
||||
"RequestQueueSize",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "BROKER_REQUEST_QUEUE_FULL",
|
||||
"Broker-RequestQueueSize指标",
|
||||
HealthCompareValueConfig.class
|
||||
HealthCompareValueConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
BROKER_NETWORK_PROCESSOR_AVG_IDLE_TOO_LOW(
|
||||
@@ -43,7 +47,8 @@ public enum HealthCheckNameEnum {
|
||||
"NetworkProcessorAvgIdlePercent",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "BROKER_NETWORK_PROCESSOR_AVG_IDLE_TOO_LOW",
|
||||
"Broker-NetworkProcessorAvgIdlePercent指标",
|
||||
HealthCompareValueConfig.class
|
||||
HealthCompareValueConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
GROUP_RE_BALANCE_TOO_FREQUENTLY(
|
||||
@@ -51,7 +56,8 @@ public enum HealthCheckNameEnum {
|
||||
"Group Re-Balance",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "GROUP_RE_BALANCE_TOO_FREQUENTLY",
|
||||
"Group re-balance频率",
|
||||
HealthDetectedInLatestMinutesConfig.class
|
||||
HealthDetectedInLatestMinutesConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
TOPIC_NO_LEADER(
|
||||
@@ -59,7 +65,8 @@ public enum HealthCheckNameEnum {
|
||||
"NoLeader",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "TOPIC_NO_LEADER",
|
||||
"Topic 无Leader数",
|
||||
HealthCompareValueConfig.class
|
||||
HealthCompareValueConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
TOPIC_UNDER_REPLICA_TOO_LONG(
|
||||
@@ -67,9 +74,66 @@ public enum HealthCheckNameEnum {
|
||||
"UnderReplicaTooLong",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "TOPIC_UNDER_REPLICA_TOO_LONG",
|
||||
"Topic 未同步持续时间",
|
||||
HealthDetectedInLatestMinutesConfig.class
|
||||
HealthDetectedInLatestMinutesConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
ZK_BRAIN_SPLIT(
|
||||
HealthCheckDimensionEnum.ZOOKEEPER,
|
||||
"BrainSplit",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "ZK_BRAIN_SPLIT",
|
||||
"ZK 脑裂",
|
||||
HealthCompareValueConfig.class,
|
||||
true
|
||||
),
|
||||
|
||||
ZK_OUTSTANDING_REQUESTS(
|
||||
HealthCheckDimensionEnum.ZOOKEEPER,
|
||||
"OutstandingRequests",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "ZK_OUTSTANDING_REQUESTS",
|
||||
"ZK Outstanding 请求堆积数",
|
||||
HealthAmountRatioConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
ZK_WATCH_COUNT(
|
||||
HealthCheckDimensionEnum.ZOOKEEPER,
|
||||
"WatchCount",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "ZK_WATCH_COUNT",
|
||||
"ZK WatchCount 数",
|
||||
HealthAmountRatioConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
ZK_ALIVE_CONNECTIONS(
|
||||
HealthCheckDimensionEnum.ZOOKEEPER,
|
||||
"AliveConnections",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "ZK_ALIVE_CONNECTIONS",
|
||||
"ZK 连接数",
|
||||
HealthAmountRatioConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
ZK_APPROXIMATE_DATA_SIZE(
|
||||
HealthCheckDimensionEnum.ZOOKEEPER,
|
||||
"ApproximateDataSize",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "ZK_APPROXIMATE_DATA_SIZE",
|
||||
"ZK 数据大小(Byte)",
|
||||
HealthAmountRatioConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
ZK_SENT_RATE(
|
||||
HealthCheckDimensionEnum.ZOOKEEPER,
|
||||
"SentRate",
|
||||
Constant.HC_CONFIG_NAME_PREFIX + "ZK_SENT_RATE",
|
||||
"ZK 发包数",
|
||||
HealthAmountRatioConfig.class,
|
||||
false
|
||||
),
|
||||
|
||||
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
@@ -97,12 +161,18 @@ public enum HealthCheckNameEnum {
|
||||
*/
|
||||
private final Class configClazz;
|
||||
|
||||
HealthCheckNameEnum(HealthCheckDimensionEnum dimensionEnum, String configItem, String configName, String configDesc, Class configClazz) {
|
||||
/**
|
||||
* 是可用性检查?
|
||||
*/
|
||||
private final boolean availableChecker;
|
||||
|
||||
HealthCheckNameEnum(HealthCheckDimensionEnum dimensionEnum, String configItem, String configName, String configDesc, Class configClazz, boolean availableChecker) {
|
||||
this.dimensionEnum = dimensionEnum;
|
||||
this.configItem = configItem;
|
||||
this.configName = configName;
|
||||
this.configDesc = configDesc;
|
||||
this.configClazz = configClazz;
|
||||
this.availableChecker = availableChecker;
|
||||
}
|
||||
|
||||
public static HealthCheckNameEnum getByName(String configName) {
|
||||
|
||||
@@ -16,7 +16,7 @@ public enum HealthStateEnum {
|
||||
|
||||
POOR(2, "差"),
|
||||
|
||||
DEAD(3, "宕机"),
|
||||
DEAD(3, "Down"),
|
||||
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user