observability

package
v0.33.14 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2026 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseOTLPHeaders added in v0.33.0

func ParseOTLPHeaders(raw string) map[string]string

ParseOTLPHeaders parses the OTEL_EXPORTER_OTLP_HEADERS env var format.

func RecordBrokerAutoclaim added in v0.33.0

func RecordBrokerAutoclaim(ctx context.Context, jobID, result string, count int)

result: "reclaimed" | "dead_letter".

func RecordBrokerCounterPELSkew added in v0.33.1

func RecordBrokerCounterPELSkew(ctx context.Context, jobID string, skew float64)

Persistent non-zero skew = counter leaked (fix-broker-counter-drift). jobID kept for call-site stability; omitted from labels (cardinality).

func RecordBrokerCounterSyncSkew added in v0.33.0

func RecordBrokerCounterSyncSkew(ctx context.Context, jobID string, skew float64)

jobID kept for call-site stability; omitted from labels (cardinality).

func RecordBrokerDispatch added in v0.33.0

func RecordBrokerDispatch(ctx context.Context, jobID, outcome string)

outcome: "ok" | "err" | "capacity" | "paced". jobID kept for call-site stability.

func RecordBrokerMessageAge added in v0.33.0

func RecordBrokerMessageAge(ctx context.Context, jobID string, ageMs float64)

Call once per parsed XREADGROUP message.

func RecordBrokerOutbox added in v0.33.0

func RecordBrokerOutbox(ctx context.Context, backlog int64, oldestAgeSeconds float64)

func RecordBrokerOutboxSweep added in v0.33.1

func RecordBrokerOutboxSweep(ctx context.Context, outcome string, count int)

outcome must be "dispatched" | "retried" | "dead_lettered" (mutually exclusive per row).

func RecordBrokerPELWithoutConsumer added in v0.33.1

func RecordBrokerPELWithoutConsumer(ctx context.Context, count int64)

Healthy reading is always zero; non-zero = dispatch/consume diverged and those jobs' tasks are stalled.

func RecordBrokerPacerDelay added in v0.33.0

func RecordBrokerPacerDelay(ctx context.Context, domain string, delayMs float64)

domain must NOT be a label — unbounded cardinality.

func RecordBrokerPacerPushback added in v0.33.0

func RecordBrokerPacerPushback(ctx context.Context, domain, reason string)

reason: "gate" (domain-gate NX hold) | "rate_limited" (release feedback). domain must NOT be a label — unbounded cardinality.

func RecordBrokerRedisPing added in v0.33.0

func RecordBrokerRedisPing(ctx context.Context, duration time.Duration, ok bool)

func RecordBrokerRedisPool added in v0.33.0

func RecordBrokerRedisPool(ctx context.Context, snap RedisPoolSnapshot)

func RecordBrokerStreamStats added in v0.33.0

func RecordBrokerStreamStats(ctx context.Context, s BrokerStreamStats)

Per-job drill-down lives on traces/logs (which carry job_id), not metrics.

func RecordCrawlerPhase added in v0.32.6

func RecordCrawlerPhase(ctx context.Context, metrics CrawlerPhaseMetrics)

func RecordDBPoolRejection

func RecordDBPoolRejection(ctx context.Context)

func RecordDBPoolStats

func RecordDBPoolStats(ctx context.Context, snapshot DBPoolSnapshot)

func RecordDBPressureAdjustment added in v0.32.0

func RecordDBPressureAdjustment(ctx context.Context, direction string)

direction must be "up" or "down".

func RecordDBPressureStats added in v0.32.0

func RecordDBPressureStats(ctx context.Context, emaMs float64, limit int32)

Call alongside RecordDBPoolStats for a complete pool+pressure snapshot.

func RecordFDStats added in v0.31.4

func RecordFDStats(ctx context.Context, current, limit int, pressure float64)

func RecordHTMLPersistBodyBytes added in v0.33.9

func RecordHTMLPersistBodyBytes(ctx context.Context, bytes int64)

func RecordHTMLPersistQueueDepth added in v0.33.9

func RecordHTMLPersistQueueDepth(ctx context.Context, depth int)

Used to tune the HTML_PERSIST_QUEUE / HTML_PERSIST_WORKERS ratio.

func RecordHTMLPersistUpload added in v0.33.9

func RecordHTMLPersistUpload(ctx context.Context, outcome string)

outcome: "ok" | "err" | "skipped".

func RecordHTMLPersistUploadDuration added in v0.33.9

func RecordHTMLPersistUploadDuration(ctx context.Context, duration time.Duration)

func RecordJobConcurrencySnapshot

func RecordJobConcurrencySnapshot(ctx context.Context, jobID string, runningTasks int64, concurrencyLimit int64, unlimited bool)

jobID kept for call-site stability; omitted from labels (cardinality).

func RecordJobInfoCacheHit

func RecordJobInfoCacheHit(ctx context.Context, jobID string)

jobID kept for call-site stability; omitted from labels (cardinality).

func RecordJobInfoCacheInvalidation

