3333public class PrometheusProtobufWriter implements ExpositionFormatWriter {
3434
3535 public static final String CONTENT_TYPE =
36- "application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily; encoding=delimited" ;
36+ "application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily; "
37+ + "encoding=delimited" ;
3738
3839 @ Override
3940 public boolean accepts (String acceptHeader ) {
@@ -53,7 +54,7 @@ public String getContentType() {
5354 public String toDebugString (MetricSnapshots metricSnapshots ) {
5455 StringBuilder stringBuilder = new StringBuilder ();
5556 for (MetricSnapshot snapshot : metricSnapshots ) {
56- if (snapshot .getDataPoints ().size () > 0 ) {
57+ if (! snapshot .getDataPoints ().isEmpty () ) {
5758 stringBuilder .append (TextFormat .printer ().printToString (convert (snapshot )));
5859 }
5960 }
@@ -63,7 +64,7 @@ public String toDebugString(MetricSnapshots metricSnapshots) {
6364 @ Override
6465 public void write (OutputStream out , MetricSnapshots metricSnapshots ) throws IOException {
6566 for (MetricSnapshot snapshot : metricSnapshots ) {
66- if (snapshot .getDataPoints ().size () > 0 ) {
67+ if (! snapshot .getDataPoints ().isEmpty () ) {
6768 convert (snapshot ).writeDelimitedTo (out );
6869 }
6970 }
@@ -122,42 +123,23 @@ public Metrics.MetricFamily convert(MetricSnapshot snapshot) {
122123 return builder .build ();
123124 }
124125
125- private void setMetadataUnlessEmpty (
126- Metrics .MetricFamily .Builder builder ,
127- MetricMetadata metadata ,
128- String nameSuffix ,
129- Metrics .MetricType type ) {
130- if (builder .getMetricCount () == 0 ) {
131- return ;
132- }
133- if (nameSuffix == null ) {
134- builder .setName (metadata .getPrometheusName ());
135- } else {
136- builder .setName (metadata .getPrometheusName () + nameSuffix );
137- }
138- if (metadata .getHelp () != null ) {
139- builder .setHelp (metadata .getHelp ());
140- }
141- builder .setType (type );
142- }
143-
144126 private Metrics .Metric .Builder convert (CounterDataPointSnapshot data ) {
145- Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
146127 Metrics .Counter .Builder counterBuilder = Metrics .Counter .newBuilder ();
147128 counterBuilder .setValue (data .getValue ());
148129 if (data .getExemplar () != null ) {
149130 counterBuilder .setExemplar (convert (data .getExemplar ()));
150131 }
132+ Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
151133 addLabels (metricBuilder , data .getLabels ());
152134 metricBuilder .setCounter (counterBuilder .build ());
153135 setScrapeTimestamp (metricBuilder , data );
154136 return metricBuilder ;
155137 }
156138
157139 private Metrics .Metric .Builder convert (GaugeSnapshot .GaugeDataPointSnapshot data ) {
158- Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
159140 Metrics .Gauge .Builder gaugeBuilder = Metrics .Gauge .newBuilder ();
160141 gaugeBuilder .setValue (data .getValue ());
142+ Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
161143 addLabels (metricBuilder , data .getLabels ());
162144 metricBuilder .setGauge (gaugeBuilder );
163145 setScrapeTimestamp (metricBuilder , data );
@@ -219,6 +201,94 @@ private Metrics.Metric.Builder convert(HistogramSnapshot.HistogramDataPointSnaps
219201 return metricBuilder ;
220202 }
221203
204+ private Metrics .Metric .Builder convert (SummarySnapshot .SummaryDataPointSnapshot data ) {
205+ Metrics .Summary .Builder summaryBuilder = Metrics .Summary .newBuilder ();
206+ if (data .hasCount ()) {
207+ summaryBuilder .setSampleCount (data .getCount ());
208+ }
209+ if (data .hasSum ()) {
210+ summaryBuilder .setSampleSum (data .getSum ());
211+ }
212+ Quantiles quantiles = data .getQuantiles ();
213+ for (int i = 0 ; i < quantiles .size (); i ++) {
214+ summaryBuilder .addQuantile (
215+ Metrics .Quantile .newBuilder ()
216+ .setQuantile (quantiles .get (i ).getQuantile ())
217+ .setValue (quantiles .get (i ).getValue ())
218+ .build ());
219+ }
220+ Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
221+ addLabels (metricBuilder , data .getLabels ());
222+ metricBuilder .setSummary (summaryBuilder .build ());
223+ setScrapeTimestamp (metricBuilder , data );
224+ return metricBuilder ;
225+ }
226+
227+ private Metrics .Metric .Builder convert (InfoSnapshot .InfoDataPointSnapshot data ) {
228+ Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
229+ Metrics .Gauge .Builder gaugeBuilder = Metrics .Gauge .newBuilder ();
230+ gaugeBuilder .setValue (1 );
231+ addLabels (metricBuilder , data .getLabels ());
232+ metricBuilder .setGauge (gaugeBuilder );
233+ setScrapeTimestamp (metricBuilder , data );
234+ return metricBuilder ;
235+ }
236+
237+ private Metrics .Metric .Builder convert (
238+ StateSetSnapshot .StateSetDataPointSnapshot data , String name , int i ) {
239+ Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
240+ Metrics .Gauge .Builder gaugeBuilder = Metrics .Gauge .newBuilder ();
241+ addLabels (metricBuilder , data .getLabels ());
242+ metricBuilder .addLabel (
243+ Metrics .LabelPair .newBuilder ().setName (name ).setValue (data .getName (i )).build ());
244+ if (data .isTrue (i )) {
245+ gaugeBuilder .setValue (1 );
246+ } else {
247+ gaugeBuilder .setValue (0 );
248+ }
249+ metricBuilder .setGauge (gaugeBuilder );
250+ setScrapeTimestamp (metricBuilder , data );
251+ return metricBuilder ;
252+ }
253+
254+ private Metrics .Metric .Builder convert (UnknownSnapshot .UnknownDataPointSnapshot data ) {
255+ Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
256+ Metrics .Untyped .Builder untypedBuilder = Metrics .Untyped .newBuilder ();
257+ untypedBuilder .setValue (data .getValue ());
258+ addLabels (metricBuilder , data .getLabels ());
259+ metricBuilder .setUntyped (untypedBuilder );
260+ return metricBuilder ;
261+ }
262+
263+ private Metrics .Exemplar .Builder convert (Exemplar exemplar ) {
264+ Metrics .Exemplar .Builder builder = Metrics .Exemplar .newBuilder ();
265+ builder .setValue (exemplar .getValue ());
266+ addLabels (builder , exemplar .getLabels ());
267+ if (exemplar .hasTimestamp ()) {
268+ builder .setTimestamp (timestampFromMillis (exemplar .getTimestampMillis ()));
269+ }
270+ return builder ;
271+ }
272+
273+ private void setMetadataUnlessEmpty (
274+ Metrics .MetricFamily .Builder builder ,
275+ MetricMetadata metadata ,
276+ String nameSuffix ,
277+ Metrics .MetricType type ) {
278+ if (builder .getMetricCount () == 0 ) {
279+ return ;
280+ }
281+ if (nameSuffix == null ) {
282+ builder .setName (metadata .getPrometheusName ());
283+ } else {
284+ builder .setName (metadata .getPrometheusName () + nameSuffix );
285+ }
286+ if (metadata .getHelp () != null ) {
287+ builder .setHelp (metadata .getHelp ());
288+ }
289+ builder .setType (type );
290+ }
291+
222292 private long getNativeCount (HistogramSnapshot .HistogramDataPointSnapshot data ) {
223293 if (data .hasCount ()) {
224294 return data .getCount ();
@@ -284,65 +354,6 @@ private void addBuckets(
284354 }
285355 }
286356
287- private Metrics .Metric .Builder convert (SummarySnapshot .SummaryDataPointSnapshot data ) {
288- Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
289- Metrics .Summary .Builder summaryBuilder = Metrics .Summary .newBuilder ();
290- if (data .hasCount ()) {
291- summaryBuilder .setSampleCount (data .getCount ());
292- }
293- if (data .hasSum ()) {
294- summaryBuilder .setSampleSum (data .getSum ());
295- }
296- Quantiles quantiles = data .getQuantiles ();
297- for (int i = 0 ; i < quantiles .size (); i ++) {
298- summaryBuilder .addQuantile (
299- Metrics .Quantile .newBuilder ()
300- .setQuantile (quantiles .get (i ).getQuantile ())
301- .setValue (quantiles .get (i ).getValue ())
302- .build ());
303- }
304- addLabels (metricBuilder , data .getLabels ());
305- metricBuilder .setSummary (summaryBuilder .build ());
306- setScrapeTimestamp (metricBuilder , data );
307- return metricBuilder ;
308- }
309-
310- private Metrics .Metric .Builder convert (InfoSnapshot .InfoDataPointSnapshot data ) {
311- Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
312- Metrics .Gauge .Builder gaugeBuilder = Metrics .Gauge .newBuilder ();
313- gaugeBuilder .setValue (1 );
314- addLabels (metricBuilder , data .getLabels ());
315- metricBuilder .setGauge (gaugeBuilder );
316- setScrapeTimestamp (metricBuilder , data );
317- return metricBuilder ;
318- }
319-
320- private Metrics .Metric .Builder convert (
321- StateSetSnapshot .StateSetDataPointSnapshot data , String name , int i ) {
322- Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
323- Metrics .Gauge .Builder gaugeBuilder = Metrics .Gauge .newBuilder ();
324- addLabels (metricBuilder , data .getLabels ());
325- metricBuilder .addLabel (
326- Metrics .LabelPair .newBuilder ().setName (name ).setValue (data .getName (i )).build ());
327- if (data .isTrue (i )) {
328- gaugeBuilder .setValue (1 );
329- } else {
330- gaugeBuilder .setValue (0 );
331- }
332- metricBuilder .setGauge (gaugeBuilder );
333- setScrapeTimestamp (metricBuilder , data );
334- return metricBuilder ;
335- }
336-
337- private Metrics .Metric .Builder convert (UnknownSnapshot .UnknownDataPointSnapshot data ) {
338- Metrics .Metric .Builder metricBuilder = Metrics .Metric .newBuilder ();
339- Metrics .Untyped .Builder untypedBuilder = Metrics .Untyped .newBuilder ();
340- untypedBuilder .setValue (data .getValue ());
341- addLabels (metricBuilder , data .getLabels ());
342- metricBuilder .setUntyped (untypedBuilder );
343- return metricBuilder ;
344- }
345-
346357 private void addLabels (Metrics .Metric .Builder metricBuilder , Labels labels ) {
347358 for (int i = 0 ; i < labels .size (); i ++) {
348359 metricBuilder .addLabel (
@@ -363,16 +374,6 @@ private void addLabels(Metrics.Exemplar.Builder metricBuilder, Labels labels) {
363374 }
364375 }
365376
366- private Metrics .Exemplar .Builder convert (Exemplar exemplar ) {
367- Metrics .Exemplar .Builder builder = Metrics .Exemplar .newBuilder ();
368- builder .setValue (exemplar .getValue ());
369- addLabels (builder , exemplar .getLabels ());
370- if (exemplar .hasTimestamp ()) {
371- builder .setTimestamp (timestampFromMillis (exemplar .getTimestampMillis ()));
372- }
373- return builder ;
374- }
375-
376377 private void setScrapeTimestamp (Metrics .Metric .Builder metricBuilder , DataPointSnapshot data ) {
377378 if (data .hasScrapeTimestamp ()) {
378379 metricBuilder .setTimestampMs (data .getScrapeTimestampMillis ());
0 commit comments