mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-11 13:57:36 -08:00
Merge pull request #14371 from aknuds1/arve/cleanup-otlp-histograms
OTLP: Document histogram conversion methods / clean up code a bit
This commit is contained in:
commit
a39e7e287f
|
@ -182,12 +182,13 @@ func createAttributes(resource pcommon.Resource, attributes pcommon.Map, externa
|
||||||
if i+1 >= len(extras) {
|
if i+1 >= len(extras) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
_, found := l[extras[i]]
|
|
||||||
|
name := extras[i]
|
||||||
|
_, found := l[name]
|
||||||
if found && logOnOverwrite {
|
if found && logOnOverwrite {
|
||||||
log.Println("label " + extras[i] + " is overwritten. Check if Prometheus reserved labels are used.")
|
log.Println("label " + name + " is overwritten. Check if Prometheus reserved labels are used.")
|
||||||
}
|
}
|
||||||
// internal labels should be maintained
|
// internal labels should be maintained
|
||||||
name := extras[i]
|
|
||||||
if !(len(name) > 4 && name[:2] == "__" && name[len(name)-2:] == "__") {
|
if !(len(name) > 4 && name[:2] == "__" && name[len(name)-2:] == "__") {
|
||||||
name = prometheustranslator.NormalizeLabel(name)
|
name = prometheustranslator.NormalizeLabel(name)
|
||||||
}
|
}
|
||||||
|
@ -219,6 +220,13 @@ func isValidAggregationTemporality(metric pmetric.Metric) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// addHistogramDataPoints adds OTel histogram data points to the corresponding Prometheus time series
|
||||||
|
// as classical histogram samples.
|
||||||
|
//
|
||||||
|
// Note that we can't convert to native histograms, since these have exponential buckets and don't line up
|
||||||
|
// with the user defined bucket boundaries of non-exponential OTel histograms.
|
||||||
|
// However, work is under way to resolve this shortcoming through a feature called native histograms custom buckets:
|
||||||
|
// https://github.com/prometheus/prometheus/issues/13485.
|
||||||
func (c *PrometheusConverter) addHistogramDataPoints(dataPoints pmetric.HistogramDataPointSlice,
|
func (c *PrometheusConverter) addHistogramDataPoints(dataPoints pmetric.HistogramDataPointSlice,
|
||||||
resource pcommon.Resource, settings Settings, baseName string) {
|
resource pcommon.Resource, settings Settings, baseName string) {
|
||||||
for x := 0; x < dataPoints.Len(); x++ {
|
for x := 0; x < dataPoints.Len(); x++ {
|
||||||
|
|
|
@ -30,10 +30,18 @@ import (
|
||||||
|
|
||||||
const defaultZeroThreshold = 1e-128
|
const defaultZeroThreshold = 1e-128
|
||||||
|
|
||||||
|
// addExponentialHistogramDataPoints adds OTel exponential histogram data points to the corresponding time series
|
||||||
|
// as native histogram samples.
|
||||||
func (c *PrometheusConverter) addExponentialHistogramDataPoints(dataPoints pmetric.ExponentialHistogramDataPointSlice,
|
func (c *PrometheusConverter) addExponentialHistogramDataPoints(dataPoints pmetric.ExponentialHistogramDataPointSlice,
|
||||||
resource pcommon.Resource, settings Settings, baseName string) error {
|
resource pcommon.Resource, settings Settings, promName string) error {
|
||||||
for x := 0; x < dataPoints.Len(); x++ {
|
for x := 0; x < dataPoints.Len(); x++ {
|
||||||
pt := dataPoints.At(x)
|
pt := dataPoints.At(x)
|
||||||
|
|
||||||
|
histogram, err := exponentialToNativeHistogram(pt)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
lbls := createAttributes(
|
lbls := createAttributes(
|
||||||
resource,
|
resource,
|
||||||
pt.Attributes(),
|
pt.Attributes(),
|
||||||
|
@ -41,14 +49,9 @@ func (c *PrometheusConverter) addExponentialHistogramDataPoints(dataPoints pmetr
|
||||||
nil,
|
nil,
|
||||||
true,
|
true,
|
||||||
model.MetricNameLabel,
|
model.MetricNameLabel,
|
||||||
baseName,
|
promName,
|
||||||
)
|
)
|
||||||
ts, _ := c.getOrCreateTimeSeries(lbls)
|
ts, _ := c.getOrCreateTimeSeries(lbls)
|
||||||
|
|
||||||
histogram, err := exponentialToNativeHistogram(pt)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
ts.Histograms = append(ts.Histograms, histogram)
|
ts.Histograms = append(ts.Histograms, histogram)
|
||||||
|
|
||||||
exemplars := getPromExemplars[pmetric.ExponentialHistogramDataPoint](pt)
|
exemplars := getPromExemplars[pmetric.ExponentialHistogramDataPoint](pt)
|
||||||
|
@ -58,7 +61,7 @@ func (c *PrometheusConverter) addExponentialHistogramDataPoints(dataPoints pmetr
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// exponentialToNativeHistogram translates OTel Exponential Histogram data point
|
// exponentialToNativeHistogram translates OTel Exponential Histogram data point
|
||||||
// to Prometheus Native Histogram.
|
// to Prometheus Native Histogram.
|
||||||
func exponentialToNativeHistogram(p pmetric.ExponentialHistogramDataPoint) (prompb.Histogram, error) {
|
func exponentialToNativeHistogram(p pmetric.ExponentialHistogramDataPoint) (prompb.Histogram, error) {
|
||||||
scale := p.Scale()
|
scale := p.Scale()
|
||||||
|
|
Loading…
Reference in a new issue