common

package
v0.67.1 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package common provides shared utilities and components for Alloy agent configuration.

This package contains common functionality used across different Alloy agent types (metrics, logs, events) including:

  • Secret template generation for agent credentials and configuration
  • Shared label constants and utilities
  • Common configuration patterns

The common package promotes code reuse and consistency across all agent types while maintaining a clear separation of concerns.

Index

Constants

View Source
const (
	// PriorityClassName is the pod priority class for critical Alloy agent workloads
	PriorityClassName = "giantswarm-critical"

	// LokiBaseURLFormat is the base URL template for Loki write endpoints
	LokiBaseURLFormat = "https://write.loki.%s"
	// LokiPushURLFormat is the full URL template for Loki's push API
	LokiPushURLFormat = LokiBaseURLFormat + "/loki/api/v1/push"

	// Loki secret keys for authentication and endpoint configuration
	LokiURLKey         = "logging-url"           // URL for Loki push endpoint
	LokiTenantIDKey    = "logging-tenant-id"     // Tenant ID for multi-tenancy
	LokiUsernameKey    = "logging-username"      // Username for basic auth
	LokiPasswordKey    = "logging-password"      // Password for basic auth
	LokiRulerAPIURLKey = "logging-ruler-api-url" // URL for Loki ruler API
	// Loki OTLP configuration
	LokiOTLPBaseURLFormat = LokiBaseURLFormat + "/otlp" // Base URL for Loki OTLP — exporter appends /v1/logs
	LokiOTLPURLKey        = "logging-otlp-url"          // Secret key: base URL for Loki OTLP write (WC only)

	// Loki performance tuning parameters
	LokiMaxBackoffPeriod = "10m" // Maximum backoff period for retries
	LokiRemoteTimeout    = "60s" // Timeout for remote write operations

	// Tempo secret keys for authentication and endpoint configuration
	TempoUsernameKey = "tracing-username" // Username for Tempo authentication
	TempoPasswordKey = "tracing-password" // Password for Tempo authentication
	TempoOTLPURLKey  = "tracing-otlp-url" // gRPC endpoint in host:port format

	// TempoBaseURLFormat is the URL template for Tempo ingress
	TempoBaseURLFormat = "tempo.%s"

	// --- OTLP Batch Processor Configuration ---
	// Controls the otelcol.processor.batch block shared by all OTLP pipelines (traces, metrics, logs).
	// Tune here if an installation shows export latency or oversized payloads; do not expose via Helm
	// values since these are internal Alloy pipeline knobs, not user-facing behaviour toggles.
	//
	// Batch sizes set to 1024 to balance throughput with the gRPC server's default 4 MB decompressed
	// message limit (4,194,304 bytes). At observed average payload size of 1.6 KB/item:
	// 1024 items × 1.6 KB = 1.6 MB — 2.5× safety margin from 4 MB limit.
	// Maximum payload risk at 8 KB/item: 1024 × 8 KB = 8 MB would exceed limit, but mitigated by
	// timeout: items rarely reach 8 KB in practice, and timeout forces flush before saturation.
	// Increased timeout to 500ms to give exporters (Mimir, Loki, Tempo) adequate time to process
	// batches, reducing "sending queue is full" backpressure when export destinations are slow.
	// send_batch_max_size must be ≥ send_batch_size (otelcol validates this at startup).
	OTLPBatchSendBatchSize = 1024    // Flush when this many items queued (must be ≤ OTLPBatchMaxSize)
	OTLPBatchMaxSize       = 1024    // Hard cap: prevents batches from exceeding 4 MB gRPC limit with safety margin
	OTLPBatchTimeout       = "500ms" // Maximum wait before flushing an incomplete batch

	// Mimir default values and URL templates
	MimirRemoteWriteName              = "mimir"                             // Default remote write name
	MimirBaseURLFormat                = "https://mimir.%s"                  // Base URL template for Mimir
	MimirRemoteWriteEndpointURLFormat = MimirBaseURLFormat + "/api/v1/push" // Full remote write endpoint URL
	MimirQueryEndpointURLFormat       = MimirBaseURLFormat + "/prometheus"  // Prometheus-compatible query endpoint for KEDA
	MimirRemoteWriteTimeout           = "60s"                               // Timeout for remote write operations

	// Mimir secret keys for remote write configuration and authentication.
	MimirQueryAPIURLKey        = "metrics-query-url"         // URL for Mimir query endpoint
	MimirRulerAPIURLKey        = "metrics-ruler-url"         // URL for Mimir ruler API
	MimirUsernameKey           = "metrics-username"          // Username for Mimir remote write and OTLP auth
	MimirPasswordKey           = "metrics-password"          // Password for Mimir remote write and OTLP auth
	MimirRemoteWriteAPIURLKey  = "metrics-remote-write-url"  // URL for remote write endpoint
	MimirRemoteWriteAPINameKey = "metrics-remote-write-name" // Name identifier for remote write

	MimirOTLPBaseURLFormat = MimirBaseURLFormat + "/otlp" // Base URL for Mimir OTLP — exporter appends /v1/metrics
	MimirOTLPURLKey        = "metrics-otlp-url"           // Secret key: base URL for Mimir OTLP write (WC only)

	// CABundleKey is the secret key for the PEM-encoded CA certificate used by Alloy to verify
	// TLS connections to Loki, Mimir, and Tempo on private-CA installations.
	// Absent on public-CA installations; Alloy falls back to the system trust store.
	CABundleKey = "ca-bundle"
)

Variables

This section is empty.

Functions

func GenerateSecretData

func GenerateSecretData(secrets map[string]string, extraObjects string) ([]byte, error)

GenerateSecretData generates the secret data for an Alloy agent using the shared template. It takes a map of environment variable key-value pairs and an optional extraObjects YAML string to include as Helm extraObjects (e.g. KEDA resources). The extraObjects content will be indented under the alloy.extraObjects key in the output.

func ReadCABundle added in v0.67.1

func ReadCABundle(ctx context.Context, c client.Client, clusterCfg config.ClusterConfig) (string, error)

ReadCABundle reads the CA certificate PEM from the configured Secret. Returns an empty string on public-CA installations where CASecretName is empty, in which case Alloy uses the system trust store.

Types

This section is empty.

Jump to

Keyboard shortcuts

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