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

language-selector.mdskills/opentelemetry/opentelemetry-instrumentation/references/

Language Selector — Decision Tree

Contents

  • Step 1: Identify the Target Language / Runtime
  • Step 2: Identify Telemetry Signals
  • Step 3: Identify Instrumentation Mode
  • Step 4: Identify Export Path
  • Step 5: Collect Required Variables

Use this file to identify the language, signal, instrumentation mode, and export path before loading any language-specific reference. Walk each decision in order.

Step 1: Identify the Target Language / Runtime

Language / runtimeReference file to load next
Java (any JVM, Spring, Quarkus, etc.)java.md
Python (Flask, Django, FastAPI, etc.)python.md
Node.js / TypeScript (Express, Fastify, etc.)nodejs.md
.NET / C# (ASP.NET Core, console apps)dotnet.md
Go / Golanggo.md
Kubernetes injection (no specific lang yet)Use java.md, python.md, nodejs.md, or dotnet.md — Operator supports all four
PHPNot in scope for this skill — refer to Coralogix PHP docs
Lambda / serverlessNot in scope — refer to Coralogix Lambda OTel docs
UnknownShow the matrix in Step 1b and ask

Step 1b: Matrix when language is unknown

LanguageAuto-instrProgrammaticManualK8s injectionCoralogix sampler pkg
JavaAgent JAR (opentelemetry-javaagent.jar)@WithSpan annotation (extends agent)Yes (Operator)None needed
Pythonopentelemetry-instrument CLIYesYesYes (Operator)coralogix-opentelemetry
Node.jsBundled or individualVia NodeSDKYesYes (Operator)@coralogix/opentelemetry
.NETZero-code installer (dotnet-auto)Yes (NuGet SDK)Yes (Operator)None needed
GoOut of scope here (OBI/Auto SDK exist)Covered by this skillcoralogix-opentelemetry-go

Step 2: Identify Telemetry Signals

Ask or infer which signals the user needs:

SignalKey requirement
TracesAlways needed for APM; require CoralogixTransactionSampler for Coralogix transactions
MetricsNeeded for Coralogix platform metric-dependent features; not required for APM traces-only
LogsVia OTel log bridge (Log4j, SLF4J, slog, zap, NLog, log4net) — SDK logs pipeline, not file-based
All signalsStart with traces; metrics and logs can be added incrementally

Step 3: Identify Instrumentation Mode

ModeWhen to use it
Auto-instrumentationUser wants minimal code changes; frameworks are well-supported
ProgrammaticUser wants some control (e.g. Python + custom samplers) without rewriting app
ManualFull control over span creation; no existing auto-instrumentation library for the framework
Code reviewLoad language reference and output-templates.md review section
TroubleshootingLoad troubleshooting.md
Kubernetes injectionUser deploys on K8s and wants no-code injection via OpenTelemetry Operator

Mode notes by language

Java: Coralogix guidance emphasizes the Java agent plus @WithSpan annotation-based span additions. Upstream OpenTelemetry Java also supports pure SDK manual instrumentation, but that path is not the default Coralogix setup in this skill.

Python: Three distinct paths are documented: auto (opentelemetry-instrument wrapper), programmatic (SDK init inside app + FlaskInstrumentor), and manual (explicit tracer/span creation). All three can use CoralogixTransactionSampler from coralogix-opentelemetry.

Node.js: Bundled auto (@opentelemetry/auto-instrumentations-node via NODE_OPTIONS) vs individual auto (custom instrumentation.js with chosen libraries). Bundled does NOT support Coralogix transactions — use individual or manual for transaction support.

Go: This skill covers manual SDK instrumentation. Go zero-code/eBPF options exist, but they are out of scope for this SDK instrumentation skill.

Step 4: Identify Export Path

Do not make a final recommendation until you know the user's scale, runtime, deployment environment, enrichment needs, retry/buffering requirements, and sampling needs.

Export pathGood fit when
Direct OTLP to CoralogixGetting started, dev/test, simple deploys
Via OTel CollectorExisting collector, production/Kubernetes, enrichment, retry/buffering, or tail sampling needed
UnknownExplain tradeoffs and ask for context

Export path tradeoffs

AspectDirectVia Collector
AuthSDK sets Authorization: Bearer <key> headerCollector holds the key; SDK exports unauthed to collector
EnrichmentResource attrs in SDK onlyCollector can add k8sattributes, detect host/cloud
Retry / bufferSDK retry onlyCollector sending_queue + file_storage
SamplingSDK-side head sampling onlyCollector can do tail sampling
ComplexityLowHigher (collector deployment)

Step 5: Collect Required Variables

Before generating any code or config, confirm these are known (or use placeholders):

VariablePlaceholder
Coralogix region / domain<CORALOGIX_REGION> (e.g. eu1, eu2, us1, us2, ap1, ap2, ap3)
Send-Your-Data API keyCORALOGIX_API_KEY env var
Service name<SERVICE_NAME>
Application name (Coralogix)<CX_APPLICATION_NAME>
Subsystem name (Coralogix)<CX_SUBSYSTEM_NAME>
Runtime / framework(e.g. Flask, Spring Boot, Express, ASP.NET Core)
Deployment target(e.g. bare metal, Docker, Kubernetes, ECS)

If the region is unknown, instruct the user to find it from their Coralogix platform URL: https://dashboard.<region>.coralogix.com → the region is the subdomain prefix before .coralogix.com. Always load coralogix-endpoints.md when generating endpoint config.

README.md

tile.json