OpenTelemetry Collector deployment, instrumentation (Java/Python/Node.js/.NET/Go), and OTTL pipeline transforms for Coralogix — coralogix exporter config, Helm chart selection, Kubernetes topology, ECS/EKS/GKE deployments, SDK setup, APM transactions, and OTTL cardinality/PII/routing.
98
97%
Does it follow best practices?
Impact
99%
1.13xAverage score across 81 eval scenarios
Advisory
Suggest reviewing before use
The OpenTelemetry Operator manages OpenTelemetry Collector and auto-instrumentation injection in Kubernetes. It uses Custom Resource Definitions (CRDs) to define the collector topology and instrumentation rules.
otel-integration Helm chartOpenTelemetryCollector CRD modesInstrumentation CRDotel-integration Helm Chart| Feature | OpenTelemetry Operator | otel-integration Helm Chart |
|---|---|---|
| Mechanism | Kubernetes Operator reconciling CRDs | Helm Chart rendering vanilla K8s manifests |
| Primary Resource | OpenTelemetryCollector CRD | DaemonSet / Deployment manifests |
| Configuration | Supplied inside the CRD spec | Supplied via Helm values.yaml |
| Auto-instrumentation | Yes (Instrumentation CRD + Mutating Webhook) | No (Chart only deploys the collector) |
| Coralogix Presets | No native Coralogix presets | Yes (kubernetesResources, hostEntityEvents, etc.) |
When deploying with the Operator, all Coralogix-specific logic (e.g., resource/metadata processor, k8sattributes placement) must be configured manually inside the OpenTelemetryCollector CRD.
The OpenTelemetryCollector CRD defines the collector instance. The mode field determines the Kubernetes deployment topology.
daemonset: One collector per node. Optimal for host metrics, pod logs (filelog), and host-networked k8sattributes passthrough.deployment: A scalable cluster-level collector. Optimal for tail sampling (gateway role) and cluster-scoped metrics (k8s_cluster, kubeletstats).statefulset: Required when stable network identities or persistent storage across restarts are needed.sidecar: Injects a collector container into every application pod matching an annotation. Rarely recommended due to high resource overhead and lack of central batching.apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
name: coralogix-gateway
namespace: coralogix
spec:
mode: deployment
replicas: 3
config:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
processors:
memory_limiter:
check_interval: 1s
limit_percentage: 80
spike_limit_percentage: 25
tail_sampling:
decision_wait: 30s
num_traces: 50000
policies:
- name: errors
type: status_code
status_code:
status_codes: [ERROR]
batch:
timeout: 5s
send_batch_size: 1024
exporters:
coralogix:
domain: "eu2.coralogix.com"
private_key: "${env:CORALOGIX_PRIVATE_KEY}"
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, tail_sampling, batch]
exporters: [coralogix]The Operator uses a mutating webhook to inject auto-instrumentation agents (Java, Python, Node.js, .NET) into application pods.
Instrumentation CRD:apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
name: coralogix-instrumentation
namespace: default
spec:
exporter:
endpoint: http://coralogix-gateway-collector.coralogix.svc.cluster.local:4317
sampler:
type: parentbased_traceidratio
argument: "1"apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
metadata:
annotations:
instrumentation.opentelemetry.io/inject-java: "true"
# Or point directly to the Instrumentation CR:
# instrumentation.opentelemetry.io/inject-java: "default/coralogix-instrumentation"When running the Operator in statefulset mode with Prometheus receivers, the targetAllocator can be enabled directly on the OpenTelemetryCollector CRD to distribute Prometheus scrape targets across the collector replicas.
spec:
mode: statefulset
targetAllocator:
enabled: true
prometheusCR:
enabled: trueevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
scenario-36
scenario-37
scenario-38
scenario-39
scenario-40
scenario-41
scenario-42
scenario-43
scenario-44
scenario-45
scenario-46
scenario-47
scenario-48
scenario-49
scenario-50
scenario-51
scenario-52
scenario-53
scenario-54
scenario-55
scenario-56
scenario-57
scenario-58
scenario-59
scenario-60
scenario-61
scenario-62
scenario-63
scenario-64
scenario-65
scenario-66
scenario-67
scenario-68
scenario-69
scenario-70
scenario-71
scenario-72
scenario-73
scenario-74
scenario-75
scenario-76
scenario-77
scenario-78
scenario-79
scenario-80
scenario-81
skills
opentelemetry
opentelemetry-collector
references
opentelemetry-instrumentation
opentelemetry-ottl