Current state: Under Discussion
Discussion thread: here
JIRA: here
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Kafka Streams offers a comprehensive set of metrics for analyzing an application. Although it's possible to deduce the health status of a Kafka Streams application from these metrics, operators require explicit status information metrics for better insights into the application's health. In particular, operators will want to know the current state (CREATED, STARTING, PARTITIONS_REVOKED, PARTITIONS_ASSIGNED, RUNNING, PENDING_SHUTDOWN, DEAD) of each StreamThread in the client instance, the state (CREATED, REBALANCING, RUNNING, PENDING_SHUTDOWN, NOT_RUNNING, PENDING_ERROR, ERROR) of the client instance itself.
Additionally, Kafka Streams provides several metrics with fine-grained details. Since recording all these metrics would result in a performance hit, Kafka Streams does not record all metrics out of the box. There are different recording levels: info , debug , and trace set by the configuration metrics.recording.level . To avoid operator confusion or frustration regarding what metrics to expect, being able to observe the current recording level quickly is essential.
This KIP introduces new metrics to support Kafka Streams operators in quickly assessing an application's current health.
Each added metric will be on the client-level and have the following tag:
type = client-metricsThe metrics for thread state will also contain the following tag:
thread-id=[thread-id] | Name | Recording Level | Metric Type | Description |
|---|---|---|---|
| client-state | INFO | Gauge | The current state of the Kafka Streams instance |
| thread-state | INFO | Gauge | The current state of the StreamThread |
| recording-level | INFO | Gauge | The level of metrics recording |
These new metrics will be available at the INFO level. Both the client-state and thread-state will be updated to reflect the changes in the client or thread state. The recording-level is determined on startup and contains the configured metrics recording level.
Existing metrics tests will be updated to support these new metrics.
N/A