提交 07d1efab 编写于 作者: Z ZQKC

[Bugfix]修复ZK四字命令解析错误的问题

1、四字命令结果为Float类型的字符串时,使用Long.valueOf()会抛出格式转换失败异常。因此为了方便处理,将使用ConvertUtil.string2Float()方法进行转换。
2、规范调整过程中,涉及到的代码。

(cherry picked from commit c71865f6)
上级 9f6882cf
...@@ -27,6 +27,10 @@ public abstract class BaseMetrics implements Serializable { ...@@ -27,6 +27,10 @@ public abstract class BaseMetrics implements Serializable {
protected Map<String, Float> metrics = new ConcurrentHashMap<>(); protected Map<String, Float> metrics = new ConcurrentHashMap<>();
public void putMetric(String key, Float value){ public void putMetric(String key, Float value){
if (value == null || key == null) {
return;
}
metrics.put(key, value); metrics.put(key, value);
} }
......
...@@ -25,15 +25,15 @@ public class MonitorCmdData extends BaseFourLetterWordCmdData { ...@@ -25,15 +25,15 @@ public class MonitorCmdData extends BaseFourLetterWordCmdData {
private Float zkAvgLatency; private Float zkAvgLatency;
private Float zkMaxLatency; private Float zkMaxLatency;
private Float zkMinLatency; private Float zkMinLatency;
private Long zkPacketsReceived; private Float zkPacketsReceived;
private Long zkPacketsSent; private Float zkPacketsSent;
private Long zkNumAliveConnections; private Float zkNumAliveConnections;
private Long zkOutstandingRequests; private Float zkOutstandingRequests;
private String zkServerState; private String zkServerState;
private Long zkZnodeCount; private Float zkZnodeCount;
private Long zkWatchCount; private Float zkWatchCount;
private Long zkEphemeralsCount; private Float zkEphemeralsCount;
private Long zkApproximateDataSize; private Float zkApproximateDataSize;
private Long zkOpenFileDescriptorCount; private Float zkOpenFileDescriptorCount;
private Long zkMaxFileDescriptorCount; private Float zkMaxFileDescriptorCount;
} }
...@@ -20,11 +20,11 @@ public class ServerCmdData extends BaseFourLetterWordCmdData { ...@@ -20,11 +20,11 @@ public class ServerCmdData extends BaseFourLetterWordCmdData {
private Float zkAvgLatency; private Float zkAvgLatency;
private Float zkMaxLatency; private Float zkMaxLatency;
private Float zkMinLatency; private Float zkMinLatency;
private Long zkPacketsReceived; private Float zkPacketsReceived;
private Long zkPacketsSent; private Float zkPacketsSent;
private Long zkNumAliveConnections; private Float zkNumAliveConnections;
private Long zkOutstandingRequests; private Float zkOutstandingRequests;
private String zkServerState; private String zkServerState;
private Long zkZnodeCount; private Float zkZnodeCount;
private Long zkZxid; private Long zkZxid;
} }
...@@ -51,7 +51,7 @@ public class MonitorCmdDataParser implements FourLetterWordDataParser<MonitorCmd ...@@ -51,7 +51,7 @@ public class MonitorCmdDataParser implements FourLetterWordDataParser<MonitorCmd
} }
MonitorCmdData monitorCmdData = new MonitorCmdData(); MonitorCmdData monitorCmdData = new MonitorCmdData();
dataMap.entrySet().stream().forEach(elem -> { dataMap.entrySet().forEach(elem -> {
try { try {
switch (elem.getKey()) { switch (elem.getKey()) {
case "zk_version": case "zk_version":
...@@ -67,37 +67,37 @@ public class MonitorCmdDataParser implements FourLetterWordDataParser<MonitorCmd ...@@ -67,37 +67,37 @@ public class MonitorCmdDataParser implements FourLetterWordDataParser<MonitorCmd
monitorCmdData.setZkMinLatency(ConvertUtil.string2Float(elem.getValue())); monitorCmdData.setZkMinLatency(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_packets_received": case "zk_packets_received":
monitorCmdData.setZkPacketsReceived(Long.valueOf(elem.getValue())); monitorCmdData.setZkPacketsReceived(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_packets_sent": case "zk_packets_sent":
monitorCmdData.setZkPacketsSent(Long.valueOf(elem.getValue())); monitorCmdData.setZkPacketsSent(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_num_alive_connections": case "zk_num_alive_connections":
monitorCmdData.setZkNumAliveConnections(Long.valueOf(elem.getValue())); monitorCmdData.setZkNumAliveConnections(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_outstanding_requests": case "zk_outstanding_requests":
monitorCmdData.setZkOutstandingRequests(Long.valueOf(elem.getValue())); monitorCmdData.setZkOutstandingRequests(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_server_state": case "zk_server_state":
monitorCmdData.setZkServerState(elem.getValue()); monitorCmdData.setZkServerState(elem.getValue());
break; break;
case "zk_znode_count": case "zk_znode_count":
monitorCmdData.setZkZnodeCount(Long.valueOf(elem.getValue())); monitorCmdData.setZkZnodeCount(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_watch_count": case "zk_watch_count":
monitorCmdData.setZkWatchCount(Long.valueOf(elem.getValue())); monitorCmdData.setZkWatchCount(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_ephemerals_count": case "zk_ephemerals_count":
monitorCmdData.setZkEphemeralsCount(Long.valueOf(elem.getValue())); monitorCmdData.setZkEphemeralsCount(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_approximate_data_size": case "zk_approximate_data_size":
monitorCmdData.setZkApproximateDataSize(Long.valueOf(elem.getValue())); monitorCmdData.setZkApproximateDataSize(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_open_file_descriptor_count": case "zk_open_file_descriptor_count":
monitorCmdData.setZkOpenFileDescriptorCount(Long.valueOf(elem.getValue())); monitorCmdData.setZkOpenFileDescriptorCount(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "zk_max_file_descriptor_count": case "zk_max_file_descriptor_count":
monitorCmdData.setZkMaxFileDescriptorCount(Long.valueOf(elem.getValue())); monitorCmdData.setZkMaxFileDescriptorCount(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "Proposal sizes last/min/max": case "Proposal sizes last/min/max":
case "zk_fsync_threshold_exceed_count": case "zk_fsync_threshold_exceed_count":
......
...@@ -46,7 +46,7 @@ public class ServerCmdDataParser implements FourLetterWordDataParser<ServerCmdDa ...@@ -46,7 +46,7 @@ public class ServerCmdDataParser implements FourLetterWordDataParser<ServerCmdDa
} }
ServerCmdData serverCmdData = new ServerCmdData(); ServerCmdData serverCmdData = new ServerCmdData();
dataMap.entrySet().stream().forEach(elem -> { dataMap.entrySet().forEach(elem -> {
try { try {
switch (elem.getKey()) { switch (elem.getKey()) {
case "Zookeeper version": case "Zookeeper version":
...@@ -59,22 +59,22 @@ public class ServerCmdDataParser implements FourLetterWordDataParser<ServerCmdDa ...@@ -59,22 +59,22 @@ public class ServerCmdDataParser implements FourLetterWordDataParser<ServerCmdDa
serverCmdData.setZkMaxLatency(ConvertUtil.string2Float(data[2])); serverCmdData.setZkMaxLatency(ConvertUtil.string2Float(data[2]));
break; break;
case "Received": case "Received":
serverCmdData.setZkPacketsReceived(Long.valueOf(elem.getValue())); serverCmdData.setZkPacketsReceived(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "Sent": case "Sent":
serverCmdData.setZkPacketsSent(Long.valueOf(elem.getValue())); serverCmdData.setZkPacketsSent(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "Connections": case "Connections":
serverCmdData.setZkNumAliveConnections(Long.valueOf(elem.getValue())); serverCmdData.setZkNumAliveConnections(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "Outstanding": case "Outstanding":
serverCmdData.setZkOutstandingRequests(Long.valueOf(elem.getValue())); serverCmdData.setZkOutstandingRequests(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "Mode": case "Mode":
serverCmdData.setZkServerState(elem.getValue()); serverCmdData.setZkServerState(elem.getValue());
break; break;
case "Node count": case "Node count":
serverCmdData.setZkZnodeCount(Long.valueOf(elem.getValue())); serverCmdData.setZkZnodeCount(ConvertUtil.string2Float(elem.getValue()));
break; break;
case "Zxid": case "Zxid":
serverCmdData.setZkZxid(Long.parseUnsignedLong(elem.getValue().trim().substring(2), 16)); serverCmdData.setZkZxid(Long.parseUnsignedLong(elem.getValue().trim().substring(2), 16));
......
...@@ -161,7 +161,7 @@ public class ZookeeperMetricServiceImpl extends BaseMetricService implements Zoo ...@@ -161,7 +161,7 @@ public class ZookeeperMetricServiceImpl extends BaseMetricService implements Zoo
// 格式转化 // 格式转化
List<MetricLineVO> voList = new ArrayList<>(); List<MetricLineVO> voList = new ArrayList<>();
pointVOMap.entrySet().stream().forEach(entry -> pointVOMap.entrySet().forEach(entry ->
voList.add(new MetricLineVO(String.valueOf(clusterPhyId), entry.getKey(), entry.getValue())) voList.add(new MetricLineVO(String.valueOf(clusterPhyId), entry.getKey(), entry.getValue()))
); );
return Result.buildSuc(voList); return Result.buildSuc(voList);
...@@ -208,11 +208,11 @@ public class ZookeeperMetricServiceImpl extends BaseMetricService implements Zoo ...@@ -208,11 +208,11 @@ public class ZookeeperMetricServiceImpl extends BaseMetricService implements Zoo
metrics.putMetric(ZOOKEEPER_METRIC_AVG_REQUEST_LATENCY, cmdData.getZkAvgLatency()); metrics.putMetric(ZOOKEEPER_METRIC_AVG_REQUEST_LATENCY, cmdData.getZkAvgLatency());
metrics.putMetric(ZOOKEEPER_METRIC_MIN_REQUEST_LATENCY, cmdData.getZkMinLatency()); metrics.putMetric(ZOOKEEPER_METRIC_MIN_REQUEST_LATENCY, cmdData.getZkMinLatency());
metrics.putMetric(ZOOKEEPER_METRIC_MAX_REQUEST_LATENCY, cmdData.getZkMaxLatency()); metrics.putMetric(ZOOKEEPER_METRIC_MAX_REQUEST_LATENCY, cmdData.getZkMaxLatency());
metrics.putMetric(ZOOKEEPER_METRIC_OUTSTANDING_REQUESTS, cmdData.getZkOutstandingRequests().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_OUTSTANDING_REQUESTS, cmdData.getZkOutstandingRequests());
metrics.putMetric(ZOOKEEPER_METRIC_NODE_COUNT, cmdData.getZkZnodeCount().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_NODE_COUNT, cmdData.getZkZnodeCount());
metrics.putMetric(ZOOKEEPER_METRIC_NUM_ALIVE_CONNECTIONS, cmdData.getZkNumAliveConnections().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_NUM_ALIVE_CONNECTIONS, cmdData.getZkNumAliveConnections());
metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_RECEIVED, cmdData.getZkPacketsReceived().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_RECEIVED, cmdData.getZkPacketsReceived());
metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_SENT, cmdData.getZkPacketsSent().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_SENT, cmdData.getZkPacketsSent());
return Result.buildSuc(metrics); return Result.buildSuc(metrics);
} }
...@@ -257,16 +257,16 @@ public class ZookeeperMetricServiceImpl extends BaseMetricService implements Zoo ...@@ -257,16 +257,16 @@ public class ZookeeperMetricServiceImpl extends BaseMetricService implements Zoo
metrics.putMetric(ZOOKEEPER_METRIC_AVG_REQUEST_LATENCY, cmdData.getZkAvgLatency()); metrics.putMetric(ZOOKEEPER_METRIC_AVG_REQUEST_LATENCY, cmdData.getZkAvgLatency());
metrics.putMetric(ZOOKEEPER_METRIC_MIN_REQUEST_LATENCY, cmdData.getZkMinLatency()); metrics.putMetric(ZOOKEEPER_METRIC_MIN_REQUEST_LATENCY, cmdData.getZkMinLatency());
metrics.putMetric(ZOOKEEPER_METRIC_MAX_REQUEST_LATENCY, cmdData.getZkMaxLatency()); metrics.putMetric(ZOOKEEPER_METRIC_MAX_REQUEST_LATENCY, cmdData.getZkMaxLatency());
metrics.putMetric(ZOOKEEPER_METRIC_OUTSTANDING_REQUESTS, cmdData.getZkOutstandingRequests().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_OUTSTANDING_REQUESTS, cmdData.getZkOutstandingRequests());
metrics.putMetric(ZOOKEEPER_METRIC_NODE_COUNT, cmdData.getZkZnodeCount().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_NODE_COUNT, cmdData.getZkZnodeCount());
metrics.putMetric(ZOOKEEPER_METRIC_WATCH_COUNT, cmdData.getZkWatchCount().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_WATCH_COUNT, cmdData.getZkWatchCount());
metrics.putMetric(ZOOKEEPER_METRIC_NUM_ALIVE_CONNECTIONS, cmdData.getZkNumAliveConnections().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_NUM_ALIVE_CONNECTIONS, cmdData.getZkNumAliveConnections());
metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_RECEIVED, cmdData.getZkPacketsReceived().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_RECEIVED, cmdData.getZkPacketsReceived());
metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_SENT, cmdData.getZkPacketsSent().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_PACKETS_SENT, cmdData.getZkPacketsSent());
metrics.putMetric(ZOOKEEPER_METRIC_EPHEMERALS_COUNT, cmdData.getZkEphemeralsCount().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_EPHEMERALS_COUNT, cmdData.getZkEphemeralsCount());
metrics.putMetric(ZOOKEEPER_METRIC_APPROXIMATE_DATA_SIZE, cmdData.getZkApproximateDataSize().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_APPROXIMATE_DATA_SIZE, cmdData.getZkApproximateDataSize());
metrics.putMetric(ZOOKEEPER_METRIC_OPEN_FILE_DESCRIPTOR_COUNT, cmdData.getZkOpenFileDescriptorCount().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_OPEN_FILE_DESCRIPTOR_COUNT, cmdData.getZkOpenFileDescriptorCount());
metrics.putMetric(ZOOKEEPER_METRIC_MAX_FILE_DESCRIPTOR_COUNT, cmdData.getZkMaxFileDescriptorCount().floatValue()); metrics.putMetric(ZOOKEEPER_METRIC_MAX_FILE_DESCRIPTOR_COUNT, cmdData.getZkMaxFileDescriptorCount());
return Result.buildSuc(metrics); return Result.buildSuc(metrics);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册