001package io.prometheus.metrics.expositionformats; 002 003import io.prometheus.metrics.config.ExporterProperties; 004import io.prometheus.metrics.config.PrometheusProperties; 005 006public class ExpositionFormats { 007 008 private final PrometheusProtobufWriter prometheusProtobufWriter; 009 private final PrometheusTextFormatWriter prometheusTextFormatWriter; 010 private final OpenMetricsTextFormatWriter openMetricsTextFormatWriter; 011 012 private ExpositionFormats( 013 PrometheusProtobufWriter prometheusProtobufWriter, 014 PrometheusTextFormatWriter prometheusTextFormatWriter, 015 OpenMetricsTextFormatWriter openMetricsTextFormatWriter) { 016 this.prometheusProtobufWriter = prometheusProtobufWriter; 017 this.prometheusTextFormatWriter = prometheusTextFormatWriter; 018 this.openMetricsTextFormatWriter = openMetricsTextFormatWriter; 019 } 020 021 public static ExpositionFormats init() { 022 return init(PrometheusProperties.get().getExporterProperties()); 023 } 024 025 @SuppressWarnings("deprecation") 026 public static ExpositionFormats init(ExporterProperties properties) { 027 return new ExpositionFormats( 028 new PrometheusProtobufWriter(), 029 PrometheusTextFormatWriter.builder() 030 .setIncludeCreatedTimestamps(properties.getIncludeCreatedTimestamps()) 031 .setTimestampsInMs(properties.getPrometheusTimestampsInMs()) 032 .build(), 033 OpenMetricsTextFormatWriter.builder() 034 .setCreatedTimestampsEnabled(properties.getIncludeCreatedTimestamps()) 035 .setExemplarsOnAllMetricTypesEnabled(properties.getExemplarsOnAllMetricTypes()) 036 .build()); 037 } 038 039 public ExpositionFormatWriter findWriter(String acceptHeader) { 040 if (prometheusProtobufWriter.accepts(acceptHeader)) { 041 return prometheusProtobufWriter; 042 } 043 if (openMetricsTextFormatWriter.accepts(acceptHeader)) { 044 return openMetricsTextFormatWriter; 045 } 046 return prometheusTextFormatWriter; 047 } 048 049 public PrometheusProtobufWriter getPrometheusProtobufWriter() { 050 return prometheusProtobufWriter; 051 } 052 053 public PrometheusTextFormatWriter getPrometheusTextFormatWriter() { 054 return prometheusTextFormatWriter; 055 } 056 057 public OpenMetricsTextFormatWriter getOpenMetricsTextFormatWriter() { 058 return openMetricsTextFormatWriter; 059 } 060}