@Override
    public void init(List<KafkaMetric> metrics) {
        /*
         metrics collector may not have been initialized (e.g. invalid context labels)
         in which case metrics collection is disabled
        */
        if (kafkaMetricsCollector != null) {
            kafkaMetricsCollector.init(metrics);
        }
    }
The implementation of the {@link MetricsReporter} for client telemetry which manages the life-cycle
of the client telemetry collection process. The client telemetry reporter is responsible for
collecting the client telemetry data and sending it to the broker.
<p>

The client telemetry reporter is configured with a {@link ClientTelemetrySender} which is
responsible for sending the client telemetry data to the broker. The client telemetry reporter
will attempt to fetch the telemetry subscription information from the broker and send the
telemetry data to the broker based on the subscription information i.e. push interval, temporality,
compression type, etc.
<p>

The full life-cycle of the metric collection process is defined by a state machine in
{@link ClientTelemetryState}. Each state is associated with a different set of operations.
For example, the client telemetry reporter will attempt to fetch the telemetry subscription
from the broker when in the {@link ClientTelemetryState#SUBSCRIPTION_NEEDED} state.
If the push operation fails, the client telemetry reporter will attempt to re-fetch the
subscription information by setting the state back to {@link ClientTelemetryState#SUBSCRIPTION_NEEDED}.
<p>

In an unlikely scenario, if a bad state transition is detected, an
{@link IllegalStateException} will be thrown.
<p>

The state transition follows the following steps in order:
<ol>
    <li>{@link ClientTelemetryState#SUBSCRIPTION_NEEDED}</li>
    <li>{@link ClientTelemetryState#SUBSCRIPTION_IN_PROGRESS}</li>
    <li>{@link ClientTelemetryState#PUSH_NEEDED}</li>
    <li>{@link ClientTelemetryState#PUSH_IN_PROGRESS}</li>
    <li>{@link ClientTelemetryState#TERMINATING_PUSH_NEEDED}</li>
    <li>{@link ClientTelemetryState#TERMINATING_PUSH_IN_PROGRESS}</li>
    <li>{@link ClientTelemetryState#TERMINATED}</li>
</ol>
<p>

For more detail in state transition, see {@link ClientTelemetryState#validateTransition}.
clients/src/main/java/org/apache/kafka/common/telemetry/internals/ClientTelemetryReporter.java