Class StreamsMetricsImpl
- java.lang.Object
-
- org.apache.kafka.streams.processor.internals.metrics.StreamsMetricsImpl
-
- All Implemented Interfaces:
StreamsMetrics
public class StreamsMetricsImpl extends java.lang.Object implements StreamsMetrics
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
PROCESSOR_NODE_ID_TAG
static java.lang.String
PROCESSOR_NODE_METRICS_GROUP
-
Constructor Summary
Constructors Constructor Description StreamsMetricsImpl(org.apache.kafka.common.metrics.Metrics metrics, java.lang.String threadName)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
addAvgMaxLatency(org.apache.kafka.common.metrics.Sensor sensor, java.lang.String group, java.util.Map<java.lang.String,java.lang.String> tags, java.lang.String operation)
static void
addInvocationRateAndCount(org.apache.kafka.common.metrics.Sensor sensor, java.lang.String group, java.util.Map<java.lang.String,java.lang.String> tags, java.lang.String operation)
org.apache.kafka.common.metrics.Sensor
addLatencyAndThroughputSensor(java.lang.String scopeName, java.lang.String entityName, java.lang.String operationName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, java.lang.String... tags)
Add a latency and throughput sensor for a specific operation, which will include the following sensors: average latency max latency throughput (num.operations / time unit) Also create a parent sensor with the same metrics that aggregates all entities with the same operation under the same scope if it has not been created.org.apache.kafka.common.metrics.Sensor
addSensor(java.lang.String name, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel)
Generic method to create a sensor.org.apache.kafka.common.metrics.Sensor
addSensor(java.lang.String name, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
Generic method to create a sensor with parent sensors.org.apache.kafka.common.metrics.Sensor
addThroughputSensor(java.lang.String scopeName, java.lang.String entityName, java.lang.String operationName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, java.lang.String... tags)
Add a throughput sensor for a specific operation: throughput (num.operations / time unit) Also create a parent sensor with the same metrics that aggregates all entities with the same operation under the same scope if it has not been created.org.apache.kafka.common.metrics.Sensor
cacheLevelSensor(java.lang.String taskName, java.lang.String cacheName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
java.util.Map<org.apache.kafka.common.MetricName,? extends org.apache.kafka.common.Metric>
metrics()
Get read-only handle on global metrics registry.org.apache.kafka.common.metrics.Sensor
nodeLevelSensor(java.lang.String taskName, java.lang.String processorNodeName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
void
recordLatency(org.apache.kafka.common.metrics.Sensor sensor, long startNs, long endNs)
Record the given latency value of the sensor.void
recordThroughput(org.apache.kafka.common.metrics.Sensor sensor, long value)
Record the throughput value of a sensor.void
removeAllCacheLevelSensors(java.lang.String taskName, java.lang.String cacheName)
void
removeAllNodeLevelSensors(java.lang.String taskName, java.lang.String processorNodeName)
void
removeAllStoreLevelSensors(java.lang.String taskName, java.lang.String storeName)
void
removeAllTaskLevelSensors(java.lang.String taskName)
void
removeAllThreadLevelSensors()
void
removeSensor(org.apache.kafka.common.metrics.Sensor sensor)
Deletes a sensor and its parents, if anyorg.apache.kafka.common.metrics.Sensor
skippedRecordsSensor()
org.apache.kafka.common.metrics.Sensor
storeLevelSensor(java.lang.String taskName, java.lang.String storeName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
java.util.Map<java.lang.String,java.lang.String>
tagMap(java.lang.String... tags)
org.apache.kafka.common.metrics.Sensor
taskLevelSensor(java.lang.String taskName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
org.apache.kafka.common.metrics.Sensor
threadLevelSensor(java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
-
-
-
Field Detail
-
PROCESSOR_NODE_METRICS_GROUP
public static final java.lang.String PROCESSOR_NODE_METRICS_GROUP
- See Also:
- Constant Field Values
-
PROCESSOR_NODE_ID_TAG
public static final java.lang.String PROCESSOR_NODE_ID_TAG
- See Also:
- Constant Field Values
-
-
Method Detail
-
threadLevelSensor
public final org.apache.kafka.common.metrics.Sensor threadLevelSensor(java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
-
removeAllThreadLevelSensors
public final void removeAllThreadLevelSensors()
-
taskLevelSensor
public final org.apache.kafka.common.metrics.Sensor taskLevelSensor(java.lang.String taskName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
-
removeAllTaskLevelSensors
public final void removeAllTaskLevelSensors(java.lang.String taskName)
-
nodeLevelSensor
public org.apache.kafka.common.metrics.Sensor nodeLevelSensor(java.lang.String taskName, java.lang.String processorNodeName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
-
removeAllNodeLevelSensors
public final void removeAllNodeLevelSensors(java.lang.String taskName, java.lang.String processorNodeName)
-
cacheLevelSensor
public final org.apache.kafka.common.metrics.Sensor cacheLevelSensor(java.lang.String taskName, java.lang.String cacheName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
-
removeAllCacheLevelSensors
public final void removeAllCacheLevelSensors(java.lang.String taskName, java.lang.String cacheName)
-
storeLevelSensor
public final org.apache.kafka.common.metrics.Sensor storeLevelSensor(java.lang.String taskName, java.lang.String storeName, java.lang.String sensorName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
-
removeAllStoreLevelSensors
public final void removeAllStoreLevelSensors(java.lang.String taskName, java.lang.String storeName)
-
skippedRecordsSensor
public final org.apache.kafka.common.metrics.Sensor skippedRecordsSensor()
-
addSensor
public org.apache.kafka.common.metrics.Sensor addSensor(java.lang.String name, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel)
Description copied from interface:StreamsMetrics
Generic method to create a sensor. Note that for most cases it is advisable to useStreamsMetrics.addThroughputSensor(String, String, String, Sensor.RecordingLevel, String...)
orStreamsMetrics.addLatencyAndThroughputSensor(String, String, String, Sensor.RecordingLevel, String...)
to ensure metric name well-formedness and conformity with the rest of the streams code base. However, if the above two methods are not sufficient, this method can also be used.- Specified by:
addSensor
in interfaceStreamsMetrics
- Parameters:
name
- name of the sensor.recordingLevel
- the recording level (e.g., INFO or DEBUG) for this sensor- Returns:
- The added sensor.
-
addSensor
public org.apache.kafka.common.metrics.Sensor addSensor(java.lang.String name, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, org.apache.kafka.common.metrics.Sensor... parents)
Description copied from interface:StreamsMetrics
Generic method to create a sensor with parent sensors. Note that for most cases it is advisable to useStreamsMetrics.addThroughputSensor(String, String, String, Sensor.RecordingLevel, String...)
orStreamsMetrics.addLatencyAndThroughputSensor(String, String, String, Sensor.RecordingLevel, String...)
to ensure metric name well-formedness and conformity with the rest of the streams code base. However, if the above two methods are not sufficient, this method can also be used.- Specified by:
addSensor
in interfaceStreamsMetrics
- Parameters:
name
- name of the sensorrecordingLevel
- the recording level (e.g., INFO or DEBUG) for this sensor- Returns:
- The added sensor.
-
metrics
public java.util.Map<org.apache.kafka.common.MetricName,? extends org.apache.kafka.common.Metric> metrics()
Description copied from interface:StreamsMetrics
Get read-only handle on global metrics registry.- Specified by:
metrics
in interfaceStreamsMetrics
- Returns:
- Map of all metrics.
-
recordLatency
public void recordLatency(org.apache.kafka.common.metrics.Sensor sensor, long startNs, long endNs)
Description copied from interface:StreamsMetrics
Record the given latency value of the sensor. If the passed sensor includes throughput metrics, e.g., when created by theStreamsMetrics.addLatencyAndThroughputSensor(String, String, String, Sensor.RecordingLevel, String...)
method, then the throughput metrics will also be recorded from this event.- Specified by:
recordLatency
in interfaceStreamsMetrics
- Parameters:
sensor
- sensor whose latency we are recording.startNs
- start of measurement time in nanoseconds.endNs
- end of measurement time in nanoseconds.
-
recordThroughput
public void recordThroughput(org.apache.kafka.common.metrics.Sensor sensor, long value)
Description copied from interface:StreamsMetrics
Record the throughput value of a sensor.- Specified by:
recordThroughput
in interfaceStreamsMetrics
- Parameters:
sensor
- add Sensor whose throughput we are recordingvalue
- throughput value
-
tagMap
public final java.util.Map<java.lang.String,java.lang.String> tagMap(java.lang.String... tags)
-
addLatencyAndThroughputSensor
public org.apache.kafka.common.metrics.Sensor addLatencyAndThroughputSensor(java.lang.String scopeName, java.lang.String entityName, java.lang.String operationName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, java.lang.String... tags)
Description copied from interface:StreamsMetrics
Add a latency and throughput sensor for a specific operation, which will include the following sensors:- average latency
- max latency
- throughput (num.operations / time unit)
- Specified by:
addLatencyAndThroughputSensor
in interfaceStreamsMetrics
- Parameters:
scopeName
- name of the scope, could be the type of the state store, etc.entityName
- name of the entity, could be the name of the state store instance, etc.operationName
- name of the operation, could be get / put / delete / etc.recordingLevel
- the recording level (e.g., INFO or DEBUG) for this sensor.tags
- additional tags of the sensor- Returns:
- The added sensor.
- Throws:
java.lang.IllegalArgumentException
- if tags is not constructed in key-value pairs
-
addThroughputSensor
public org.apache.kafka.common.metrics.Sensor addThroughputSensor(java.lang.String scopeName, java.lang.String entityName, java.lang.String operationName, org.apache.kafka.common.metrics.Sensor.RecordingLevel recordingLevel, java.lang.String... tags)
Description copied from interface:StreamsMetrics
Add a throughput sensor for a specific operation:- throughput (num.operations / time unit)
StreamsMetrics.addLatencyAndThroughputSensor(String, String, String, Sensor.RecordingLevel, String...)
.- Specified by:
addThroughputSensor
in interfaceStreamsMetrics
- Parameters:
scopeName
- name of the scope, could be the type of the state store, etc.entityName
- name of the entity, could be the name of the state store instance, etc.operationName
- name of the operation, could be get / put / delete / etc.recordingLevel
- the recording level (e.g., INFO or DEBUG) for this sensor.tags
- additional tags of the sensor- Returns:
- The added sensor.
- Throws:
java.lang.IllegalArgumentException
- if tags is not constructed in key-value pairs
-
addAvgMaxLatency
public static void addAvgMaxLatency(org.apache.kafka.common.metrics.Sensor sensor, java.lang.String group, java.util.Map<java.lang.String,java.lang.String> tags, java.lang.String operation)
-
addInvocationRateAndCount
public static void addInvocationRateAndCount(org.apache.kafka.common.metrics.Sensor sensor, java.lang.String group, java.util.Map<java.lang.String,java.lang.String> tags, java.lang.String operation)
-
removeSensor
public void removeSensor(org.apache.kafka.common.metrics.Sensor sensor)
Deletes a sensor and its parents, if any- Specified by:
removeSensor
in interfaceStreamsMetrics
- Parameters:
sensor
- sensor to be removed
-
-