CtrlK
BlogDocsLog inGet started
Tessl Logo

coralogix/opentelemetry-skills

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

1.13x
Quality

97%

Does it follow best practices?

Impact

99%

1.13x

Average score across 81 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

coralogix-endpoints.mdskills/opentelemetry/opentelemetry-instrumentation/references/

Coralogix Endpoints for SDK Instrumentation

Contents

  • OTLP Endpoint for Direct SDK Export
  • Regional Domains
  • Authentication Header
  • Coralogix-Specific OTLP Headers
  • Endpoint vs Domain — SDK vs Collector
  • PrivateLink

OTLP Endpoint for Direct SDK Export

When exporting directly from the SDK (not via a collector), the required endpoint format depends on the language:

Java and .NET — the SDK's URI parser requires a full URI with https:// scheme:

https://ingress.<region>.coralogix.com:443

Python and Node.js — the standard Coralogix gRPC form is bare host:port:

ingress.<region>.coralogix.com:443

The OpenTelemetry gRPC exporter spec also requires SDKs to accept https://host:port. So https://ingress.<region>.coralogix.com:443 is valid for Python and Node.js gRPC, but prefer the bare form in generated Coralogix examples.

GoWithEndpoint uses bare host:port with no scheme or path:

ingress.<region>.coralogix.com:443

Use credentials.NewTLS(nil) with Go gRPC exporters. Do not pass https:// to WithEndpoint; use WithEndpointURL only when intentionally using a full URL option.

TLS is always enabled on port 443. Do not use http:// for direct Coralogix export — all Coralogix OTLP endpoints require TLS.

For HTTP/protobuf exporters (e.g. Node.js @opentelemetry/exporter-trace-otlp-proto), append the signal path:

https://ingress.<region>.coralogix.com:443/v1/traces
https://ingress.<region>.coralogix.com:443/v1/metrics
https://ingress.<region>.coralogix.com:443/v1/logs

Every generated direct-export setup must show these required environment variables. Choose the block that matches the language and protocol:

