@@ -65,17 +65,21 @@ class WithResourceMetricsConverter(resource: Resource, kamonVersion: String, fro
65
65
s.value.buckets.map(JLong valueOf _.frequency).asJava
66
66
)
67
67
68
- def toHistogramData (any : Seq [Snapshot [Distribution ]]): HistogramData =
69
- ImmutableHistogramData .create(AggregationTemporality .CUMULATIVE , any.map(toHistogramDatum).asJava)
70
-
71
- def convertHistogram (histogram : MetricSnapshot .Distributions ): MetricData =
72
- ImmutableMetricData .createDoubleHistogram(
73
- resource,
74
- instrumentationScopeInfo(histogram),
75
- histogram.name,
76
- histogram.description,
77
- toString(histogram.settings.unit),
78
- toHistogramData(histogram.instruments))
68
+ def toHistogramData (distributions : Seq [Snapshot [Distribution ]]): Option [HistogramData ] =
69
+ distributions.filter(_.value.buckets.nonEmpty) match {
70
+ case Nil => None
71
+ case nonEmpty => Some (ImmutableHistogramData .create(AggregationTemporality .CUMULATIVE , nonEmpty.map(toHistogramDatum).asJava))
72
+ }
73
+
74
+ def convertHistogram (histogram : MetricSnapshot .Distributions ): Option [MetricData ] =
75
+ toHistogramData(histogram.instruments).map(d =>
76
+ ImmutableMetricData .createDoubleHistogram(
77
+ resource,
78
+ instrumentationScopeInfo(histogram),
79
+ histogram.name,
80
+ histogram.description,
81
+ toString(histogram.settings.unit),
82
+ d))
79
83
80
84
def toCounterDatum (g : Snapshot [Long ]): LongPointData =
81
85
ImmutableLongPointData .create(fromNs, toNs, SpanConverter .toAttributes(g.tags), g.value)
@@ -100,9 +104,9 @@ class WithResourceMetricsConverter(resource: Resource, kamonVersion: String, fro
100
104
private [otel] object MetricsConverter {
101
105
def convert (resource : Resource , kamonVersion : String )(metrics : PeriodSnapshot ): JCollection [MetricData ] = {
102
106
val converter = new WithResourceMetricsConverter (resource, kamonVersion, metrics.from, metrics.to)
103
- val gauges = metrics.gauges.map(converter.convertGauge)
104
- val histograms = (metrics.histograms ++ metrics.timers ++ metrics.rangeSamplers).map (converter.convertHistogram)
105
- val counters = metrics.counters.map(converter.convertCounter)
107
+ val gauges = metrics.gauges.filter(_.instruments.nonEmpty). map(converter.convertGauge)
108
+ val histograms = (metrics.histograms ++ metrics.timers ++ metrics.rangeSamplers).filter(_.instruments.nonEmpty).flatMap (converter.convertHistogram)
109
+ val counters = metrics.counters.filter(_.instruments.nonEmpty). map(converter.convertCounter)
106
110
107
111
(gauges ++ histograms ++ counters).asJava
108
112
}
0 commit comments