use of org.apache.kafka.common.metrics.Gauge in project kafka by apache.
the class ThreadMetricsTest method shouldAddTotalBlockedTimeMetric.
@Test
public void shouldAddTotalBlockedTimeMetric() {
// Given:
final double startTime = 123.45;
final StreamThreadTotalBlockedTime blockedTime = mock(StreamThreadTotalBlockedTime.class);
when(blockedTime.compute()).thenReturn(startTime);
// When:
ThreadMetrics.addThreadBlockedTimeMetric("burger", blockedTime, streamsMetrics);
// Then:
final ArgumentCaptor<Gauge<Double>> captor = gaugeCaptor();
verify(streamsMetrics).addThreadLevelMutableMetric(eq("blocked-time-ns-total"), eq("The total time the thread spent blocked on kafka in nanoseconds"), eq("burger"), captor.capture());
assertThat(captor.getValue().value(null, 678L), is(startTime));
}
use of org.apache.kafka.common.metrics.Gauge in project kafka by apache.
the class StreamsMetricsImpl method addThreadLevelMutableMetric.
public <T> void addThreadLevelMutableMetric(final String name, final String description, final String threadId, final Gauge<T> valueProvider) {
final MetricName metricName = metrics.metricName(name, THREAD_LEVEL_GROUP, description, threadLevelTagMap(threadId));
synchronized (threadLevelMetrics) {
threadLevelMetrics.computeIfAbsent(threadSensorPrefix(threadId), tid -> new LinkedList<>()).add(metricName);
metrics.addMetric(metricName, valueProvider);
}
}
use of org.apache.kafka.common.metrics.Gauge in project kafka by apache.
the class StreamsMetricsImpl method addStoreLevelMutableMetric.
public <T> void addStoreLevelMutableMetric(final String taskId, final String metricsScope, final String storeName, final String name, final String description, final RecordingLevel recordingLevel, final Gauge<T> valueProvider) {
final MetricName metricName = metrics.metricName(name, STATE_STORE_LEVEL_GROUP, description, storeLevelTagMap(taskId, metricsScope, storeName));
if (metrics.metric(metricName) == null) {
final MetricConfig metricConfig = new MetricConfig().recordLevel(recordingLevel);
final String key = storeSensorPrefix(Thread.currentThread().getName(), taskId, storeName);
metrics.addMetric(metricName, metricConfig, valueProvider);
storeLevelMetrics.computeIfAbsent(key, ignored -> new LinkedList<>()).push(metricName);
}
}
use of org.apache.kafka.common.metrics.Gauge in project kafka by apache.
the class StreamsMetricsImplTest method shouldAddClientLevelMutableMetric.
@Test
public void shouldAddClientLevelMutableMetric() {
final Metrics metrics = mock(Metrics.class);
final RecordingLevel recordingLevel = RecordingLevel.INFO;
final MetricConfig metricConfig = new MetricConfig().recordLevel(recordingLevel);
final Gauge<String> valueProvider = (config, now) -> "mutable-value";
expect(metrics.metricName(METRIC_NAME1, CLIENT_LEVEL_GROUP, DESCRIPTION1, clientLevelTags)).andReturn(metricName1);
metrics.addMetric(EasyMock.eq(metricName1), eqMetricConfig(metricConfig), eq(valueProvider));
replay(metrics);
final StreamsMetricsImpl streamsMetrics = new StreamsMetricsImpl(metrics, CLIENT_ID, VERSION, time);
streamsMetrics.addClientLevelMutableMetric(METRIC_NAME1, DESCRIPTION1, recordingLevel, valueProvider);
verify(metrics);
}
Aggregations