Configure client monitoring for Confluent Platform with USM
With Unified Stream Manager (USM), you can enable client monitoring to view producer and consumer client metrics for your Confluent Platform clusters in the Confluent Cloud Console. Client monitoring uses the KIP-714 client metrics push mechanism, where clients push observability data directly to the Kafka brokers. The USM Agent collects this observability data and visualizes it in Confluent Cloud alongside your other cluster metrics.
Requirements
Before enabling client monitoring, ensure your environment meets the following requirements:
Confluent Platform version: Confluent Platform 7.9.6 or later within the 7.9.x series, or Confluent Platform 8.1.2 or later.
Cluster mode: Your cluster must run in KRaft mode. ZooKeeper-based clusters are not supported.
Client versions: Clients must use a supported version to push metrics to the brokers:
Java client 3.7.2 or later
C/C++ client, librdkafka, 2.6 or later
Cluster registration: Register your cluster with Confluent Cloud before enabling client monitoring.
Python clients: Python clients do not support all standard KIP-714 metrics. Most metric columns appear blank for Python clients in the Confluent Cloud Console.
Configure client monitoring
Enable client monitoring on your Confluent Platform cluster before clients can push metrics to Confluent Cloud. Use Confluent for Kubernetes (CFK), Confluent Ansible, or manual broker configuration to set the required broker settings.
Use Confluent for Kubernetes (CFK)
Add
clientMetricsEnabled: trueto theusmAgentClientdependency in both yourKafkaandKRaftControllerresource specs:spec: dependencies: usmAgentClient: url: http://usm-agent.<namespace>.svc.cluster.local:10000 clientMetricsEnabled: true
Apply the updated configuration. Client metrics cannot be enabled for both Control Center and USM simultaneously.
kubectl apply -f confluent-platform.yaml
Use Confluent Ansible
Set the following in your inventory variables:
usm_client_metrics_enabled: true
Note
usm_client_metrics_enabledapplies only to Kafka broker and KRaft controller hosts.You cannot enable client metrics for both Control Center and USM simultaneously.
Configure client monitoring manually
Add the following properties to the server.properties file for each Kafka broker and KRaft controller, then restart the components:
confluent.telemetry.external.client.metrics.usm.push.enabled=true
confluent.telemetry.external.client.metrics.push.enabled=true
confluent.telemetry.external.client.metrics.delta.temporality=true
confluent.telemetry.external.client.metrics.subscription.interval.ms.list=60000
confluent.telemetry.external.client.metrics.subscription.metrics.list=org.apache.kafka.consumer.fetch.manager.fetch.latency.avg,org.apache.kafka.consumer.connection.creation.total,org.apache.kafka.consumer.fetch.manager.fetch.total,org.apache.kafka.consumer.fetch.manager.bytes.consumed.rate,org.apache.kafka.consumer.request.total,org.apache.kafka.producer.bufferpool.wait.ratio,org.apache.kafka.producer.record.queue.time.avg,org.apache.kafka.producer.request.latency.avg,org.apache.kafka.producer.produce.throttle.time.avg,org.apache.kafka.producer.connection.creation.total,org.apache.kafka.producer.request.total,org.apache.kafka.producer.topic.byte.rate,org.apache.kafka.stream.client.state,org.apache.kafka.stream.thread.thread.state,org.apache.kafka.stream.state.size.all.mem.tables,org.apache.kafka.stream.state.estimate.num.keys,org.apache.kafka.stream.state.block.cache.usage,org.apache.kafka.stream.processor.node.record.e2e.latency.min,org.apache.kafka.stream.processor.node.record.e2e.latency.max,org.apache.kafka.stream.processor.node.record.e2e.latency.avg,org.apache.kafka.stream.thread.poll.ratio,org.apache.kafka.stream.thread.commit.ratio,org.apache.kafka.stream.thread.process.ratio,org.apache.kafka.stream.thread.punctuate.ratio,org.apache.kafka.stream.thread.process.records.avg
Note
Do not enable manual client metrics configuration alongside Control Center. Doing so causes a delta temporality conflict that results in inaccurate metrics.
Metrics collected by client monitoring
The confluent.telemetry.external.client.metrics.subscription.metrics.list property defines which client metrics the brokers collect. The following metrics are grouped by client type. To collect a different set, edit the comma-separated list.
Client | Metric | Description |
|---|---|---|
Consumer |
| Average time, in milliseconds, to complete a fetch request. |
Consumer |
| Total number of broker connections the consumer created. |
Consumer |
| Total number of fetch requests the consumer sent. |
Consumer |
| Average number of bytes consumed per second. |
Consumer |
| Total number of requests the consumer sent. |
Producer |
| Fraction of time the producer waits for buffer pool space. |
Producer |
| Average time, in milliseconds, a record waits in the send buffer. |
Producer |
| Average request latency, in milliseconds. |
Producer |
| Average time, in milliseconds, a produce request is throttled by the broker. |
Producer |
| Total number of broker connections the producer created. |
Producer |
| Total number of requests the producer sent. |
Producer |
| Average number of bytes sent per second for a topic. |
Streams |
| Current state of the Kafka Streams client. |
Streams |
| Current state of a stream thread. |
Streams |
| Total size, in bytes, of all in-memory state store tables. |
Streams |
| Estimated number of keys in the state store. |
Streams |
| Block cache memory, in bytes, the state store uses. |
Streams |
| Minimum end-to-end latency of a record at a processor node. |
Streams |
| Maximum end-to-end latency of a record at a processor node. |
Streams |
| Average end-to-end latency of a record at a processor node. |
Streams |
| Fraction of time the stream thread spends polling records. |
Streams |
| Fraction of time the stream thread spends committing. |
Streams |
| Fraction of time the stream thread spends processing. |
Streams |
| Fraction of time the stream thread spends on punctuation. |
Streams |
| Average number of records processed per call. |
View client metrics in Confluent Cloud
To view producer and consumer metrics, go to the Clients page in the Confluent Cloud Console for your registered Confluent Platform cluster. For details, see Monitor Confluent Platform clients.