generated from rmcguire/go-server-with-otel
implement econet exporter
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package econetmetrics
|
||||
|
||||
import "go.opentelemetry.io/otel/metric"
|
||||
|
||||
// gaugeBuilder creates observable gauges, accumulating them for a single
|
||||
// RegisterCallback and short-circuiting on the first creation error.
|
||||
//
|
||||
// Units are intentionally baked into the metric names (Prometheus idiom)
|
||||
// rather than set via metric.WithUnit — the OTEL→Prometheus exporter would
|
||||
// otherwise append a second unit suffix (e.g. econet_setpoint_fahrenheit_F).
|
||||
type gaugeBuilder struct {
|
||||
m metric.Meter
|
||||
obs []metric.Observable
|
||||
err error
|
||||
}
|
||||
|
||||
func (b *gaugeBuilder) i64(name, desc string) metric.Int64ObservableGauge {
|
||||
if b.err != nil {
|
||||
return nil
|
||||
}
|
||||
g, err := b.m.Int64ObservableGauge(name, metric.WithDescription(desc))
|
||||
if err != nil {
|
||||
b.err = err
|
||||
return nil
|
||||
}
|
||||
b.obs = append(b.obs, g)
|
||||
return g
|
||||
}
|
||||
|
||||
func (b *gaugeBuilder) f64(name, desc string) metric.Float64ObservableGauge {
|
||||
if b.err != nil {
|
||||
return nil
|
||||
}
|
||||
g, err := b.m.Float64ObservableGauge(name, metric.WithDescription(desc))
|
||||
if err != nil {
|
||||
b.err = err
|
||||
return nil
|
||||
}
|
||||
b.obs = append(b.obs, g)
|
||||
return g
|
||||
}
|
||||
Reference in New Issue
Block a user