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 Coralogix-flavored OpenTelemetry Collector — the coralogix exporter, the
otel-integration Helm chart for Kubernetes, CDOT for ECS, and the universal installer
for standalone hosts. Load this skill when a user is deploying, configuring, or
debugging a collector that ships to Coralogix. Most failures come down to a handful of
Coralogix-specific defaults that vanilla OpenTelemetry docs don't cover.
| Use case | Reference |
|---|---|
Configure the coralogix exporter (domain, private key, app/subsystem) | config-exporters.md · config-processors.md |
| Infrastructure Explorer / Resource Catalog | preset-kubernetes.md |
| Pick a deployment mode | setup-index.md |
Kubernetes — otel-integration Helm chart (EKS/GKE/AKS/OpenShift/Autopilot/EKS Fargate) | setup-kubernetes.md |
| OpenTelemetry Operator / Target Allocator | setup-opentelemetry-operator.md |
| ECS EC2 (Linux daemonset) | setup-ecs-ec2.md |
| ECS Fargate (sidecar) | setup-ecs-fargate.md |
| Linux / macOS standalone | setup-linux-standalone.md |
| Windows standalone | setup-windows-standalone.md |
| Universal installer (all OS) | setup-installer.md |
spanmetrics, tail_sampling, k8sattributes placement | config-connectors.md |
Span Metrics DB labels differ between calls_total and db_calls_total | config-connectors.md — place DB label compatibility transforms under top-level spanMetrics.transformStatements |
Memory — memory_limiter firing, RSS vs Go heap | ops-memory-performance.md |
| Troubleshoot "no data", "no traces", "Resource Catalog empty" | ops-troubleshooting.md |
| OpAMP supervisor / Fleet Manager config overlap | preset-fleet-management.md |
For these recurring cases, include the exact corrective detail in the final answer. These are also the authoritative statements of Coralogix-specific defaults — do not contradict them elsewhere in the answer.
domain: is a bare hostname, not a URL. eu2.coralogix.com — not https://ingress.eu2.coralogix.com, not a UI hostname.${env:CORALOGIX_PRIVATE_KEY}, not $CORALOGIX_PRIVATE_KEY — unbracketed form silently fails in v0.76+.coralogix/resource_catalog exporter for Infrastructure Explorer
with the x-coralogix-ingress: metadata-as-otlp-logs/v1 header. The default
coralogix exporter won't light up the entity views.Minimal working exporter config:
exporters:
coralogix:
domain: "coralogix.com" # Replace with your specific Coralogix domain (e.g., coralogix.us, coralogix.in)
private_key: "${env:CORALOGIX_PRIVATE_KEY}"
application_name: "your_application_name"
subsystem_name: "your_subsystem_name"memory_limiter first, batch last.k8sattributes extraction — typically gateway; agents use passthrough: true.spanmetrics on agent (before sampling), tail_sampling on gateway. Run transactions/groupbytrace/transactions before spanmetrics; never on both agent and gateway simultaneously — this causes double-counting because each tier sees all spans and emits separate metric series that accumulate.spanMetrics.transformStatements. Do not put them only under
spanMetrics.dbMetrics.transformStatements; that can populate
db_calls_total while leaving normal calls_total with blank
db_namespace.service.pipelines wholesale — use extraProcessors/extraReceivers hooks; wholesale overrides silently break resource/metadata (cx.agent.type) and chart upgrades.logsCollection.storeCheckpoints: false; disable coralogix-ebpf-profiler, hostMetrics, hostEntityEvents, resourceDetection on agent; disable resourceDetection on cluster-collector. Use gke-autopilot-values.yaml.localhost); daemonset needs networkMode: host. Remove ecs from resourcedetection.detectors — it stamps the collector's own container ID.healthCheck + dependsOn: [{containerName: otel-collector, condition: HEALTHY}] on the app. Use the CDOT image.otel-installer/one-liner with both
CORALOGIX_PRIVATE_KEY and CORALOGIX_DOMAIN.kubernetesResources and hostEntityEvents
are enabled by default in the chart — do not disable them. kubernetesResources
must stay on the opentelemetry-cluster-collector only (enabling it on the agent
crashes with can't get K8s Instance Metadata; node name is empty). Use a dedicated
coralogix/resource_catalog exporter with x-coralogix-ingress: metadata-as-otlp-logs/v1.resourcedetection/resource_catalog belongs on
the opentelemetry-cluster-collector Deployment only; remove it from daemonset agents.k8sattributes: Exactly one role should do full extraction; set
passthrough: true on the others.domain: and needs the
full URL, e.g. https://ingress.eu2.coralogix.com/opamp/v1.extensions: [opamp] fails on old image pins: The K8s Windows sub-preset
defaults to coralogixrepo/opentelemetry-collector-contrib-windows:0.92.0, which predates
OpAMP on Windows — enabling extensions: [opamp] there causes the collector to refuse to
start. Fix: bump the image to ≥ v0.130. When bumping the image is not an option (e.g.
locked in a production freeze), use the -Supervisor wrapper instead — this runs
opampsupervisor as a separate Windows Service and works regardless of collector version.F (full/final) — the standard P→F recombine never triggers. Use firstEntryRegex
on the filelog recombine operator to detect new entries by timestamp pattern.spanNameReplacePattern escaping: There are two layers: single-quote or block
scalar for YAML/OTTL backslashes, and write backreferences as $$1/$$2 because the
collector envprovider expands $...; verify with helm template.svc/coralogix-opentelemetry-targetallocator on 8080; inspect /jobs and
/scrape_configs; then check RBAC, selectors, and watched namespaces.Work through these steps in order before touching any pipeline configuration:
Step 1 — Prove the collector is running and exporting
# Kubernetes: check exporter metrics
kubectl exec -n <namespace> <collector-pod> -- wget -qO- http://localhost:8888/metrics \
| grep -E 'otelcol_exporter_(sent|send_failed|enqueue_failed|queue)'
# Success: otelcol_exporter_sent_* > 0 and climbing
# Failure indicator: otelcol_exporter_send_failed_* > 0 — proceed to Step 2Step 2 — Verify DNS and TLS reach the ingestion endpoint
# From inside the collector pod / host
nslookup ingress.<domain> # e.g. ingress.coralogix.com
curl -v https://ingress.<domain> # expect 400/401, NOT a TLS or connection errorIf DNS fails → network/VPC/proxy issue, not a collector config issue.
If TLS fails → certificate bundle or proxy MITM — check NO_PROXY / HTTPS_PROXY env vars.
Step 3 — Confirm the private key is expanded correctly
# Kubernetes: inspect the live env
kubectl exec -n <namespace> <collector-pod> -- env | grep CORALOGIX
# The key must appear as a 36-char UUID-like string, not the literal "${env:...}" text
# Literal text → bracket syntax wrong, or Secret not mountedStep 4 — Check the exporter domain: value
In the running config (/etc/otelcol-contrib/config.yaml or kubectl get cm), verify:
domain: is a bare hostname such as eu2.coralogix.com — no https:// prefix, no UI hostname (app.coralogix.com is wrong)private_key: resolved to the actual key (Step 3)Step 5 — Enable debug logging for one minute
service:
telemetry:
logs:
level: debugLook for Exporting failed or grpc status lines. A StatusUnauthenticated confirms a key/region mismatch. A context deadline exceeded suggests egress/proxy or ingress-side latency — also check coralogix.timeout (default 5s; increase to 30s).
Step 6 — Inspect pipeline wiring only after Steps 1–5 pass
If export is healthy but data is missing in the Coralogix UI: check receiver connectivity, processor filters (filter processor dropping everything), and that the pipeline is wired in service.pipelines. Full symptom → root-cause table: references/ops-troubleshooting.md.
otel-integrationUse references/setup-kubernetes.md for install flow, per-platform variants, Target Allocator, and chart-specific failure modes. Use references/preset-kubernetes.md when the question is about Helm presets or Infrastructure Explorer.
Use references/setup-ecs-fargate.md. The fragile pieces are
sidecar health checks, dependsOn: HEALTHY, essential flags, and keeping the ecs
detector enabled only for sidecar mode.
memory_limiter firing constantlyUse references/ops-memory-performance.md. Compare
Go heap metrics to RSS before changing pod limits or memory_limiter settings.
opentelemetry-ottl skill.preset-fleet-management.md covers only the collector-config overlap (endpoint shape, values-vs-UI precedence, Windows image pitfall); deep supervisor/CDOT work is out of scope.opentelemetry-instrumentation skill.Upstream links:
evals
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