<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #44652 Docs: https://github.com/fleetdm/fleet/pull/46631 # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. See [Changes files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files) for more information. - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] Added/updated automated tests - [x] QA'd all new/changed functionality manually ## Database migrations - [x] Ensured the correct collation is explicitly set for character columns (`COLLATE utf8mb4_unicode_ci`). ## New Fleet configuration settings - [x] Setting(s) is/are explicitly excluded from GitOps <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Route-aware OpenTelemetry trace sampling with tiered default ratios (very low for select high-volume routes, reduced rate for admin reads, full sampling otherwise). * Admin-only GET/PATCH /debug/trace_sampler to view and update sampling ratios and a runtime "force full" toggle. * Liveness probe endpoints (/healthz, /version, /metrics) are excluded from tracing; settings propagate to replicas at runtime without restart. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
14 lines
634 B
Go
14 lines
634 B
Go
package tracing
|
|
|
|
import "time"
|
|
|
|
// Settings is the runtime tunable head sampling configuration. The settings live in the trace_sampler_settings singleton row
|
|
// and are polled by each Fleet replica so support can adjust sampling without a restart.
|
|
type Settings struct {
|
|
HighVolumeRatio float64 `json:"high_volume_ratio" db:"high_volume_ratio"`
|
|
StandardRatio float64 `json:"standard_ratio" db:"standard_ratio"`
|
|
ForceFull bool `json:"force_full" db:"force_full"`
|
|
// UpdatedAt uses omitzero so the PATCH handler can zero it before echoing the response.
|
|
UpdatedAt time.Time `json:"updated_at,omitzero" db:"updated_at"`
|
|
}
|