func RecordJobInfoCacheInvalidation(ctx context.Context, jobID, reason string)

func RecordJobInfoCacheMiss

func RecordJobInfoCacheMiss(ctx context.Context, jobID string)

func RecordJobInfoCacheSize

func RecordJobInfoCacheSize(ctx context.Context, size int)

func RecordLighthouseRun added in v0.33.10

func RecordLighthouseRun(ctx context.Context, jobID, outcome string)

outcome: "succeeded" | "failed" | "skipped_quota" | "shed". "shed" = soft memory-shed circuit breaker deferred the audit; a rising shed rate means the analysis fleet is memory-saturated.

func RecordLighthouseRunDuration added in v0.33.10

func RecordLighthouseRunDuration(ctx context.Context, jobID, outcome string, durationMs float64)

outcome label is load-bearing — failures cluster at timeout and would otherwise distort the success-path latency distribution.

func RecordLighthouseRunRetry added in v0.33.10

func RecordLighthouseRunRetry(ctx context.Context, jobID, reason string)

reason MUST come from the runner's transientStderrSubstrings list (e.g. "target_crashed"); never pass free-form error text — cardinality.

func RecordLighthouseScheduled added in v0.33.10

func RecordLighthouseScheduled(ctx context.Context, jobID, band string, count int)

band: "fastest" | "slowest" | "reconcile". jobID kept for call-site stability.

func RecordSemaphoreWait added in v0.32.0

func RecordSemaphoreWait(ctx context.Context, waitMs float64)

func RecordTaskClaimAttempt

func RecordTaskClaimAttempt(ctx context.Context, jobID string, latency time.Duration, status string)

jobID kept for call-site stability; omitted from labels (cardinality).

func RecordTaskWaiting

func RecordTaskWaiting(ctx context.Context, jobID string, reason string, count int)

func RecordWorkerConcurrency

func RecordWorkerConcurrency(ctx context.Context, workerID int, delta int64, capacity int64)

delta: +1 starting, -1 completing. capacity: pass >0 only on startup.

func RecordWorkerTask

func RecordWorkerTask(ctx context.Context, metrics WorkerTaskMetrics)

job.id must NOT be a metric label — Prometheus active-series cardinality. Per-job pivot lives on the worker.process_task span attributes.

func RecordWorkerTaskFailure

func RecordWorkerTaskFailure(ctx context.Context, jobID string, reason string)

func RecordWorkerTaskOutcome added in v0.32.6

func RecordWorkerTaskOutcome(ctx context.Context, metrics WorkerTaskOutcomeMetrics)

func RecordWorkerTaskRetry

func RecordWorkerTaskRetry(ctx context.Context, jobID string, reason string)

func StartWorkerTaskSpan

func StartWorkerTaskSpan(ctx context.Context, info WorkerTaskSpanInfo) (context.Context, trace.Span)

func WrapHandler

func WrapHandler(handler http.Handler, prov *Providers) http.Handler

Types

type BrokerStreamStats added in v0.33.0

type BrokerStreamStats struct {
	StreamLength   int64
	ScheduledDepth int64
	Pending        int64
}

Pre-aggregated across active jobs; the per-job job.id label was dropped for Mimir cardinality and dashboards already used sum(...).

type Config

type Config struct {
	Enabled        bool
	ServiceName    string
	Environment    string
	OTLPEndpoint   string
	OTLPHeaders    map[string]string
	OTLPInsecure   bool
	MetricsAddress string
}

type CrawlerPhaseMetrics added in v0.32.6

type CrawlerPhaseMetrics struct {
	Phase    string
	Outcome  string
	Duration time.Duration
}

type DBPoolSnapshot

type DBPoolSnapshot struct {
	InUse        int
	Idle         int
	WaitCount    int64
	WaitDuration time.Duration
	MaxOpen      int
	Reserved     int
	Usage        float64
}

type Providers

type Providers struct {
	TracerProvider *sdktrace.TracerProvider
	MeterProvider  *sdkmetric.MeterProvider
	Propagator     propagation.TextMapPropagator
	MetricsHandler http.Handler
	Shutdown       func(ctx context.Context) error
	Config         Config
}

func Init

func Init(ctx context.Context, cfg Config) (*Providers, error)

type RedisPoolSnapshot added in v0.33.0

type RedisPoolSnapshot struct {
	InUse int64
	Idle  int64
	Waits int64
}

type WorkerTaskMetrics

type WorkerTaskMetrics struct {
	JobID         string
	Status        string
	Duration      time.Duration
	QueueWait     time.Duration
	TotalDuration time.Duration
}

type WorkerTaskOutcomeMetrics added in v0.32.6

type WorkerTaskOutcomeMetrics struct {
	JobID    string
	Outcome  string
	Reason   string
	Duration time.Duration
}

type WorkerTaskSpanInfo

type WorkerTaskSpanInfo struct {
	JobID     string
	TaskID    string
	Domain    string
	Path      string
	FindLinks bool
}

Jump to

Keyboard shortcuts

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