gRPC — Java and .NET (full URI with https:// scheme required):

export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingress.<CORALOGIX_REGION>.coralogix.com:443"
export OTEL_EXPORTER_OTLP_PROTOCOL="grpc"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <CORALOGIX_API_KEY>"
export OTEL_SERVICE_NAME="<SERVICE_NAME>"
export OTEL_RESOURCE_ATTRIBUTES="cx.application.name=<CX_APPLICATION_NAME>,cx.subsystem.name=<CX_SUBSYSTEM_NAME>"

gRPC — Python, Node.js, and Go (bare host:port; no https:// for Go WithEndpoint):

export OTEL_EXPORTER_OTLP_ENDPOINT="ingress.<CORALOGIX_REGION>.coralogix.com:443"
export OTEL_EXPORTER_OTLP_PROTOCOL="grpc"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <CORALOGIX_API_KEY>"
export OTEL_SERVICE_NAME="<SERVICE_NAME>"
export OTEL_RESOURCE_ATTRIBUTES="cx.application.name=<CX_APPLICATION_NAME>,cx.subsystem.name=<CX_SUBSYSTEM_NAME>"

Python env var exception: Authorization=Bearer%20<CORALOGIX_API_KEY> (URL-encoded space).

HTTP/protobuf — all languages (base URL only; SDK auto-appends /v1/traces etc.):

export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingress.<CORALOGIX_REGION>.coralogix.com:443"
export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <CORALOGIX_API_KEY>"
export OTEL_SERVICE_NAME="<SERVICE_NAME>"
export OTEL_RESOURCE_ATTRIBUTES="cx.application.name=<CX_APPLICATION_NAME>,cx.subsystem.name=<CX_SUBSYSTEM_NAME>"

Do NOT include /v1/traces in OTEL_EXPORTER_OTLP_ENDPOINT — the SDK appends the signal path automatically for HTTP/proto, so including it results in double-pathing (/v1/traces/v1/traces). Use signal-specific OTEL_EXPORTER_OTLP_TRACES_ENDPOINT if you need to set the full URL explicitly.

Regional Domains

Region nameDomainOTLP gRPC endpoint
US1us1.coralogix.comingress.us1.coralogix.com:443
US2us2.coralogix.comingress.us2.coralogix.com:443
EU1eu1.coralogix.comingress.eu1.coralogix.com:443
EU2eu2.coralogix.comingress.eu2.coralogix.com:443
AP1ap1.coralogix.comingress.ap1.coralogix.com:443
AP2ap2.coralogix.comingress.ap2.coralogix.com:443
AP3ap3.coralogix.comingress.ap3.coralogix.com:443

How to find your region: Your Coralogix platform URL shows the region — e.g. https://dashboard.eu2.coralogix.com → region is eu2, domain is eu2.coralogix.com, OTLP endpoint is ingress.eu2.coralogix.com:443.

Legacy endpoint aliases (old shipper configs only — redirect new setups to the regional form):

Legacy endpointMaps to region
ingress.coralogix.comEU1
ingress.coralogix.usUS1
ingress.cx498.coralogix.comUS2
ingress.coralogix.inAP1
ingress.coralogixsg.comAP2

If a user shows one of these hostnames, identify their region and replace with ingress.<region>.coralogix.com:443.

Authentication Header

All direct OTLP export to Coralogix requires a Send-Your-Data API key passed as an OTLP header:

Authorization=Bearer <CORALOGIX_API_KEY>

The key is found in the Coralogix platform under Settings → Users and Teams → API Keys. Only Send-Your-Data keys work for telemetry ingestion. Team keys and personal keys do not.

Setting the header per language

Environment variable (Java, Node.js, Go, most gRPC SDK env config):

export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <CORALOGIX_API_KEY>"
export OTEL_SERVICE_NAME="<SERVICE_NAME>"
export OTEL_RESOURCE_ATTRIBUTES="cx.application.name=<CX_APPLICATION_NAME>,cx.subsystem.name=<CX_SUBSYSTEM_NAME>"

Python — URL encoding required in env vars:

export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer%20<CORALOGIX_API_KEY>"
export OTEL_SERVICE_NAME="<SERVICE_NAME>"
export OTEL_RESOURCE_ATTRIBUTES="cx.application.name=<CX_APPLICATION_NAME>,cx.subsystem.name=<CX_SUBSYSTEM_NAME>"

Note: %20 = space between Bearer and the key value.

Java — env var or JVM system property:

# env var
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <CORALOGIX_API_KEY>"
# or JVM property
-Dotel.exporter.otlp.headers="Authorization=Bearer <CORALOGIX_API_KEY>"

Go — programmatic (headers map):

headers: map[string]string{"Authorization": "Bearer " + token}

.NET — programmatic (OTLP options):

options.Endpoint = new Uri("https://ingress.<CORALOGIX_REGION>.coralogix.com:443");
options.Protocol = OtlpExportProtocol.Grpc;
options.Headers = $"Authorization=Bearer {config.ApiKey}";

Coralogix-Specific OTLP Headers

When calling the Coralogix OTLP endpoint directly, you may pass application and subsystem names as OTLP headers in addition to resource attributes. Both mechanisms work; resource attributes are the standard approach:

HeaderPurpose
CX-Application-NameAlternative to cx.application.name resource attribute
CX-Subsystem-NameAlternative to cx.subsystem.name resource attribute

Prefer setting these as resource attributes (cx.application.name, cx.subsystem.name) in the SDK — they propagate to all signals. Header-based values only reach the signals on that specific exporter.

Endpoint vs Domain — SDK vs Collector

The OTel Collector's coralogix exporter uses domain: eu2.coralogix.com (bare hostname, no ingress. prefix, no port). SDK endpoints use ingress. prefix and port 443. The required format varies by language and protocol.

ShipperFormatExample
OTel SDK direct gRPC (Python, Node.js)Prefer ingress.<region>.coralogix.com:443; https://host:port also acceptedingress.eu2.coralogix.com:443
OTel SDK direct gRPC (Go WithEndpoint)ingress.<region>.coralogix.com:443ingress.eu2.coralogix.com:443
OTel SDK direct gRPC (Java, .NET)https://ingress.<region>.coralogix.com:443https://ingress.eu2.coralogix.com:443
OTel SDK direct HTTP/protobufhttps://ingress.<region>.coralogix.com:443/v1/<signal>https://ingress.eu2.coralogix.com:443/v1/traces
OTel Collector coralogix exporterdomain: <region>.coralogix.comdomain: eu2.coralogix.com

PrivateLink

When using AWS PrivateLink, replace ingress.<region> with ingress.private.<region>:

ingress.private.eu2.coralogix.com:443

README.md

tile.json