CollectorCtrl — Understanding Config Sources & Governance
Note
Audience: End users, DevOps engineers, SREs, and Platform / Observability teams using CollectorCtrl.
1. Overview: What is "Config Source"?
In the CollectorCtrl Fleet Overview, each OpenTelemetry Collector displays a badge under the CONFIG SOURCE column.
This column tells you where the collector's running configuration originates and how it is currently governed:
| Config Source Badge | Backend Value | Meaning at a Glance |
|---|---|---|
policy | Governed 100% by centralized fleet policies synchronized with Git. Standard, compliant state. | |
manual | Has a node-specific custom configuration applied directly to this agent, overriding the baseline. | |
default | Not attached to any fleet policy or override; runs standalone default settings. |
CONFIG SOURCE HIERARCHY
Central Git Repository (Base + Templates)
│
▼
┌──────────────────────────────────┐
│ GitOps Baseline │ ◄── Standard Fleet Configuration
│ (Governed by Fleet Policy) │ (Green Badge)
└─────────────────┬────────────────┘
│
Does node have a local override?
│
┌────────────┴────────────┐
NO │ │ YES
▼ ▼
┌──────────────────┐ ┌─────────────────────────┐
│ GitOps Baseline │ │ GitOps Node Override │ ◄── Custom Node Tweaks
│ (Pure Policy) │ │ (Merged: Policy + Node) │ (Amber Badge)
└──────────────────┘ └─────────────────────────┘
2. Deep Dive: The Three Config Sources
1. GitOps Baseline (Green Badge)
- What it means:
The collector is strictly inheriting its configuration from an Authoritative Fleet Policy defined by the Central Observability / Platform Team and stored in Git version control. - How it works:
- The collector reports its metadata (environment, operating system, hostname, compute type, cluster tags) during its OpAMP handshake.
- CollectorCtrl matches these attributes against policy target selectors (
matchLabelsandmatchExpressions). - The matching policy’s YAML configuration (from Git repositories such as
base/andtemplates/) is compiled and deployed to the collector.
- When you see this:
This is the ideal operational state for 99%+ of collectors in production. It guarantees fleet consistency, compliance, security guardrails (PII masking, memory limiters), and cost controls. - Modifying configuration:
Changes should be made upstream in the GitOps repository via Pull Request (PR) or in the Central Policy management view.
2. GitOps Node Override (Amber / Orange Badge)
- What it means:
An operator has applied a custom, instance-level configuration override (CustomInstanceConfig) directly to this specific collector. - Why it is flagged with an amber warning:
While node overrides are fully supported as an operational escape hatch, they create a divergent state ("snowflake") where the collector is no longer purely governed by fleet-wide policies. - How it works (Precedence & Deep Merge):
CollectorCtrl does not erase the policy baseline. Instead, its deep merge engine combines the baseline with the node override:- Key Overrides: If the baseline sets
batch: { timeout: 5s }and the node override specifiesbatch: { timeout: 1s }, the override wins. - Additive Blocks: If the override introduces a new receiver (e.g.
prometheus/local: ...), it is merged into the active pipeline.
- Key Overrides: If the baseline sets
- Common Use Cases:
- Emergency Troubleshooting: Enabling verbose debug logging (
log: { level: debug }) on a single problematic node without flooding the rest of the fleet. - Temporary High-Frequency Sampling: Lowering scrape intervals to 1s to capture an ongoing incident.
- Hardware/Host Unique Requirements: Adding a custom path or local file log scraper unique to a single server.
- Emergency Troubleshooting: Enabling verbose debug logging (
- Reverting to Baseline:
When troubleshooting is complete, operators can click Remove Override in the Collector Detail View. The collector immediately returns to GitOps Baseline status.
3. Default (Gray Badge)
- What it means:
The collector is connected to CollectorCtrl, but:- It does not match any active Fleet Policy (
agent.PolicyID == ""). - It has no custom instance override (
agent.CustomInstanceConfig == "").
- It does not match any active Fleet Policy (
- How it behaves:
The agent operates using its built-in fallback configuration (default supervisor baseline). - Recommended Action:
Check the collector's tags and environment attributes. Assign the collector to an appropriate environment or create a fleet policy matching its labels to bring it under centralized GitOps governance.
3. Configuration Merge Engine & Precedence
When CollectorCtrl generates the executable YAML sent to a collector via OpAMP, it evaluates layers according to the 4-Tier Policy Architecture:
Tier 0: Global Base Layer (e.g., base/00-global-base.yaml)
└── Global OTLP sinks, proxy certs, memory limiter guardrails
Tier 1: Template / Policy Layer (e.g., templates/linux-vm-standard.yaml)
└── Host metrics, standard file logs, common processors
Tier 2: Cluster Layer (e.g., clusters/aws-eks-prod.yaml)
└── K8s attributes processor, cluster-specific endpoints
Tier 3: Node Override Layer (e.g., overrides/<hostname>.yaml)
└── Node-specific custom YAML defined in CollectorCtrl UI
─────────────────────────────────────────────────────────────────────────────
▼ DEEP MERGE
EFFECTIVE CONFIGURATION (Live on Agent)
Precedence Rules:
- Tier 3 (Node Override) wins over Tier 2, Tier 1, and Tier 0 for conflicting scalar fields.
- Pipelines and maps are merged cleanly, ensuring baseline security processors (like
memory_limiterorresourcedetection) remain intact unless explicitly altered. - Telemetric Taps (if active) are dynamically injected at runtime.
4. How to Inspect & Manage Config Sources in the UI
A. In the Fleet Table
- Look at the CONFIG SOURCE column.
- Use the Quick Filter bar:
- Click Manual Config to filter for all nodes currently running with GitOps Node Override.
- Easily audit snowflake nodes across thousands of agents.
B. In the Collector Detail View
Navigating to an individual collector reveals the Configuration Hierarchy Panel:
- Step 1: Policy Baseline
Shows the assigned fleet policy name and environment (e.g.,linux-prod-policy). - Step 2: Node Override
- Displays "No Override" (Inheriting policy baseline) if running pure GitOps.
- Displays "Custom Active" (Custom rules taking precedence) if a node override exists.
- Step 3: Effective Config
Displays the final, compiled YAML that is currently running live on the collector.
Working with the Config Tabs:
📄 Effective Config (Live)Tab:
Read-only view of the exact compiled YAML delivered to the collector over OpAMP WebSocket.✏️ Node OverrideTab:
Interactive YAML editor allowing authorized engineers to add custom overrides.Remove OverrideButton:
Located above the YAML editor. Clicking this deletes the instance override from the database and Git, automatically restoring the collector to the pure GitOps Baseline.
5. GitOps Integration & Auditability
When GitOps synchronization is enabled:
- Policies are synchronized with Git repositories (
/baseand/templates). - Node Overrides created in the UI are automatically tracked and exported to the
/overrides/<hostname>.yamldirectory in Git. - Drift Detection: CollectorCtrl continuously checks the running configuration hash reported by the OpAMP supervisor against the Git target hash. Any unauthorized local tampering on the host machine triggers a
⚠️ Config Driftindicator.
6. Best Practices for End Users
- Aim for GitOps Baseline: Keep collectors on
GitOps Baselinewhenever possible for predictable telemetry pipelines and zero configuration drift. - Treat Overrides as Ephemeral: Use
GitOps Node Overridefor active troubleshooting or local testing, and remove the override once the issue is resolved. - Promote Recurring Overrides to Policies: If multiple nodes require the same override settings, request the Central Observability Team to incorporate those settings into a reusable GitOps template.
CollectorCtrl