.queryMetrics( MetricsFilter.builder() .addNameFilter(MetricNameFilter.named(PAssert.class, PAssert.SUCCESS_COUNTER)) .build()) .getCounters(); for (MetricResult<Long> counter : successCounterResults) {
metricResults.queryMetrics(MetricsFilter.builder().addStep(STEP1).build()); metricResults.queryMetrics(MetricsFilter.builder().addStep(STEP2).build()); assertGauge(GAUGE_NAME, step2res, STEP2, GaugeResult.create(VALUE, Instant.now()), true); MetricQueryResults allres = metricResults.queryMetrics(MetricsFilter.builder().build());
MetricName backlogBytesOfSplit = SourceMetrics.backlogBytesOfSplit(splitId).getName(); MetricQueryResults metrics = result.metrics().queryMetrics(MetricsFilter.builder().build()); .queryMetrics( MetricsFilter.builder() .addNameFilter( MetricNameFilter.named( backlogElementsOfSplit.getNamespace(), backlogElementsOfSplit.getName())) .build()); .queryMetrics( MetricsFilter.builder() .addNameFilter( MetricNameFilter.named( backlogBytesOfSplit.getNamespace(), backlogBytesOfSplit.getName())) .build()); .queryMetrics( MetricsFilter.builder() .addNameFilter( MetricNameFilter.named( KafkaUnboundedReader.METRIC_NAMESPACE, KafkaUnboundedReader.CHECKPOINT_MARK_COMMITS_ENQUEUED_METRIC)) .build());
MetricUpdate.create(MetricKey.create("step1", NAME4), GaugeData.create(27L))))); MetricQueryResults results = metrics.queryMetrics(MetricsFilter.builder().build()); assertThat( results.getCounters(),
.queryMetrics( MetricsFilter.builder() .addNameFilter(MetricNameFilter.inNamespace(elementsRead.getNamespace())) .build());
MetricUpdate.create(MetricKey.create("step1", NAME4), GaugeData.create(27L))))); MetricQueryResults results = metrics.queryMetrics(MetricsFilter.builder().build()); assertThat( results.getCounters(),
.queryMetrics( MetricsFilter.builder() .addNameFilter(MetricNameFilter.inNamespace(elementsWritten.getNamespace())) .build());
metricResults.queryMetrics(MetricsFilter.builder().addStep(STEP1).build()); metricResults.queryMetrics(MetricsFilter.builder().addStep(STEP2).build()); assertGauge(GAUGE_NAME, step2res, STEP2, GaugeResult.create(VALUE, Instant.now()), false); MetricQueryResults allres = metricResults.queryMetrics(MetricsFilter.builder().build());
metrics.queryMetrics(MetricsFilter.builder().addNameFilter(inNamespace("ns1")).build());
metrics.queryMetrics(MetricsFilter.builder().addNameFilter(inNamespace("ns1")).build());
@Test @Category({NeedsRunner.class, UsesAttemptedMetrics.class, UsesCounterMetrics.class}) public void testUnboundedSourceMetrics() { long numElements = 1000; // Use withMaxReadTime to force unbounded mode. pipeline.apply( GenerateSequence.from(0).to(numElements).withMaxReadTime(Duration.standardDays(1))); PipelineResult pipelineResult = pipeline.run(); MetricQueryResults metrics = pipelineResult .metrics() .queryMetrics( MetricsFilter.builder() .addNameFilter( MetricNameFilter.named( ELEMENTS_READ.getNamespace(), ELEMENTS_READ.getName())) .build()); assertThat( metrics.getCounters(), hasItem( attemptedMetricsResult( ELEMENTS_READ.getNamespace(), ELEMENTS_READ.getName(), "Read(UnboundedCountingSource)", 1000L))); } }
.queryMetrics( MetricsFilter.builder() .addNameFilter(MetricNameFilter.inNamespace(namespace)) .build()) .getCounters(), hasItem(metricsResult(namespace, "count", "ScaleByTwo", 4L, true)));
/** * Return the current value for a long counter, or a default value if can't be retrieved. Note * this uses only attempted metrics because some runners don't support committed metrics. */ private long getDistributionMetric(String name, DistributionType distType, long defaultValue) { MetricQueryResults metrics = result .metrics() .queryMetrics( MetricsFilter.builder() .addNameFilter(MetricNameFilter.named(namespace, name)) .build()); Iterable<MetricResult<DistributionResult>> distributions = metrics.getDistributions(); checkIfMetricResultIsUnique(name, distributions); try { MetricResult<DistributionResult> distributionResult = distributions.iterator().next(); switch (distType) { case MIN: return distributionResult.getAttempted().getMin(); case MAX: return distributionResult.getAttempted().getMax(); default: return defaultValue; } } catch (NoSuchElementException e) { LOG.error("Failed to get distribution metric {} for namespace {}", name, namespace); } return defaultValue; }
public static Map<String, Long> getMetrics(PipelineResult result) { final MetricQueryResults metricQueryResults = result.metrics().queryMetrics(MetricsFilter.builder().build()); final Map<String, Long> gauges = StreamSupport.stream(metricQueryResults.getGauges().spliterator(), false) .collect(Collectors.groupingBy( MetricResult::getName, Collectors.reducing(GaugeResult.empty(), GET_COMMITTED_GAUGE, BinaryOperator.maxBy( Comparator.comparing(GaugeResult::getTimestamp))))) .entrySet().stream() .collect(Collectors.toMap(e -> e.getKey().getName(), e -> e.getValue().getValue())); final Map<String, Long> counters = StreamSupport.stream( metricQueryResults.getCounters().spliterator(), false) .collect(Collectors.groupingBy(m -> m.getName().getName(), Collectors.summingLong(GET_COMMITTED_COUNTER))); Map<String, Long> ret = new HashMap<>(); ret.putAll(gauges); ret.putAll(counters); return Collections.unmodifiableMap(ret); }
@Test public void testMatchCompositeStepNameFilters() { // MetricsFilter with a Class-namespace + name filter + step filter. // Successful match. assertTrue( MetricFiltering.matches( MetricsFilter.builder() .addNameFilter(MetricNameFilter.named(MetricFilteringTest.class, "myMetricName")) .addStep("myStep") .build(), MetricKey.create( "myBigStep/myStep", MetricName.named(MetricFilteringTest.class, "myMetricName")))); // Unsuccessful match. assertFalse( MetricFiltering.matches( MetricsFilter.builder() .addNameFilter(MetricNameFilter.named(MetricFilteringTest.class, "myMetricName")) .addStep("myOtherStep") .build(), MetricKey.create( "myOtherStepNoMatch/myStep", MetricName.named(MetricFilteringTest.class, "myMetricName")))); }
@Test @Category({NeedsRunner.class, UsesAttemptedMetrics.class, UsesCounterMetrics.class}) public void testBoundedSourceMetrics() { long numElements = 1000; pipeline.apply(GenerateSequence.from(0).to(numElements)); PipelineResult pipelineResult = pipeline.run(); MetricQueryResults metrics = pipelineResult .metrics() .queryMetrics( MetricsFilter.builder() .addNameFilter( MetricNameFilter.named( ELEMENTS_READ.getNamespace(), ELEMENTS_READ.getName())) .build()); assertThat( metrics.getCounters(), hasItem( attemptedMetricsResult( ELEMENTS_READ.getNamespace(), ELEMENTS_READ.getName(), "Read(BoundedCountingSource)", 1000L))); }