Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The behavior of which nodes expose controller metrics will be different in KRaft clusters than the behavior when using Kafka with Zookeeper. KRaft nodes will only expose the controller metrics if the process has the "controller" role. If a KRaft node has the "controller" role but is not the active controller, it will expose 0 for all controller metrics since the process is eligible to become the active controller. This is consistent with behavior for controller-eligible nodes in a Kafka cluster using Zookeeperalso expose the metric. This can help the user see if one of the standby controllers is misbehaving. A misbehaving node's metric could be lagging behind relative to the other controllers in the quorum since controller metrics are calculated as metadata records are replayed.

All metrics with the following MBean prefix will be exposed on all controllers kafka.controller:type=KafkaController.

Proposed Changes

Pre-Kraft brokers expose 0 for controller metrics unless they are the active controller. KRaft nodes with only the "broker" role should not since they are not controller eligible.

...

  • Certain tools that expect brokers to expose controller metrics may need to be extended for KRaft to no longer expect brokers to expose controller metrics.
  • In Kafka 3.0, standby controllers expose non-zero controller metrics. This KIP proposes changing this behavior which is allowed since KRaft is still in preview.

Rejected Alternatives

  • Expose 0 0 for controller metrics on KRaft brokers for controller metrics.
    • There is non-negligible performance impact associated with doing this, so it would be best to change the behavior of controller metrics moving forward instead.
  • Expose 0 for controller metrics on KRaft standby controllers. 
    • Exposing the controller metrics on both the active controller and the standby controllers can help the user see if one of the standby controllers is misbehaving.