| 91 | ) |
| 92 | |
| 93 | func newNativeHistogram(name string, buckets []float64, lifecycler Limiter, traceIDLabelName string, histogramOverride HistogramMode, externalLabels map[string]string, tenant string, overrides Overrides, staleDuration time.Duration) *nativeHistogram { |
| 94 | if traceIDLabelName == "" { |
| 95 | traceIDLabelName = "traceID" |
| 96 | } |
| 97 | |
| 98 | return &nativeHistogram{ |
| 99 | metricName: name, |
| 100 | series: make(map[uint64]*nativeHistogramSeries), |
| 101 | seriesDemand: NewCardinality(staleDuration, removeStaleSeriesInterval), |
| 102 | lifecycler: lifecycler, |
| 103 | traceIDLabelName: traceIDLabelName, |
| 104 | buckets: buckets, |
| 105 | histogramOverride: histogramOverride, |
| 106 | externalLabels: externalLabels, |
| 107 | overrides: overrides, |
| 108 | tenant: tenant, |
| 109 | |
| 110 | // classic |
| 111 | nameCount: fmt.Sprintf("%s_count", name), |
| 112 | nameSum: fmt.Sprintf("%s_sum", name), |
| 113 | nameBucket: fmt.Sprintf("%s_bucket", name), |
| 114 | } |
| 115 | } |
| 116 | |
| 117 | func (h *nativeHistogram) ObserveWithExemplar(lbls labels.Labels, value float64, traceID string, multiplier float64) { |
| 118 | hash := lbls.Hash() |