Status

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).

Motivation

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.

Context

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

Affected Metrics

The following Kafka consumer metrics will be impacted by this change:

With 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. They are now deprecated and will be removed in a future major Kafka version (5.0)."

Proposed Changes

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:

Kafka 5.0:

The period replacement policy will be completely removed.

Compatibility, Deprecation, and Migration Plan

To ease the transition for users who rely on the existing underscore-based consumer metric naming:

Test Plan

Rejected Alternatives