Current state: "Under Discussion"
Discussion thread: here
Vote thread: here
JIRA: here
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Kafka currently emits metrics for producers and consumers with different naming conventions in the topic metrics. Specifically, Kafka consumer metrics replace periods (.) in topic names with underscores (_), while Kafka producer metrics retain the period separator. This inconsistency can lead to confusion, misinterpretation of metric names, and additional overhead for users managing Kafka metrics.
This KIP aims to unify the naming conventions for Kafka consumer metrics by following the Kafka producer metrics nomenclature, preserving the original format of topic names (including periods).
The current inconsistency in metric naming across Kafka consumers and producers presents challenges for users monitoring and managing Kafka metrics. For example:
Currently, when a Kafka consumer metric is emitted, any periods (.) in the topic name are replaced with underscores (_). This behavior diverges from the Kafka producer metrics, which retain periods in topic names.
The initial replacement of periods (.) with underscores (_) in Kafka consumer metrics appears to have been introduced to align with Graphite metrics hierarichal model, PR comment. However, it seems redundant as the KafkaMetricsGroup class already handles this transformation to support Graphite metrics and reporters that rely on the scope field of Yammer metrics. The scope field of Yammer MetricName is populated from metric tags field, with periods (.) replaced by underscores (_). Since this transformation already occurs within the KafkaMetricsGroup class, it's unnecessary to apply it elsewhere, especially in the client, which doesn't support Yammer metrics.
Kafka's JMX and Telemetry reporters use MBean names to output metrics. Unlike Yammer metrics, MBean names don't utilize the scope field and instead use unmodified tags field. The unnecessary transformation of topic names in Kafka consumer's Fetcher metrics leads to the discrepancy compared to Kafka producer metrics.
Public Interfaces
The following Kafka consumer metrics will be impacted by this change:
consumer-fetch-manager-metricsTopic:records-consumed-totalfetch-size-avgrecords-per-request-avgTopic-Partition:records-lag-maxrecords-lagrecords-lag-avgpreferred-read-replicarecords-lead-minrecords-lead-avgrecords-leadWith this KIP, these metrics will also emit topic names without any modification to periods, matching the producer naming scheme. New consumer-fetch-manager-metrics will not have replaced dot (.) in topic names. However for backward compatibility, the period replaced metrics will also be emitted and shall be deprecated in future Kafka version (5.0)
Add additional metric without periods replacement in Consumer Metrics Topic Names:
Note: A drawback of the approach is that metrics for topics containing periods will be emitted twice: once with the actual topic name and once with periods replaced. Users must monitor either metric and may need to discard duplicate metrics for accurate reporting. But this is necessary to maintain backward compatibility and prevent disruption to existing user reporting.
Example:
Kafka 4.x:
topic_a_b will continue to be emitted, but it will be marked as deprecated.topic.a.b and same name has been introduced. Users should transition to this new metric.topic_c_d will continue to be emitted without any changes.Kafka 5.0:
The period replacement policy will be completely removed.
To ease the transition for users who rely on the existing underscore-based consumer metric naming: