Skip to content

AxonOps — AI-Native Control Plane for Open Source Data Platforms

AxonOps Kafka Overview Dashboard Metrics Mapping

This document maps the metrics used in the AxonOps Kafka Overview dashboard.

The Kafka Overview dashboard provides a comprehensive view of Kafka cluster health, including controller status, partition health, replication status, network throughput, and consumer group coordination. It serves as the primary dashboard for monitoring overall Kafka cluster performance and health.

Dashboard MetricDescriptionAttributes
kaf_KafkaController_ActiveControllerCountNumber of active controllers in the cluster (should be 1)rack, host_id
kaf_KafkaController_OfflinePartitionsCountNumber of partitions without an active leaderdc, rack, host_id
kaf_KafkaController_PreferredReplicaImbalanceCountNumber of partitions where preferred replica is not the leaderdc, rack, host_id
kaf_ControllerStats_UncleanLeaderElectionsPerSecRate of unclean leader electionsfunction (MeanRate), rack, host_id
Dashboard MetricDescriptionAttributes
kaf_ReplicaManager_UnderMinIsrPartitionCountPartitions with fewer than minimum in-sync replicasdc, rack, host_id
kaf_ReplicaManager_UnderReplicatedPartitionsNumber of under-replicated partitionsdc, rack, host_id
kaf_ReplicaManager_PartitionCountTotal number of partitions on the brokerdc, rack, host_id
kaf_ReplicaManager_LeaderCountNumber of partitions for which this broker is the leaderrack, host_id
kaf_ReplicaManager_IsrShrinksPerSecRate of ISR shrinksfunction (MeanRate), rack, host_id
kaf_ReplicaManager_IsrExpandsPerSecRate of ISR expansionsfunction (MeanRate), rack, host_id
Dashboard MetricDescriptionAttributes
kaf_BrokerTopicMetrics_BytesInPerSecIncoming byte rateaxonfunction (rate), rack, host_id, topic, node_type
kaf_BrokerTopicMetrics_BytesOutPerSecOutgoing byte rateaxonfunction (rate), rack, host_id, topic, node_type
kaf_BrokerTopicMetrics_MessagesInPerSecIncoming message rateaxonfunction (rate), rack, host_id, topic
Dashboard MetricDescriptionAttributes
kaf_socket_server_metrics_Socket server connection metricsfunction (connection_count), rack, host_id
kaf_KafkaRequestHandlerPool_RequestHandlerAvgIdlePercentRequest handler idle percentagefunction (OneMinuteRate), rack, host_id
Dashboard MetricDescriptionAttributes
kaf_GroupMetadataManager_NumGroupsTotal number of consumer groupsrack, host_id
kaf_GroupMetadataManager_NumGroupsStableNumber of stable consumer groupsrack, host_id
kaf_GroupMetadataManager_NumGroupsPreparingRebalanceGroups preparing to rebalancerack, host_id
kaf_GroupMetadataManager_NumGroupsDeadNumber of dead consumer groupsrack, host_id
kaf_GroupMetadataManager_NumGroupsCompletingRebalanceGroups completing rebalancerack, host_id
kaf_GroupMetadataManager_NumGroupsEmptyNumber of empty consumer groupsrack, host_id
Dashboard MetricDescriptionAttributes
kaf_RequestMetrics_RequestsPerSecRequest rate per secondaxonfunction (rate), function (Count), request, rack, host_id
kaf_RequestMetrics_TotalTimeMsTotal request processing timerequest (Fetch), function (percentiles), rack, host_id
// Active Controllers (should be 1)
sum(kaf_KafkaController_ActiveControllerCount{host_id!=""})
// Under min insync replicas partitions
kaf_ReplicaManager_UnderMinIsrPartitionCount{dc=~'$dc',rack=~'$rack',host_id=~'$host_id'}
// Under Replicated Partitions
kaf_ReplicaManager_UnderReplicatedPartitions{dc=~'$dc',rack=~'$rack',host_id=~'$host_id'}
// Offline Partitions
kaf_KafkaController_OfflinePartitionsCount{dc=~'$dc',rack=~'$rack',host_id=~'$host_id'}
// Cluster network throughput - Bytes in
sum(kaf_BrokerTopicMetrics_BytesInPerSec{axonfunction='rate',rack=~'$rack',host_id=~'$host_id', topic!='',node_type='$node_type'})
// Cluster network throughput - Bytes out
sum(kaf_BrokerTopicMetrics_BytesOutPerSec{axonfunction='rate',rack=~'$rack',host_id=~'$host_id', topic!='',node_type='$node_type'})
// Incoming Messages
sum(kaf_BrokerTopicMetrics_MessagesInPerSec{axonfunction='rate',rack=~'$rack',host_id=~'$host_id', topic=''})
// Consumer groups per coordinator
kaf_GroupMetadataManager_NumGroups{rack=~'$rack',host_id=~'$host_id'}
// Consumer groups by state
sum(kaf_GroupMetadataManager_NumGroupsStable{rack=~'$rack',host_id=~'$host_id'})
sum(kaf_GroupMetadataManager_NumGroupsPreparingRebalance{rack=~'$rack',host_id=~'$host_id'})
sum(kaf_GroupMetadataManager_NumGroupsDead{rack=~'$rack',host_id=~'$host_id'})
// Total Request Per Sec
sum(kaf_RequestMetrics_RequestsPerSec{axonfunction='rate',function='Count',rack=~'$rack',host_id=~'$host_id'}) by (host_id)
// Metadata Request Per Sec
sum(kaf_RequestMetrics_RequestsPerSec{axonfunction='rate',function='Count',request='Metadata',rack=~'$rack',host_id=~'$host_id'}) by (host_id)
  • Active Controllers - Counter showing cluster controller status

  • Brokers Online - Number of active brokers

  • Online Partitions - Total partition count

  • Offline Partitions - Partitions without leaders

  • Preferred Replica Imbalance - Leader distribution health

  • Under Replicated Partitions - Replication lag indicator

  • Connections - Total client connections

  • Under min insync replicas partitions - Critical replication status

  • Unclean Leader Election Rate - Data loss risk indicator

  • Cluster network throughput - Overall I/O performance

  • Incoming Messages - Message ingestion rate

  • Cluster Connections - Connection trend

  • Broker Count - Total brokers in cluster

  • Active Controller - Controller assignment over time

  • Request Handler Avg Idle Percent - Request handler capacity

  • Under Replicated Partitions - Replication health trends

  • Unclean Leader Elections Per Sec - Data integrity monitoring

  • In-sync replicas Shrinks vs Expands - ISR stability

  • Consumer groups number per coordinator - Group distribution

  • No consumer groups per state - Group lifecycle monitoring

  • Total Request Per Sec - Overall request load

  • Metadata Request Per Sec - Metadata request patterns

  • rack - Filter by rack location

  • node (host_id) - Filter by specific Kafka broker

  • topic - Filter by Kafka topic

  • node type - Filter by node type

  • percentile - Select latency percentile (for request metrics)

  • groupBy - Dynamic grouping (topic, host_id)

  • Active Controllers: Must be exactly 1. More or less indicates cluster issues

  • Offline Partitions: Should be 0. Any value > 0 means data unavailability

  • Under Replicated Partitions: Should be 0. Indicates replication lag

  • Under Min ISR: Critical - indicates potential data loss risk

  • Network Throughput: Monitor for capacity planning

  • Request Handler Idle %: Lower values indicate high load

  • ISR Shrinks/Expands: Frequent changes indicate instability

