diff --git a/agent/backend/devicediscovery/device_discovery.go b/agent/backend/devicediscovery/device_discovery.go index 88823ad..8e268b0 100644 --- a/agent/backend/devicediscovery/device_discovery.go +++ b/agent/backend/devicediscovery/device_discovery.go @@ -43,6 +43,7 @@ type deviceDiscoveryBackend struct { diodeClientID string diodeClientSecret string diodeAppNamePrefix string + diodeOtelEndpoint string startTime time.Time proc backend.Commander @@ -84,6 +85,12 @@ func (d *deviceDiscoveryBackend) Configure(logger *slog.Logger, repo policies.Po d.diodeClientSecret = common.Diode.ClientSecret d.diodeAppNamePrefix = common.Diode.AgentName + if common.Otel.Grpc != "" { + d.diodeOtelEndpoint = common.Otel.Grpc + d.logger.Info("device-discovery using OTLP metrics endpoint", + slog.String("endpoint", d.diodeOtelEndpoint)) + } + return nil } @@ -112,6 +119,10 @@ func (d *deviceDiscoveryBackend) Start(ctx context.Context, cancelFunc context.C "--diode-app-name-prefix", d.diodeAppNamePrefix, } + if d.diodeOtelEndpoint != "" { + pvOptions = append(pvOptions, "--otel-endpoint", d.diodeOtelEndpoint) + } + d.logger.Info("device-discovery startup", slog.Any("arguments", pvOptions)) pvOptions[9] = d.diodeClientSecret diff --git a/agent/backend/networkdiscovery/network_discovery.go b/agent/backend/networkdiscovery/network_discovery.go index 19c0144..3452953 100644 --- a/agent/backend/networkdiscovery/network_discovery.go +++ b/agent/backend/networkdiscovery/network_discovery.go @@ -43,6 +43,7 @@ type networkDiscoveryBackend struct { diodeClientID string diodeClientSecret string diodeAppNamePrefix string + diodeOtelEndpoint string startTime time.Time proc backend.Commander @@ -84,6 +85,12 @@ func (d *networkDiscoveryBackend) Configure(logger *slog.Logger, repo policies.P d.diodeClientSecret = common.Diode.ClientSecret d.diodeAppNamePrefix = common.Diode.AgentName + if common.Otel.Grpc != "" { + d.diodeOtelEndpoint = common.Otel.Grpc + d.logger.Info("network-discovery using OTLP metrics endpoint", + slog.String("endpoint", d.diodeOtelEndpoint)) + } + return nil } @@ -112,6 +119,10 @@ func (d *networkDiscoveryBackend) Start(ctx context.Context, cancelFunc context. "--diode-app-name-prefix", d.diodeAppNamePrefix, } + if d.diodeOtelEndpoint != "" { + pvOptions = append(pvOptions, "--otel-endpoint", d.diodeOtelEndpoint) + } + d.logger.Info("network-discovery startup", slog.Any("arguments", pvOptions)) pvOptions[9] = d.diodeClientSecret diff --git a/agent/backend/pktvisor/pktvisor.go b/agent/backend/pktvisor/pktvisor.go index 026c7dd..7b9d54e 100644 --- a/agent/backend/pktvisor/pktvisor.go +++ b/agent/backend/pktvisor/pktvisor.go @@ -7,6 +7,7 @@ import ( "fmt" "log/slog" "net/http" + "net/url" "os" "os/exec" "strconv" @@ -302,9 +303,17 @@ func (p *pktvisorBackend) Configure(logger *slog.Logger, repo policies.PolicyRep p.configFile = tmpFile.Name() - if common.Otel.Host != "" && common.Otel.Port != 0 { - p.otelReceiverHost = common.Otel.Host - p.otelReceiverPort = common.Otel.Port + if common.Otel.HTTP != "" { + uri, err := url.Parse(common.Otel.HTTP) + if err != nil { + return fmt.Errorf("failed to parse otel receiver http url: %w", err) + } + p.otelReceiverHost = uri.Hostname() + port, err := strconv.Atoi(uri.Port()) + if err != nil { + return fmt.Errorf("failed to parse otel receiver port: %w", err) + } + p.otelReceiverPort = port p.logger.Info("configured otel receiver host", slog.String("host", p.otelReceiverHost), slog.Int("port", p.otelReceiverPort)) } diff --git a/agent/backend/worker/worker.go b/agent/backend/worker/worker.go index e8bee41..7600334 100644 --- a/agent/backend/worker/worker.go +++ b/agent/backend/worker/worker.go @@ -43,6 +43,7 @@ type workerBackend struct { diodeClientID string diodeClientSecret string diodeAppNamePrefix string + diodeOtelEndpoint string startTime time.Time proc backend.Commander @@ -84,6 +85,12 @@ func (d *workerBackend) Configure(logger *slog.Logger, repo policies.PolicyRepo, d.diodeClientSecret = common.Diode.ClientSecret d.diodeAppNamePrefix = common.Diode.AgentName + if common.Otel.Grpc != "" { + d.diodeOtelEndpoint = common.Otel.Grpc + d.logger.Info("orb-worker using OTLP metrics endpoint", + slog.String("endpoint", d.diodeOtelEndpoint)) + } + return nil } @@ -112,6 +119,10 @@ func (d *workerBackend) Start(ctx context.Context, cancelFunc context.CancelFunc "--diode-app-name-prefix", d.diodeAppNamePrefix, } + if d.diodeOtelEndpoint != "" { + pvOptions = append(pvOptions, "--otel-endpoint", d.diodeOtelEndpoint) + } + d.logger.Info("worker startup", slog.Any("arguments", pvOptions)) pvOptions[9] = d.diodeClientSecret diff --git a/agent/config/types.go b/agent/config/types.go index 11e1640..1127bc7 100644 --- a/agent/config/types.go +++ b/agent/config/types.go @@ -68,8 +68,8 @@ type ManagerSecrets struct { // BackendCommons represents common configuration for backends type BackendCommons struct { Otel struct { - Host string `yaml:"host"` - Port int `yaml:"port"` + Grpc string `yaml:"grpc"` + HTTP string `yaml:"http"` AgentLabels map[string]string `yaml:"agent_labels"` } `yaml:"otel"` Diode struct {