
Status
Current state: "Accepted"
Discussion thread: here
Vote thread: here
JIRA: 

Motivation
Kafka metrics have traditionally followed a consistent naming convention using the kafka.<COMPONENT> format. However, some inconsistencies were unintentionally introduced during recent refactorings:
- The metrics under org.apache.kafka.server:type=AssignmentsManager were originally named using the kafka.<COMPONENT> format. This changed unexpectedly when classes were moved from the kafka.server package to org.apache.kafka.server as part of this commit.
- Similarly, the org.apache.kafka.storage.internals.log:type=RemoteStorageThreadPool metric was initially intended to follow the same convention. However, an incorrect metric name was introduced during initialization in a later patch.
These changes went unnoticed, and subsequent users began using the new org.apache.kafka.<COMPONENT> pattern, diverging from the established convention.
This KIP proposes to standardize Kafka metric naming by reverting the following metrics to the correct kafka.<COMPONENT> format to ensure consistency across the system:
org.apache.kafka.server:type=AssignmentsManager → kafka.server:type=AssignmentsManager
org.apache.kafka.storage.internals.log:type=RemoteStorageThreadPool → kafka.log.remote:type=RemoteStorageThreadPool
This change will align these metrics with the broader Kafka metrics ecosystem and avoid confusion for users and tooling that rely on consistent naming.
Public Interface
Proposed Changes
Introduce new metrics, consistent with other Kafka metrics.
This change will impact external monitoring systems that rely on the old metric name; corresponding updates will be required.
Deprecate the following metrics
- org.apache.kafka.storage.internals.log:type=RemoteStorageThreadPool.RemoteLogReaderTaskQueueSize
- org.apache.kafka.storage.internals.log:type=RemoteStorageThreadPool.RemoteLogReaderAvgIdlePercent
- org.apache.kafka.server:type=AssignmentsManager.QueuedReplicaToDirAssignments
Introduce following new metric:
- kafka.log.remote:type=RemoteStorageThreadPool.RemoteLogReaderAvgIdlePercent
- kafka.log.remote:type=RemoteStorageThreadPool.RemoteLogReaderTaskQueueSize
- kafka.server:type=AssignmentsManager.QueuedReplicaToDirAssignments
This change will impact external monitoring systems that rely on the old metric name; corresponding updates will be required.
Due to
Compatibility, Deprecation, and Migration Plan
- We will add a deprecated annotation on following constant
- `RemoteStorageMetrics#REMOTE_LOG_READER_TASK_QUEUE_SIZE_METRIC`
- `RemoteStorageMetrics#REMOTE_LOG_READER_AVG_IDLE_PERCENT_METRIC`
- `AssignmentsManager#QUEUED_REPLICA_TO_DIR_ASSIGNMENTS_METRIC`
- Update the Kafka documentation to note MBean will be replaced
- `org.apache.kafka.storage.internals.log:type=RemoteStorageThreadPool.RemoteLogReaderTaskQueueSize`
- `org.apache.kafka.storage.internals.log:type=RemoteStorageThreadPool.RemoteLogReaderAvgIdlePercent`
- `org.apache.kafka.server:type=AssignmentsManager.QueuedReplicaToDirAssignments`
- Register folowing new metrics
- `kafka.log.remote:type=RemoteStorageThreadPool.RemoteLogReaderTaskQueueSize`
- `kafka.log.remote:type=RemoteStorageThreadPool.RemoteLogReaderAvgIdlePercent`
- `kafka.server:type=AssignmentsManager.QueuedReplicaToDirAssignments`
- Delete following all usage in code base at the Kafka 5.0
- `RemoteStorageMetrics#REMOTE_LOG_READER_TASK_QUEUE_SIZE_METRIC`
- `RemoteStorageMetrics#REMOTE_LOG_READER_AVG_IDLE_PERCENT_METRIC`
- `AssignmentsManager#QUEUED_REPLICA_TO_DIR_ASSIGNMENTS_METRIC`
Test Plan
- Add new tests to verify the new metric is correctly registered and behaves as expected.
- Ensure backward compatibility by verifying deprecated metric behavior until removal.
Rejected Alternatives
n/a