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(PrometheusProtobufWriter prometheusProtobufWriter, 013 PrometheusTextFormatWriter prometheusTextFormatWriter, 014 OpenMetricsTextFormatWriter openMetricsTextFormatWriter) { 015 this.prometheusProtobufWriter = prometheusProtobufWriter; 016 this.prometheusTextFormatWriter = prometheusTextFormatWriter; 017 this.openMetricsTextFormatWriter = openMetricsTextFormatWriter; 018 } 019 020 public static ExpositionFormats init() { 021 return init(PrometheusProperties.get().getExporterProperties()); 022 } 023 024 public static ExpositionFormats init(ExporterProperties properties) { 025 return new ExpositionFormats( 026 new PrometheusProtobufWriter(), 027 new PrometheusTextFormatWriter(properties.getIncludeCreatedTimestamps()), 028 new OpenMetricsTextFormatWriter(properties.getIncludeCreatedTimestamps(), properties.getExemplarsOnAllMetricTypes()) 029 ); 030 } 031 032 public ExpositionFormatWriter findWriter(String acceptHeader) { 033 if (prometheusProtobufWriter.accepts(acceptHeader)) { 034 return prometheusProtobufWriter; 035 } 036 if (openMetricsTextFormatWriter.accepts(acceptHeader)) { 037 return openMetricsTextFormatWriter; 038 } 039 return prometheusTextFormatWriter; 040 } 041 042 public PrometheusProtobufWriter getPrometheusProtobufWriter() { 043 return prometheusProtobufWriter; 044 } 045 046 public PrometheusTextFormatWriter getPrometheusTextFormatWriter() { 047 return prometheusTextFormatWriter; 048 } 049 050 public OpenMetricsTextFormatWriter getOpenMetricsTextFormatWriter() { 051 return openMetricsTextFormatWriter; 052 } 053}