Observability/metrics update (#1962)
* Removing logging from the NOOP implementatino * Simplifying the percentiles option * Simple logging implementation Co-authored-by: chris <chris@Profanity.local>
This commit is contained in:
		| @@ -19,13 +19,22 @@ type metricFamily struct { | ||||
|  | ||||
| // newMetricFamily returns a new metricFamily (useful in case we want to change the structure later): | ||||
| func (r *Reporter) newMetricFamily() metricFamily { | ||||
|  | ||||
| 	// Take quantile thresholds from our pre-defined list: | ||||
| 	timingObjectives := make(map[float64]float64) | ||||
| 	for _, percentile := range r.options.Percentiles { | ||||
| 		if quantileThreshold, ok := quantileThresholds[percentile]; ok { | ||||
| 			timingObjectives[percentile] = quantileThreshold | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return metricFamily{ | ||||
| 		counters:           make(map[string]*prometheus.CounterVec), | ||||
| 		gauges:             make(map[string]*prometheus.GaugeVec), | ||||
| 		timings:            make(map[string]*prometheus.SummaryVec), | ||||
| 		defaultLabels:      r.convertTags(r.options.DefaultTags), | ||||
| 		prometheusRegistry: r.prometheusRegistry, | ||||
| 		timingObjectives:   r.options.TimingObjectives, | ||||
| 		timingObjectives:   timingObjectives, | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -10,6 +10,12 @@ import ( | ||||
| 	"github.com/prometheus/client_golang/prometheus/promhttp" | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	// quantileThresholds maps quantiles / percentiles to error thresholds (required by the Prometheus client). | ||||
| 	// Must be from our pre-defined set [0.0, 0.5, 0.75, 0.90, 0.95, 0.98, 0.99, 1]: | ||||
| 	quantileThresholds = map[float64]float64{0.0: 0, 0.5: 0.05, 0.75: 0.04, 0.90: 0.03, 0.95: 0.02, 0.98: 0.001, 1: 0} | ||||
| ) | ||||
|  | ||||
| // Reporter is an implementation of metrics.Reporter: | ||||
| type Reporter struct { | ||||
| 	options            metrics.Options | ||||
|   | ||||
		Reference in New Issue
	
	Block a user