Use Cases
Common scenarios and complete configurations for real-world deployments.
CDEvents Transformation Disclaimer
VRL templates in these examples may be incomplete, outdated, or incorrect. For production use: consult the CDEvents specification and use provided transformers at /etc/cdviz-collector/transformers/ (GitHub, etc.).
Development & Testing
Local Development
[sources.test_webhook]
enabled = true
[sources.test_webhook.extractor]
type = "webhook"
id = "test"
[sinks.debug]
enabled = true
type = "debug"
[sinks.files]
enabled = true
type = "folder"
kind = "fs"
parameters = { root = "./dev-events" }Use: Test configurations, debug event flow, local development.
CI/CD Pipeline Testing
[sources.build_events]
enabled = true
transformer_refs = ["to_cdevents"]
[sources.build_events.extractor]
type = "opendal"
kind = "fs"
polling_interval = "10s"
path_patterns = ["build-events/*.json"]
parser = "json"
parameters = { root = "./ci-outputs" }
[transformers.to_cdevents]
type = "vrl"
template_file = "./transforms/ci-events.vrl"
[sinks.validation]
enabled = true
type = "folder"
kind = "fs"
parameters = { root = "./validated-events" }Use: Validate event transformation in CI pipelines.
Production Deployments
Single Instance (Simple)
One collector handles all event types - good for small to medium scale setups:
GitHub ────┐
├─→ CDviz Collector ─→ Database
Jenkins ───┘ └─→ ArchiveSingle Collector Configuration
[sources.api_webhooks]
enabled = true
transformer_refs = ["api_to_cdevents"]
[sources.api_webhooks.extractor]
type = "webhook"
id = "api"
[sources.log_files]
enabled = true
transformer_refs = ["logs_to_cdevents"]
[sources.log_files.extractor]
type = "opendal"
kind = "s3"
polling_interval = "5m"
path_patterns = ["logs/**/*.jsonl"]
parser = "jsonl"
[sinks.database]
enabled = true
type = "db"
# URL from environment
[sinks.archive]
enabled = true
type = "folder"
kind = "s3"Use: Centralized collection for small to medium deployments.
Multiple Instances (Scalable)
Different collectors for different purposes - good for high scale, separation of concerns:
GitHub ─→ Collector A ─┐
├─→ Database
GitLab ─→ Collector B ─┘
└─→ Analytics API
Files ──→ Collector C ─→ ArchiveMulti-Collector Configuration
# Edge Collector - Regional event collection
[sources.regional_webhooks]
enabled = true
[sources.regional_webhooks.extractor]
type = "webhook"
id = "region-us-east"
[sinks.central_collector]
enabled = true
type = "http"
url = "https://central-collector.internal/webhooks/regional"# Central Collector - Aggregation and storage
[sources.regional_events]
enabled = true
[sources.regional_events.extractor]
type = "webhook"
id = "regional"
[sinks.master_database]
enabled = true
type = "db"
[sinks.analytics_api]
enabled = true
type = "http"
url = "https://analytics.company.com/events"Use: Distributed collection with centralized processing.
Specific Integrations
GitHub Repository Events
[sources.github]
enabled = true
transformer_refs = ["github_events"]
[sources.github.extractor]
type = "webhook"
id = "github"
headers_to_keep = ["X-GitHub-Event"]
[[sources.github.extractor.headers]]
header = "X-Hub-Signature-256"
[sources.github.extractor.headers.rule]
type = "signature"
# token from environment
[transformers.github_events]
type = "vrl"
template_file = "/etc/cdviz-collector/transformers/github_events.vrl"Use: Standard GitHub webhook integration. See GitHub Integration.
Kubernetes Cluster Events
[sources.k8s_events]
enabled = true
transformer_refs = ["kubewatch_to_cdevents"]
[sources.k8s_events.extractor]
type = "webhook"
id = "kubewatch"
[transformers.kubewatch_to_cdevents]
type = "vrl"
template = '''
[{
"body": {
"context": {
"type": "dev.cdevents.environment.modified.0.1.1",
"source": "/k8s/" + (.body.namespace // "default")
},
"subject": {
"id": .body.name,
"type": .body.kind
}
}
}]
'''Use: Kubernetes cluster monitoring. See Kubernetes Integration.
Build Artifact Processing
[sources.build_artifacts]
enabled = true
transformer_refs = ["artifact_metadata"]
[sources.build_artifacts.extractor]
type = "opendal"
kind = "s3"
polling_interval = "2m"
path_patterns = ["builds/**/*.json", "releases/**/*.json"]
parser = "json"
parameters = { bucket = "ci-artifacts" }
[transformers.artifact_metadata]
type = "vrl"
template = '''
[{
"body": {
"context": {
"type": "dev.cdevents.artifact.published.0.2.0",
"source": "/ci/artifacts"
},
"subject": {
"id": .body.artifact_id,
"type": "artifact",
"content": {
"url": .body.download_url,
"digest": { "sha256": .body.sha256 }
}
}
}
}]
'''
[sinks.artifact_db]
enabled = true
type = "db"
[sinks.notifications]
enabled = true
type = "http"
url = "https://notifications.company.com/webhooks/artifacts"Use: Monitor and track build artifacts across environments.
Advanced Patterns
Multi-Environment with Filtering
# Production events only
[sources.prod_api]
enabled = true
transformer_refs = ["env_filter", "to_cdevents"]
[sources.prod_api.extractor]
type = "webhook"
id = "prod"
[transformers.env_filter]
type = "vrl"
template = '''
if .body.environment != "production" {
[] # Discard non-production events
} else {
[.] # Pass through production events
}
'''
[transformers.to_cdevents]
type = "vrl"
template_file = "./transforms/api-events.vrl"Use: Environment-specific event processing with filtering.
Event Splitting and Enrichment
[sources.batch_events]
enabled = true
transformer_refs = ["split_batch", "enrich_metadata"]
[sources.batch_events.extractor]
type = "webhook"
id = "batch"
[transformers.split_batch]
type = "vrl"
template = '''
# Split batch into individual events
map_values(.body.events) -> |event| {
{
"metadata": .metadata,
"headers": .headers,
"body": event
}
}
'''
[transformers.enrich_metadata]
type = "vrl"
template = '''
[{
"metadata": merge(.metadata, {
"region": "${AWS_REGION}",
"processed_at": now()
}),
"headers": .headers,
"body": .body
}]
'''Use: Process batch events and add runtime metadata.
Next Steps
- Configuration Guide - Understand configuration structure
- Sources - Configure specific event sources
- Transformers - Learn VRL transformation language
- Sinks - Configure event destinations
- GitHub Integration - Ready-made GitHub integration