Skip to content

OpenTelemetry Collector

The otel lexicon types OpenTelemetry Collector config: receivers, processors, exporters, connectors, extensions and the pipelines that connect them. chant build emits one collector config file, the YAML otelcol --config reads as it is.

import { OtlpReceiver, BatchProcessor, OtlpExporter, Pipeline } from "@intentius/chant-lexicon-otel";
export const otlp = new OtlpReceiver({ protocols: { grpc: { endpoint: "0.0.0.0:4317" } } });
export const batch = new BatchProcessor({ timeout: "5s" });
export const backend = new OtlpExporter({ name: "backend", endpoint: "tempo.observability:4317" });
export const traces = new Pipeline({
signal: "traces",
receivers: [otlp],
processors: [batch],
exporters: [backend],
});

The built-in component set is otlp, prometheus, hostmetrics, filelog, k8s_cluster and kubeletstats receivers; batch, memory_limiter, resource, attributes, k8sattributes, resourcedetection, filter, transform, redaction, tail_sampling, probabilistic_sampler and deltatocumulative processors; otlp, otlphttp, debug, prometheus, googlecloud and loadbalancing exporters; spanmetrics, servicegraph, routing, forward, count, sum and signaltometrics connectors; and the health_check, pprof, zpages and k8s_leader_elector extensions. genAiPipeline() is a preset for GenAI workloads: it removes prompt and completion content and derives agent RED and token metrics. Their config types follow the collector-contrib release named on the Custom components page. A component chant doesn’t ship is added with defineComponent, and it is serialized and checked the same way as the built-ins. chant import turns an existing collector config file into this TypeScript (see Importing a Collector Config).

Checks catch a pipeline that uses a component nobody declared (OTEL101), a pipeline with no receivers or exporters (OTEL102), a declared component no pipeline uses (OTEL103), a connector joining pipelines of signals it can’t convert (OTEL112), pipelines feeding each other in a cycle (OTEL113), a connector id shared with a receiver or exporter (OTEL114), a routing route to a pipeline that doesn’t receive from it (OTEL115), a connector splitting metrics by a per-request GenAI attribute such as gen_ai.conversation.id (OTEL116), two started components listening on the same address (OTEL117), and a literal credential in source (OTEL002) or in the config (OTEL120). Others report deprecated fields (OTEL119), credentials sent in plaintext (OTEL121), zpages or pprof off loopback (OTEL122), detailed debug output beside a backend (OTEL123), delivery and batching settings (OTEL124, OTEL125), and k8sattributes fields or resourcedetection detectors the collector doesn’t know (OTEL126, OTEL127). In a build that stamps telemetry attribution, OTEL118 reports a processor that can drop or overwrite one of the attribution’s resource attributes.

MetricCount
Resources37
Property types0
Services7
Intrinsic functions0
Pseudo-parameters0
Lint rules27

Lexicon version: 0.122.0
Namespace: OTel