/** * Returns a new {@link Builder}. * * @return a {@code Builder}. * @since 0.19 */ public static Builder builder() { return new AutoValue_IntervalMetricReader_Options.Builder() .setExportInterval(DEFAULT_INTERVAL); }
private void readAndExport() { metricReader.readAndExport(metricExporter); } }
@VisibleForTesting PrometheusStatsCollector(MetricProducerManager metricProducerManager) { this.collectMetricReader = MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .setSpanName(EXPORT_METRICS_TO_PROMETHEUS) .build()); this.describeMetricReader = MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .setSpanName(DESCRIBE_METRICS_FOR_PROMETHEUS) .build()); }
@Test public void exportAfterStop() { FakeMetricExporter fakeMetricExporter = new FakeMetricExporter(); IntervalMetricReader intervalMetricReader = IntervalMetricReader.create( fakeMetricExporter, MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .build()), IntervalMetricReader.Options.builder() .setExportInterval(Duration.create(10, 0)) .build()); // Rely that this will be called in less than 10 seconds. intervalMetricReader.stop(); assertThat(fakeMetricExporter.waitForNumberOfExports(1)) .containsExactly(Collections.singletonList(METRIC)); } }
private SignalFxStatsExporter( SignalFxStatsConfiguration configuration, MetricProducerManager metricProducerManager) { this.configuration = Preconditions.checkNotNull(configuration, "configuration"); this.intervalMetricReader = IntervalMetricReader.create( new SignalFxMetricExporter( SignalFxMetricsSenderFactory.DEFAULT, configuration.getIngestEndpoint(), configuration.getToken()), MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .setSpanName(EXPORTER_SPAN_NAME) .build()), IntervalMetricReader.Options.builder() .setExportInterval(configuration.getExportInterval()) .build()); }
@Test public void readAndExport() { Set<MetricProducer> metricProducerSet = new HashSet<>(); metricProducerSet.add(metricProducer); when(metricProducer.getMetrics()).thenReturn(Collections.<Metric>emptyList()); when(metricProducerManager.getAllMetricProducer()).thenReturn(metricProducerSet); MetricReader metricReader = MetricReader.create( Options.builder().setMetricProducerManager(metricProducerManager).build()); metricReader.readAndExport(metricExporter); verify(metricExporter).export(eq(Collections.<Metric>emptyList())); } }
/** * Returns a new {@link Options.Builder}. * * @return a {@code Builder}. * @since 0.19 */ public static Builder builder() { return new AutoValue_MetricReader_Options.Builder() .setMetricProducerManager(Metrics.getExportComponent().getMetricProducerManager()) .setSpanName(DEFAULT_SPAN_NAME); }
/** * Creates a new {@link MetricReader}. * * @param options the options for {@link MetricReader}. * @return a new {@link MetricReader}. * @since 0.19 */ public static MetricReader create(Options options) { checkNotNull(options, "options"); return new MetricReader( checkNotNull(options.getMetricProducerManager(), "metricProducerManager"), checkNotNull(options.getSpanName(), "spanName")); }
/** * Creates a new {@link IntervalMetricReader}. * * @param metricExporter the {@link MetricExporter} to be called after. * @param metricReader the {@link MetricReader} to be used to read metrics. * @param options the {@link Options} for the new {@link IntervalMetricReader}. * @return a new {@link IntervalMetricReader}. * @since 0.19 */ public static IntervalMetricReader create( MetricExporter metricExporter, MetricReader metricReader, Options options) { checkNotNull(options, "options"); Duration exportInterval = checkNotNull(options.getExportInterval(), "exportInterval"); checkArgument(exportInterval.compareTo(ZERO) > 0, "Export interval must be positive"); return new IntervalMetricReader( new Worker( checkNotNull(metricExporter, "metricExporter"), exportInterval.toMillis(), checkNotNull(metricReader, "metricReader"))); }
private IntervalMetricReader(Worker worker) { this.worker = worker; this.workerThread = new DaemonThreadFactory().newThread(worker); workerThread.start(); }
@VisibleForTesting static void unsafeResetExporter() { synchronized (monitor) { if (instance != null) { instance.intervalMetricReader.stop(); } instance = null; } } }
@Test public void intervalExport() { FakeMetricExporter fakeMetricExporter = new FakeMetricExporter(); IntervalMetricReader intervalMetricReader = IntervalMetricReader.create( fakeMetricExporter, MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .build()), IntervalMetricReader.Options.builder() .setExportInterval(Duration.create(0, (int) MILLISECONDS.toNanos(100))) .build()); assertThat(fakeMetricExporter.waitForNumberOfExports(1)) .containsExactly(Collections.singletonList(METRIC)); assertThat(fakeMetricExporter.waitForNumberOfExports(2)) .containsExactly(Collections.singletonList(METRIC), Collections.singletonList(METRIC)); intervalMetricReader.stop(); }
/** * Returns a new {@link Options.Builder}. * * @return a {@code Builder}. * @since 0.19 */ public static Builder builder() { return new AutoValue_MetricReader_Options.Builder() .setMetricProducerManager(Metrics.getExportComponent().getMetricProducerManager()) .setSpanName(DEFAULT_SPAN_NAME); }
/** * Creates a new {@link MetricReader}. * * @param options the options for {@link MetricReader}. * @return a new {@link MetricReader}. * @since 0.19 */ public static MetricReader create(Options options) { checkNotNull(options, "options"); return new MetricReader( checkNotNull(options.getMetricProducerManager(), "metricProducerManager"), checkNotNull(options.getSpanName(), "spanName")); }
private void readAndExport() { metricReader.readAndExport(metricExporter); } }
/** * Returns a new {@link Builder}. * * @return a {@code Builder}. * @since 0.19 */ public static Builder builder() { return new AutoValue_IntervalMetricReader_Options.Builder() .setExportInterval(DEFAULT_INTERVAL); }
private IntervalMetricReader(Worker worker) { this.worker = worker; this.workerThread = new DaemonThreadFactory().newThread(worker); workerThread.start(); }
@VisibleForTesting static void unsafeResetExporter() { synchronized (monitor) { if (exporter != null) { if (exporter.intervalMetricReader != null) { exporter.intervalMetricReader.stop(); } exporter = null; } } }
@Override public List<MetricFamilySamples> collect() { ExportMetricExporter exportMetricExporter = new ExportMetricExporter(); collectMetricReader.readAndExport(exportMetricExporter); return exportMetricExporter.samples; }
@Override public List<MetricFamilySamples> describe() { DescribeMetricExporter describeMetricExporter = new DescribeMetricExporter(); describeMetricReader.readAndExport(describeMetricExporter); return describeMetricExporter.samples; }