@@ -52,6 +52,7 @@ public class MetricGeneratorThread implements Runnable {
52
52
private final GeneratorState <MetricGeneratorThread > metricGeneratorState ;
53
53
private final GaugeGenerator gaugeGenerator ;
54
54
private final SumGenerator sumGenerator ;
55
+ private final HistogramGenerator histogramGenerator ;
55
56
private final SummaryGenerator summaryGenerator ;
56
57
private int currentCount ;
57
58
@@ -65,6 +66,7 @@ public MetricGeneratorThread(String groupKey, List<MetricDefinition> metrics, Pa
65
66
ExpressionProcessor jelProcessor = JELProvider .getJelProcessor ();
66
67
gaugeGenerator = new GaugeGenerator (jelProcessor );
67
68
sumGenerator = new SumGenerator (requestID , jelProcessor );
69
+ histogramGenerator = new HistogramGenerator (requestID , jelProcessor );
68
70
summaryGenerator = new SummaryGenerator (jelProcessor );
69
71
currentCount = 0 ;
70
72
}
@@ -116,7 +118,7 @@ public void run() {
116
118
.addAllResourceMetrics (resourceMetricsList )
117
119
.build ();
118
120
log .info (requestID + ": Sending payload for: " + groupKey );
119
- // log.debug(requestID + ": Complete payload for " + groupKey + ": " + resourceMetrics);
121
+ log .debug (requestID + ": Complete payload for " + groupKey + ": " + resourceMetrics );
120
122
boolean responseStatus = payloadHandler .postPayload (resourceMetrics );
121
123
if (metricGeneratorState .getTransportStorage () != null ) {
122
124
metricGeneratorState .getTransportStorage ().store (groupKey , resourceMetrics , responseStatus );
@@ -131,6 +133,7 @@ private Metric.Builder getMetric(MetricDefinition metricDefinition) {
131
133
return switch (metricDefinition .getOtelType ()) {
132
134
case Constants .GAUGE -> gaugeGenerator .getOTelMetric (metricDefinition );
133
135
case Constants .SUM -> sumGenerator .getOTelMetric (metricDefinition );
136
+ case Constants .HISTOGRAM -> histogramGenerator .getOTelMetric (metricDefinition );
134
137
default -> summaryGenerator .getOTelMetric (metricDefinition );
135
138
};
136
139
}
@@ -195,18 +198,29 @@ private Metric getMetricWithResourceAttributes(Metric.Builder partialMetric, Lis
195
198
.map (NumberDataPoint ::toBuilder )
196
199
.map (bdp -> bdp .addAllAttributes (resourceAttributes ).build ())
197
200
.toList ();
198
- partialMetric .getSum ().toBuilder ()
201
+ Sum newSum = partialMetric .getSum ().toBuilder ()
199
202
.clearDataPoints ()
200
203
.addAllDataPoints (dataPointsWAttrs )
201
204
.build ();
202
- Sum newSum = partialMetric .getSum ().toBuilder ()
205
+ return Metric .newBuilder ()
206
+ .setName (partialMetric .getName ())
207
+ .setUnit (partialMetric .getUnit ())
208
+ .setSum (newSum )
209
+ .build ();
210
+ } else if (metricType .equals (Metric .DataCase .HISTOGRAM )) {
211
+ List <HistogramDataPoint > dataPoints = partialMetric .getHistogram ().getDataPointsList ();
212
+ List <HistogramDataPoint > dataPointsWAttrs = dataPoints .stream ()
213
+ .map (HistogramDataPoint ::toBuilder )
214
+ .map (bdp -> bdp .addAllAttributes (resourceAttributes ).build ())
215
+ .toList ();
216
+ Histogram newHistogram = partialMetric .getHistogram ().toBuilder ()
203
217
.clearDataPoints ()
204
218
.addAllDataPoints (dataPointsWAttrs )
205
219
.build ();
206
220
return Metric .newBuilder ()
207
221
.setName (partialMetric .getName ())
208
222
.setUnit (partialMetric .getUnit ())
209
- .setSum ( newSum )
223
+ .setHistogram ( newHistogram )
210
224
.build ();
211
225
} else {
212
226
List <SummaryDataPoint > dataPoints = partialMetric .getSummary ().getDataPointsList ();
0 commit comments