pomerium/internal/telemetry/metrics/otel.go
Caleb Doxsey 180884cc21
add metrics for cache (#5627)
## Summary
Add metrics for the global cache. Configure `otel` to export metrics to
prometheus.

## Related issues
-
[ENG-2407](https://linear.app/pomerium/issue/ENG-2407/add-additional-metrics-and-tracing-spans-to-pomerium)

## Checklist

- [x] reference any related issues
- [ ] updated unit tests
- [ ] add appropriate label (`enhancement`, `bug`, `breaking`,
`dependencies`, `ci`)
- [x] ready for review
2025-05-28 09:49:30 -06:00

33 lines
708 B
Go

package metrics
import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/prometheus"
"go.opentelemetry.io/otel/metric"
sdk_metric "go.opentelemetry.io/otel/sdk/metric"
)
// Meter is the global meter for Pomerium.
var Meter metric.Meter
func init() {
e, err := prometheus.New(prometheus.WithNamespace("pomerium"))
if err != nil {
panic(err)
}
otel.SetMeterProvider(sdk_metric.NewMeterProvider(
sdk_metric.WithReader(e),
))
Meter = otel.Meter("")
}
// Int64Counter returns an int64 counter.
func Int64Counter(name string, options ...metric.Int64CounterOption) metric.Int64Counter {
c, err := Meter.Int64Counter(name, options...)
if err != nil {
panic(err)
}
return c
}