mirror of
https://github.com/pomerium/pomerium.git
synced 2025-07-25 04:28:35 +02:00
telemetry: add tracing spans to cache and databroker (#987)
This commit is contained in:
parent
4ca0189524
commit
eaa0c980d2
5 changed files with 40 additions and 1 deletions
|
@ -86,6 +86,8 @@ func (a *Authorize) Check(ctx context.Context, in *envoy_service_auth_v2.CheckRe
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Authorize) forceSync(ctx context.Context, sessionID string) {
|
func (a *Authorize) forceSync(ctx context.Context, sessionID string) {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "authorize.forceSync")
|
||||||
|
defer span.End()
|
||||||
s := a.forceSyncSession(ctx, sessionID)
|
s := a.forceSyncSession(ctx, sessionID)
|
||||||
if s == nil {
|
if s == nil {
|
||||||
return
|
return
|
||||||
|
@ -94,6 +96,9 @@ func (a *Authorize) forceSync(ctx context.Context, sessionID string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Authorize) forceSyncSession(ctx context.Context, sessionID string) *session.Session {
|
func (a *Authorize) forceSyncSession(ctx context.Context, sessionID string) *session.Session {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "authorize.forceSyncSession")
|
||||||
|
defer span.End()
|
||||||
|
|
||||||
a.dataBrokerDataLock.RLock()
|
a.dataBrokerDataLock.RLock()
|
||||||
s, ok := a.dataBrokerData.Get(sessionTypeURL, sessionID).(*session.Session)
|
s, ok := a.dataBrokerData.Get(sessionTypeURL, sessionID).(*session.Session)
|
||||||
a.dataBrokerDataLock.RUnlock()
|
a.dataBrokerDataLock.RUnlock()
|
||||||
|
@ -121,6 +126,9 @@ func (a *Authorize) forceSyncSession(ctx context.Context, sessionID string) *ses
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Authorize) forceSyncUser(ctx context.Context, userID string) *user.User {
|
func (a *Authorize) forceSyncUser(ctx context.Context, userID string) *user.User {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "authorize.forceSyncUser")
|
||||||
|
defer span.End()
|
||||||
|
|
||||||
a.dataBrokerDataLock.RLock()
|
a.dataBrokerDataLock.RLock()
|
||||||
s, ok := a.dataBrokerData.Get(userTypeURL, userID).(*user.User)
|
s, ok := a.dataBrokerData.Get(userTypeURL, userID).(*user.User)
|
||||||
a.dataBrokerDataLock.RUnlock()
|
a.dataBrokerDataLock.RUnlock()
|
||||||
|
|
|
@ -5,6 +5,8 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
|
|
||||||
backoff "github.com/cenkalti/backoff/v4"
|
backoff "github.com/cenkalti/backoff/v4"
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
"google.golang.org/protobuf/types/known/emptypb"
|
"google.golang.org/protobuf/types/known/emptypb"
|
||||||
|
@ -37,6 +39,8 @@ func (a *Authorize) Run(ctx context.Context) error {
|
||||||
func (a *Authorize) runTypesSyncer(ctx context.Context, updateTypes chan<- []string) error {
|
func (a *Authorize) runTypesSyncer(ctx context.Context, updateTypes chan<- []string) error {
|
||||||
log.Info().Msg("starting type sync")
|
log.Info().Msg("starting type sync")
|
||||||
return tryForever(ctx, func(backoff interface{ Reset() }) error {
|
return tryForever(ctx, func(backoff interface{ Reset() }) error {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "authorize.dataBrokerClient.Sync")
|
||||||
|
defer span.End()
|
||||||
stream, err := a.dataBrokerClient.SyncTypes(ctx, new(emptypb.Empty))
|
stream, err := a.dataBrokerClient.SyncTypes(ctx, new(emptypb.Empty))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -89,6 +93,7 @@ func (a *Authorize) runDataTypeSyncer(ctx context.Context, typeURL string, updat
|
||||||
var serverVersion, recordVersion string
|
var serverVersion, recordVersion string
|
||||||
|
|
||||||
log.Info().Str("type_url", typeURL).Msg("starting data initial load")
|
log.Info().Str("type_url", typeURL).Msg("starting data initial load")
|
||||||
|
ctx, span := trace.StartSpan(ctx, "authorize.dataBrokerClient.GetAll")
|
||||||
backoff := backoff.NewExponentialBackOff()
|
backoff := backoff.NewExponentialBackOff()
|
||||||
for {
|
for {
|
||||||
res, err := a.dataBrokerClient.GetAll(ctx, &databroker.GetAllRequest{
|
res, err := a.dataBrokerClient.GetAll(ctx, &databroker.GetAllRequest{
|
||||||
|
@ -122,9 +127,12 @@ func (a *Authorize) runDataTypeSyncer(ctx context.Context, typeURL string, updat
|
||||||
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
span.End()
|
||||||
|
|
||||||
log.Info().Str("type_url", typeURL).Msg("starting data syncer")
|
log.Info().Str("type_url", typeURL).Msg("starting data syncer")
|
||||||
return tryForever(ctx, func(backoff interface{ Reset() }) error {
|
return tryForever(ctx, func(backoff interface{ Reset() }) error {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "authorize.dataBrokerClient.Sync")
|
||||||
|
defer span.End()
|
||||||
stream, err := a.dataBrokerClient.Sync(ctx, &databroker.SyncRequest{
|
stream, err := a.dataBrokerClient.Sync(ctx, &databroker.SyncRequest{
|
||||||
ServerVersion: serverVersion,
|
ServerVersion: serverVersion,
|
||||||
RecordVersion: recordVersion,
|
RecordVersion: recordVersion,
|
||||||
|
|
5
cache/session.go
vendored
5
cache/session.go
vendored
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/pomerium/pomerium/internal/grpc/databroker"
|
"github.com/pomerium/pomerium/internal/grpc/databroker"
|
||||||
"github.com/pomerium/pomerium/internal/grpc/session"
|
"github.com/pomerium/pomerium/internal/grpc/session"
|
||||||
"github.com/pomerium/pomerium/internal/log"
|
"github.com/pomerium/pomerium/internal/log"
|
||||||
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SessionServer implements the session service interface for adding and syncing sessions.
|
// SessionServer implements the session service interface for adding and syncing sessions.
|
||||||
|
@ -28,6 +29,8 @@ func NewSessionServer(grpcServer *grpc.Server, dataBrokerClient databroker.DataB
|
||||||
|
|
||||||
// Delete deletes a session from the session server.
|
// Delete deletes a session from the session server.
|
||||||
func (srv *SessionServer) Delete(ctx context.Context, req *session.DeleteRequest) (*emptypb.Empty, error) {
|
func (srv *SessionServer) Delete(ctx context.Context, req *session.DeleteRequest) (*emptypb.Empty, error) {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "session.grpc.Delete")
|
||||||
|
defer span.End()
|
||||||
log.Info().
|
log.Info().
|
||||||
Str("service", "session").
|
Str("service", "session").
|
||||||
Str("session_id", req.GetId()).
|
Str("session_id", req.GetId()).
|
||||||
|
@ -46,6 +49,8 @@ func (srv *SessionServer) Delete(ctx context.Context, req *session.DeleteRequest
|
||||||
|
|
||||||
// Add adds a session to the session server.
|
// Add adds a session to the session server.
|
||||||
func (srv *SessionServer) Add(ctx context.Context, req *session.AddRequest) (*session.AddResponse, error) {
|
func (srv *SessionServer) Add(ctx context.Context, req *session.AddRequest) (*session.AddResponse, error) {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "session.grpc.Add")
|
||||||
|
defer span.End()
|
||||||
log.Info().
|
log.Info().
|
||||||
Str("service", "session").
|
Str("service", "session").
|
||||||
Str("session_id", req.GetSession().GetId()).
|
Str("session_id", req.GetSession().GetId()).
|
||||||
|
|
3
cache/user.go
vendored
3
cache/user.go
vendored
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/pomerium/pomerium/internal/grpc/databroker"
|
"github.com/pomerium/pomerium/internal/grpc/databroker"
|
||||||
"github.com/pomerium/pomerium/internal/grpc/user"
|
"github.com/pomerium/pomerium/internal/grpc/user"
|
||||||
"github.com/pomerium/pomerium/internal/log"
|
"github.com/pomerium/pomerium/internal/log"
|
||||||
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
// UserServer implements the user service interface for syncing users.
|
// UserServer implements the user service interface for syncing users.
|
||||||
|
@ -28,6 +29,8 @@ func NewUserServer(grpcServer *grpc.Server, dataBrokerClient databroker.DataBrok
|
||||||
|
|
||||||
// Add adds a user to the user server.
|
// Add adds a user to the user server.
|
||||||
func (srv *UserServer) Add(ctx context.Context, req *user.AddRequest) (*emptypb.Empty, error) {
|
func (srv *UserServer) Add(ctx context.Context, req *user.AddRequest) (*emptypb.Empty, error) {
|
||||||
|
ctx, span := trace.StartSpan(ctx, "user.grpc.Add")
|
||||||
|
defer span.End()
|
||||||
log.Info().
|
log.Info().
|
||||||
Str("service", "user").
|
Str("service", "user").
|
||||||
Str("user_id", req.GetUser().GetId()).
|
Str("user_id", req.GetUser().GetId()).
|
||||||
|
|
|
@ -17,6 +17,7 @@ import (
|
||||||
|
|
||||||
"github.com/pomerium/pomerium/internal/grpc/databroker"
|
"github.com/pomerium/pomerium/internal/grpc/databroker"
|
||||||
"github.com/pomerium/pomerium/internal/log"
|
"github.com/pomerium/pomerium/internal/log"
|
||||||
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Server implements the databroker service using an in memory database.
|
// Server implements the databroker service using an in memory database.
|
||||||
|
@ -63,6 +64,8 @@ func New(options ...ServerOption) *Server {
|
||||||
|
|
||||||
// Delete deletes a record from the in-memory list.
|
// Delete deletes a record from the in-memory list.
|
||||||
func (srv *Server) Delete(ctx context.Context, req *databroker.DeleteRequest) (*empty.Empty, error) {
|
func (srv *Server) Delete(ctx context.Context, req *databroker.DeleteRequest) (*empty.Empty, error) {
|
||||||
|
_, span := trace.StartSpan(ctx, "databroker.grpc.Delete")
|
||||||
|
defer span.End()
|
||||||
srv.log.Info().
|
srv.log.Info().
|
||||||
Str("type", req.GetType()).
|
Str("type", req.GetType()).
|
||||||
Str("id", req.GetId()).
|
Str("id", req.GetId()).
|
||||||
|
@ -77,6 +80,8 @@ func (srv *Server) Delete(ctx context.Context, req *databroker.DeleteRequest) (*
|
||||||
|
|
||||||
// Get gets a record from the in-memory list.
|
// Get gets a record from the in-memory list.
|
||||||
func (srv *Server) Get(ctx context.Context, req *databroker.GetRequest) (*databroker.GetResponse, error) {
|
func (srv *Server) Get(ctx context.Context, req *databroker.GetRequest) (*databroker.GetResponse, error) {
|
||||||
|
_, span := trace.StartSpan(ctx, "databroker.grpc.Get")
|
||||||
|
defer span.End()
|
||||||
srv.log.Info().
|
srv.log.Info().
|
||||||
Str("type", req.GetType()).
|
Str("type", req.GetType()).
|
||||||
Str("id", req.GetId()).
|
Str("id", req.GetId()).
|
||||||
|
@ -91,6 +96,8 @@ func (srv *Server) Get(ctx context.Context, req *databroker.GetRequest) (*databr
|
||||||
|
|
||||||
// GetAll gets all the records from the in-memory list.
|
// GetAll gets all the records from the in-memory list.
|
||||||
func (srv *Server) GetAll(ctx context.Context, req *databroker.GetAllRequest) (*databroker.GetAllResponse, error) {
|
func (srv *Server) GetAll(ctx context.Context, req *databroker.GetAllRequest) (*databroker.GetAllResponse, error) {
|
||||||
|
_, span := trace.StartSpan(ctx, "databroker.grpc.GetAll")
|
||||||
|
defer span.End()
|
||||||
srv.log.Info().
|
srv.log.Info().
|
||||||
Str("type", req.GetType()).
|
Str("type", req.GetType()).
|
||||||
Msg("get all")
|
Msg("get all")
|
||||||
|
@ -111,6 +118,8 @@ func (srv *Server) GetAll(ctx context.Context, req *databroker.GetAllRequest) (*
|
||||||
|
|
||||||
// Set updates a record in the in-memory list, or adds a new one.
|
// Set updates a record in the in-memory list, or adds a new one.
|
||||||
func (srv *Server) Set(ctx context.Context, req *databroker.SetRequest) (*databroker.SetResponse, error) {
|
func (srv *Server) Set(ctx context.Context, req *databroker.SetRequest) (*databroker.SetResponse, error) {
|
||||||
|
_, span := trace.StartSpan(ctx, "databroker.grpc.Set")
|
||||||
|
defer span.End()
|
||||||
srv.log.Info().
|
srv.log.Info().
|
||||||
Str("type", req.GetType()).
|
Str("type", req.GetType()).
|
||||||
Str("id", req.GetId()).
|
Str("id", req.GetId()).
|
||||||
|
@ -130,6 +139,8 @@ func (srv *Server) Set(ctx context.Context, req *databroker.SetRequest) (*databr
|
||||||
|
|
||||||
// Sync streams updates for the given record type.
|
// Sync streams updates for the given record type.
|
||||||
func (srv *Server) Sync(req *databroker.SyncRequest, stream databroker.DataBrokerService_SyncServer) error {
|
func (srv *Server) Sync(req *databroker.SyncRequest, stream databroker.DataBrokerService_SyncServer) error {
|
||||||
|
_, span := trace.StartSpan(stream.Context(), "databroker.grpc.Sync")
|
||||||
|
defer span.End()
|
||||||
srv.log.Info().
|
srv.log.Info().
|
||||||
Str("type", req.GetType()).
|
Str("type", req.GetType()).
|
||||||
Str("server_version", req.GetServerVersion()).
|
Str("server_version", req.GetServerVersion()).
|
||||||
|
@ -172,7 +183,9 @@ func (srv *Server) Sync(req *databroker.SyncRequest, stream databroker.DataBroke
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTypes returns all the known record types.
|
// GetTypes returns all the known record types.
|
||||||
func (srv *Server) GetTypes(_ context.Context, _ *emptypb.Empty) (*databroker.GetTypesResponse, error) {
|
func (srv *Server) GetTypes(ctx context.Context, _ *emptypb.Empty) (*databroker.GetTypesResponse, error) {
|
||||||
|
_, span := trace.StartSpan(ctx, "databroker.grpc.GetTypes")
|
||||||
|
defer span.End()
|
||||||
var recordTypes []string
|
var recordTypes []string
|
||||||
srv.mu.RLock()
|
srv.mu.RLock()
|
||||||
for recordType := range srv.byType {
|
for recordType := range srv.byType {
|
||||||
|
@ -188,6 +201,8 @@ func (srv *Server) GetTypes(_ context.Context, _ *emptypb.Empty) (*databroker.Ge
|
||||||
|
|
||||||
// SyncTypes synchronizes all the known record types.
|
// SyncTypes synchronizes all the known record types.
|
||||||
func (srv *Server) SyncTypes(req *emptypb.Empty, stream databroker.DataBrokerService_SyncTypesServer) error {
|
func (srv *Server) SyncTypes(req *emptypb.Empty, stream databroker.DataBrokerService_SyncTypesServer) error {
|
||||||
|
_, span := trace.StartSpan(stream.Context(), "databroker.grpc.SyncTypes")
|
||||||
|
defer span.End()
|
||||||
srv.log.Info().
|
srv.log.Info().
|
||||||
Msg("sync types")
|
Msg("sync types")
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue