Help us shape the future of Go! Take the 2026 Go Developer Survey

agent

package
v0.69.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2025 License: Apache-2.0 Imports: 30 Imported by: 7

Documentation

Overview

Package agent implements the trace-agent.

Index

Constants

View Source
const (
	// MaxMetaKeyLen the maximum length of metadata key
	MaxMetaKeyLen = 200
	// MaxMetaValLen the maximum length of metadata value
	MaxMetaValLen = 25000
	// MaxMetricsKeyLen the maximum length of a metric name key
	MaxMetricsKeyLen = MaxMetaKeyLen
)
View Source
const (
	// MaxTypeLen the maximum length a span type can have
	MaxTypeLen = 100
)

Variables

View Source
var (
	// Year2000NanosecTS is an arbitrary cutoff to spot weird-looking values
	Year2000NanosecTS = time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC).UnixNano()
)

Functions

This section is empty.

Types

type Agent

type Agent struct {
	Receiver              *api.HTTPReceiver
	OTLPReceiver          *api.OTLPReceiver
	Concentrator          Concentrator
	ClientStatsAggregator *stats.ClientStatsAggregator
	Blacklister           *filters.Blacklister
	Replacer              *filters.Replacer
	PrioritySampler       *sampler.PrioritySampler
	ErrorsSampler         *sampler.ErrorsSampler
	RareSampler           *sampler.RareSampler
	NoPrioritySampler     *sampler.NoPrioritySampler
	ProbabilisticSampler  *sampler.ProbabilisticSampler
	SamplerMetrics        *sampler.Metrics
	EventProcessor        *event.Processor
	TraceWriter           TraceWriter
	StatsWriter           *writer.DatadogStatsWriter
	RemoteConfigHandler   *remoteconfighandler.RemoteConfigHandler
	TelemetryCollector    telemetry.TelemetryCollector
	DebugServer           *api.DebugServer
	Statsd                statsd.ClientInterface
	Timing                timing.Reporter

	// DiscardSpan will be called on all spans, if non-nil. If it returns true, the span will be deleted before processing.
	DiscardSpan func(*pb.Span) bool

	// SpanModifier will be called on all non-nil spans of received trace chunks.
	// Note that any modification of the trace chunk could be overwritten by
	// subsequent SpanModifier calls.
	SpanModifier SpanModifier

	// TracerPayloadModifier will be called on all tracer payloads early on in
	// their processing. In particular this happens before trace chunks are
	// meaningfully filtered or modified.
	TracerPayloadModifier TracerPayloadModifier

	// In takes incoming payloads to be processed by the agent.
	In chan *api.Payload
	// contains filtered or unexported fields
}

Agent struct holds all the sub-routines structs and make the data flow between them

func NewAgent

func NewAgent(ctx context.Context, conf *config.AgentConfig, telemetryCollector telemetry.TelemetryCollector, statsd statsd.ClientInterface, comp compression.Component) *Agent

NewAgent returns a new Agent object, ready to be started. It takes a context which may be cancelled in order to gracefully stop the agent.

func (*Agent) FlushSync

func (a *Agent) FlushSync()

FlushSync flushes traces synchronously. This method only works when the agent is configured in synchronous flushing mode via the apm_config.sync_flush option.

func (*Agent) Process

func (a *Agent) Process(p *api.Payload)

Process is the default work unit that receives a trace, transforms it and passes it downstream.

func (*Agent) ProcessStats

func (a *Agent) ProcessStats(in *pb.ClientStatsPayload, lang, tracerVersion, containerID, obfuscationVersion string)

ProcessStats processes incoming client stats in from the given tracer.

func (*Agent) Run

func (a *Agent) Run()

Run starts routers routines and individual pieces then stop them when the exit order is received.

func (*Agent) SetGlobalTagsUnsafe

func (a *Agent) SetGlobalTagsUnsafe(tags map[string]string)

SetGlobalTagsUnsafe sets global tags to the agent configuration. Unsafe for concurrent use.

func (*Agent) Truncate added in v0.44.0

func (a *Agent) Truncate(s *pb.Span)

Truncate checks that the span resource, meta and metrics are within the max length and modifies them if they are not

func (*Agent) TruncateResource added in v0.44.0

func (a *Agent) TruncateResource(r string) (string, bool)

TruncateResource truncates a span's resource to the maximum allowed length. It returns true if the input was below the max size.

func (*Agent) UpdateAPIKey added in v0.59.0

func (a *Agent) UpdateAPIKey(oldKey, newKey string)

UpdateAPIKey receives the API Key update signal and propagates it across all internal components that rely on API Key configuration: - HTTP Receiver (used in reverse proxies) - Trace Writer senders - Stats Writer senders

type Concentrator added in v0.56.0

type Concentrator interface {
	// Start starts the Concentrator
	Start()
	// Stop stops the Concentrator and attempts to flush whatever is left in the buffers
	Stop()
	// Add a stats Input to be concentrated and flushed
	Add(t stats.Input)
}

Concentrator accepts stats input, 'concentrating' them together into buckets before flushing them

type SpanModifier added in v0.57.0

type SpanModifier interface {
	ModifySpan(*pb.TraceChunk, *pb.Span)
}

SpanModifier is an interface that allows to modify spans while they are processed by the agent.

type TraceWriter added in v0.56.0

type TraceWriter interface {
	// Stop stops the TraceWriter and attempts to flush whatever is left in the senders buffers.
	Stop()

	// WriteChunks to be written
	WriteChunks(pkg *writer.SampledChunks)

	// FlushSync blocks and sends pending payloads when syncMode is true
	FlushSync() error

	// UpdateAPIKey signals the TraceWriter to update the API Keys stored in its senders config.
	UpdateAPIKey(oldKey, newKey string)
}

TraceWriter provides a way to write trace chunks

type TracerPayloadModifier added in v0.69.0

type TracerPayloadModifier interface {
	Modify(*pb.TracerPayload)
}

TracerPayloadModifier is an interface that allows tracer implementations to modify a TracerPayload as it is processed in the Agent's Process method.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL