Browse Source

add isr count and out of sync replicas count

Zhenya Taran 5 years ago
parent
commit
01c2c8b20b

+ 1 - 1
kafka-ui-api/src/main/java/com/provectus/kafka/ui/cluster/model/KafkaCluster.java

@@ -38,7 +38,7 @@ public class KafkaCluster {
     Exception lastKafkaException;
     Exception lastZookeeperException;
 
-    public TopicDetails getTopicDetails(String key) {
+    public TopicDetails getOrCreateTopicDetails(String key) {
         var topicDetails = topicDetailsMap.get(key);
         if(topicDetails == null) {
             topicDetailsMap.putIfAbsent(key, new TopicDetails());

+ 1 - 1
kafka-ui-api/src/main/java/com/provectus/kafka/ui/cluster/service/ClusterService.java

@@ -44,7 +44,7 @@ public class ClusterService {
     public Mono<ResponseEntity<TopicDetails>> getTopicDetails(String clusterId, String topicName) {
         KafkaCluster cluster = clustersStorage.getClusterById(clusterId);
         if (cluster == null) return null;
-        return Mono.just(ResponseEntity.ok(cluster.getTopicDetails(topicName)));
+        return Mono.just(ResponseEntity.ok(cluster.getOrCreateTopicDetails(topicName)));
     }
 
     public Mono<ResponseEntity<Flux<TopicConfig>>> getTopicConfigs(String clusterId, String topicName) {

+ 9 - 2
kafka-ui-api/src/main/java/com/provectus/kafka/ui/kafka/KafkaService.java

@@ -134,6 +134,8 @@ public class KafkaService {
         kafkaCluster.getBrokersMetrics().setOnlinePartitionCount(0);
         kafkaCluster.getBrokersMetrics().setOfflinePartitionCount(0);
         kafkaCluster.getBrokersMetrics().setUnderReplicatedPartitionCount(0);
+        kafkaCluster.getBrokersMetrics().setInSyncReplicasCount(0);
+        kafkaCluster.getBrokersMetrics().setOutOfSyncReplicasCount(0);
     }
 
     private Topic collectTopicData(KafkaCluster kafkaCluster, TopicDescription topicDescription) {
@@ -177,12 +179,17 @@ public class KafkaService {
                 kafkaCluster.getBrokersMetrics().setOfflinePartitionCount(kafkaCluster.getBrokersMetrics().getOfflinePartitionCount() + 1);
             }
         }
+
         kafkaCluster.getCluster().setOnlinePartitionCount(kafkaCluster.getBrokersMetrics().getOnlinePartitionCount());
         kafkaCluster.getBrokersMetrics().setUnderReplicatedPartitionCount(
                 kafkaCluster.getBrokersMetrics().getUnderReplicatedPartitionCount() + urpCount);
-        topic.setPartitions(partitions);
+        kafkaCluster.getBrokersMetrics().setInSyncReplicasCount(
+                kafkaCluster.getBrokersMetrics().getInSyncReplicasCount() + inSyncReplicasCount);
+        kafkaCluster.getBrokersMetrics().setOutOfSyncReplicasCount(
+                kafkaCluster.getBrokersMetrics().getOutOfSyncReplicasCount() + (replicasCount - inSyncReplicasCount));
 
-        TopicDetails topicDetails = kafkaCluster.getTopicDetails(topicDescription.name());
+        topic.setPartitions(partitions);
+        TopicDetails topicDetails = kafkaCluster.getOrCreateTopicDetails(topicDescription.name());
         topicDetails.setReplicas(replicasCount);
         topicDetails.setPartitionCount(topicDescription.partitions().size());
         topicDetails.setInSyncReplicas(inSyncReplicasCount);

+ 2 - 20
kafka-ui-contract/src/main/resources/swagger/kafka-ui-api.yaml

@@ -206,10 +206,6 @@ components:
     BrokersMetrics:
       type: object
       properties:
-        clusterId:
-          type: string
-        bytesInPerSec:
-          type: integer
         brokerCount:
           type: integer
         zooKeeperStatus:
@@ -218,29 +214,15 @@ components:
           type: integer
         uncleanLeaderElectionCount:
           type: integer
-        networkPoolUsage:
-          type: number
-        requestPoolUsage:
-          type: number
         onlinePartitionCount:
           type: integer
         underReplicatedPartitionCount:
           type: integer
         offlinePartitionCount:
           type: integer
-        diskUsage:
-          $ref: '#/components/schemas/DiskUsage'
-        diskUsageDistribution:
-          type: string
-      required:
-        - id
-
-    DiskUsage:
-      type: object
-      properties:
-        brokerId:
+        inSyncReplicasCount:
           type: integer
-        segmentSize:
+        outOfSyncReplicasCount:
           type: integer
 
     Topic: