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.
92
96%
Does it follow best practices?
Impact
92%
1.10xAverage score across 127 eval scenarios
Advisory
Suggest reviewing before use
Use this reference when the user asks about PII/secrets, URL/span-name sanitization,
Span Metrics cardinality, aggregation_cardinality_limit, or expensive APM metrics.
The safe answer is layered: prevent bad telemetry at the source, sanitize before
metrics are generated, and use limits as guardrails.
If an attribute can have more than about 100 unique values, do not use it as a metric dimension by default. Every distinct label combination creates a new time series, so several individually "moderate" dimensions multiply into very large cardinality.
Good Span Metrics dimensions are bounded and useful for aggregation:
http.methodhttp.response.status_codespan.kindstatus_codehttp.route when it is templated, such as /users/{id}/orders/{order_id}Dangerous dimensions include:
url.full, raw url.path, or URLs with query stringsuser.id, session.id, request.id, trace_id, span_idcustomer.email, IP addresses, tokens, API keysk8s.pod.ip and broad k8s.pod.name usage for Span Metricsdb.statement, db.query.text, or SQL with literal valuesWhen a customer says they need one of these for alerts or dashboards, do not just approve it. Offer a lower-cardinality replacement first, then a targeted sanitization plan if they must keep it.
http.route over raw URL paths. Keep IDs and
per-request values on traces or logs, not metric labels.spanmetrics. Normalize dynamic values in the traces pipeline
before the spanmetrics connector consumes spans. For exact OTTL syntax, hand off
to the opentelemetry-ottl skill.spanmetrics dimensions such as
url.full, k8s.pod.ip, broad k8s.pod.name, and unnecessary custom labels.duration_ms_bucket series.
Keep buckets aligned to the user-facing latency questions.aggregation_cardinality_limit / Helm
spanMetrics.aggregationCardinalityLimit to prevent unbounded growth. This is not a
substitute for fixing bad dimensions.In Coralogix Kubernetes Complete Observability, newer chart versions enable a default
Span Metrics cardinality limit. For custom collectors, older chart versions, or custom
spanmetrics connectors, verify the setting explicitly.
The spanmetrics connector's cardinality limit is a system guardrail. When the limit is
reached, new label combinations are collapsed into an overflow series rather than
continuing to create unique series. That protects the pipeline, but it also means the
high-cardinality dimension is no longer useful for precise breakdowns.
Say clearly:
For broad URL-like span names or URL attributes, redactionprocessor can be useful:
processors:
redaction/url_sanitizer:
# Keep existing attributes while only applying URL/span-name sanitization.
# Without allow_all_keys or allowed_keys, redactionprocessor drops keys that
# are not explicitly allowed.
allow_all_keys: true
url_sanitizer:
enabled: true
attributes: ["url.full", "http.url", "url"]
sanitize_span_name: trueUse it when the user wants a general URL sanitizer and accepts component maturity/risk
after checking the processor README. Validate representative before/after examples,
because broad sanitizers can over-sanitize domains or meaningful path segments.
When showing redactionprocessor examples for URL sanitization, include either
allow_all_keys: true for pass-through behavior or a deliberate allowed_keys list;
otherwise the processor is fail-closed and removes unspecified span/log/datapoint
attributes before export.
For targeted customer-specific patterns, use the OTTL transform processor before
spanmetrics, for example replacing IDs in url.full, stripping query strings, or
normalizing dynamic path segments. Do not put sanitization only in a metrics pipeline
after spanmetrics; by then the high-cardinality series have already been created.
Sensitive data should be removed, masked, or hashed before telemetry leaves the collector. The collector skill should identify the pipeline placement and then route exact statement authoring to the OTTL skill.
Common choices:
user.id with SHA256 when correlation is still
useful but raw values must not leave the environment.replace_all_patterns.token, api_key, secret, and password.user.email when they are not needed for support workflows.where clauses such as attributes["url.full"] != nil or
IsString(body) so malformed records do not break the pipeline.Place redaction processors before batch and coralogix, and before any connector that
turns spans/logs into metrics. If the question is mostly about exact OTTL syntax,
switch to the opentelemetry-ottl skill and use its redaction/cardinality references.
.claude-plugin
.codex-plugin
.cursor-plugin
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
scenario-82
scenario-83
scenario-84
scenario-85
scenario-86
scenario-87
scenario-88
scenario-89
scenario-90
scenario-91
scenario-92
scenario-93
scenario-94
scenario-95
scenario-96
scenario-97
scenario-98
scenario-99
scenario-100
scenario-101
scenario-102
scenario-103
scenario-104
scenario-105
scenario-106
scenario-107
scenario-108
scenario-109
scenario-110
scenario-111
scenario-112
scenario-113
scenario-114
scenario-115
scenario-116
scenario-117
scenario-118
scenario-119
scenario-120
scenario-121
scenario-122
scenario-123
scenario-124
scenario-125
scenario-126
scenario-127
skills
opentelemetry
opentelemetry-collector
references
opentelemetry-instrumentation
opentelemetry-ottl