Group States:

  • Stable: Normal operating state
  • Rebalancing: Temporary during membership changes
  • Dead: Groups that need cleanup
  • Empty: Groups without active members

Set Alerts for:

  • Active Controllers ≠ 1
  • Offline Partitions > 0
  • Under Replicated Partitions > 0
  • Unclean Leader Elections > 0

Regular Checks:

  • Network throughput trends
  • Consumer group stability
  • Request rate patterns

No Active Controller:

  • Check ZooKeeper connectivity
  • Review controller logs
  • Verify network partitions

High Under-Replicated Partitions:

  • Check broker health
  • Verify network bandwidth
  • Review replica lag settings

Consumer Group Issues:

  • Monitor rebalance frequency
  • Check consumer lag
  • Verify coordinator load
  • Most metrics use low resolution for efficiency
  • Rate metrics use axonfunction='rate' for accurate per-second calculations
  • Percentile metrics available for latency measurements
  • Bytes: Network throughput (bytes/sec)

  • short: Counts and rates

  • percent: Utilization metrics (0-100)

  • rps: Requests per second

  • Empty topic filter (topic='') shows aggregate metrics
  • host_id!="" ensures only active brokers are counted
  • The node_type filter allows monitoring mixed clusters
  • ISR metrics use MeanRate for smoothed values