mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-21 04:57:18 +02:00
zero: refactor telemetry and controller (#5135)
* zero: refactor controller * refactor zero telemetry and controller * wire with connect handler * cr
This commit is contained in:
parent
cc636be707
commit
114f730dba
22 changed files with 612 additions and 342 deletions
47
internal/zero/telemetry/sessions/metrics.go
Normal file
47
internal/zero/telemetry/sessions/metrics.go
Normal file
|
@ -0,0 +1,47 @@
|
|||
package sessions
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
|
||||
"github.com/pomerium/pomerium/internal/log"
|
||||
"github.com/pomerium/pomerium/pkg/grpc/databroker"
|
||||
)
|
||||
|
||||
// Metrics returns a list of metrics to be exported
|
||||
func Metrics(
|
||||
clientProvider func() databroker.DataBrokerServiceClient,
|
||||
) []func(m metric.Meter) error {
|
||||
return []func(m metric.Meter) error{
|
||||
registerMetric("dau", clientProvider),
|
||||
registerMetric("mau", clientProvider),
|
||||
}
|
||||
}
|
||||
|
||||
func registerMetric(
|
||||
id string,
|
||||
clientProvider func() databroker.DataBrokerServiceClient,
|
||||
) func(m metric.Meter) error {
|
||||
return func(m metric.Meter) error {
|
||||
_, err := m.Int64ObservableGauge(id,
|
||||
metric.WithInt64Callback(metricCallback(id, clientProvider)),
|
||||
)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
func metricCallback(
|
||||
id string,
|
||||
clientProvider func() databroker.DataBrokerServiceClient,
|
||||
) metric.Int64Callback {
|
||||
return func(ctx context.Context, result metric.Int64Observer) error {
|
||||
state, err := LoadMetricState(ctx, clientProvider(), id)
|
||||
if err != nil {
|
||||
log.Ctx(ctx).Error().Err(err).Str("metric", id).Msg("error loading metric state")
|
||||
return nil // returning an error would block export of other metrics according to SDK design
|
||||
}
|
||||
result.Observe(int64(state.Count))
|
||||
return nil
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue