Per-Instrumentation Configuration via Environment Variables
Maintainer antworten meist innerhalb von 2 Tagen
@wpessers arbeitet bereits daran.
Seit 30.11.2025.
Bewertung
Dieses Issue wurde noch nicht bewertet.
Beschreibung
Is your feature request related to a problem? Please describe.
Yes. Currently, users cannot configure instrumentation-specific options (like GraphQLInstrumentation.mergeItems, PinoInstrumentation.disableLogSending, etc.) without using global.configureInstrumentations(), which requires code changes and defeats the "zero-code" promise.
The problem: When you define global.configureInstrumentations(), it completely replaces the default instrumentation system. You must manually import and configure ALL instrumentations you want, and OTEL_NODE_ENABLED_INSTRUMENTATIONS is ignored.
Example: To configure GraphQL with mergeItems: true while keeping http, grpc, pg, pino enabled, you must manually import and configure all 5 instrumentations in code, even though you only want to customize GraphQL.
// Must be at the top of handler file, before any imports
global.configureInstrumentations = async () => {
// Must import ALL instrumentations manually
const { GraphQLInstrumentation } = await import(
"@opentelemetry/instrumentation-graphql"
);
const { HttpInstrumentation } = await import(
"@opentelemetry/instrumentation-http"
);
const { GrpcInstrumentation } = await import(
"@opentelemetry/instrumentation-grpc"
);
const { PgInstrumentation } = await import(
"@opentelemetry/instrumentation-pg"
);
const { PinoInstrumentation } = await import(
"@opentelemetry/instrumentation-pino"
);
return [
new GraphQLInstrumentation({ mergeItems: true }), // Only GraphQL needs custom config
new HttpInstrumentation(), // But must still include all others
new GrpcInstrumentation(),
new PgInstrumentation(),
new PinoInstrumentation(),
];
};
Describe the solution you'd like
Add support for OTEL_INSTRUMENTATION_CONFIGS environment variable that accepts a JSON object mapping instrumentation names to their configurations. This works alongside OTEL_NODE_ENABLED_INSTRUMENTATIONS:
# Environment variables only - no code changes needed!
OTEL_NODE_ENABLED_INSTRUMENTATIONS="graphql,http,grpc,pg,pino"
OTEL_INSTRUMENTATION_CONFIGS={"graphql":{"mergeItems":true},"pino":{"disableLogSending":true}}
This would:
- Use
OTEL_NODE_ENABLED_INSTRUMENTATIONSto determine which instrumentations to load (existing behavior) - Apply configuration from
OTEL_INSTRUMENTATION_CONFIGSto respective instrumentations - Use defaults for instrumentations not specified in the config
Implementation: Add loadInstrumentationConfigs() function to parse the env var, and update defaultConfigureInstrumentations() in nodejs/packages/layer/src/wrapper.ts to merge user configs with defaults when creating instrumentations.
Describe alternatives you've considered
- Per-instrumentation environment variables (e.g.,
OTEL_PINO_CONFIG) - Rejected: Would pollute env vars and doesn't scale with 30+ instrumentations - Keep current
global.configureInstrumentations()approach - Rejected: Requires code changes, breaks zero-code promise - Configuration file - Rejected: Environment variables are more standard for Lambda and work better with AWS Systems Manager Parameter Store/Secrets Manager
Additional context
Benefits:
- True zero-code configuration via environment variables
- Works seamlessly with existing
OTEL_NODE_ENABLED_INSTRUMENTATIONS - Fully backwards compatible
- No code changes required in Lambda functions
Affected instrumentations: All 30+ instrumentations in the layer
Tip: React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.
- Vorherrschende Sprache
- Go
- Sterne
- 433
- Forks
- 249
- Ø Merge
- 1 T. 12 Std.
- Gemergte PRs (30 T.)
- 39
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus open-telemetry/opentelemetry-lambda
-
enhancement ruby
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
open-telemetry/opentelemetry-lambda#2741 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
processor/cold_start
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
open-telemetry/opentelemetry-lambda#2738 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Fix install-toolsOffengo
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
open-telemetry/opentelemetry-lambda#2736 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
confmap/* go
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
open-telemetry/opentelemetry-lambda#2748 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
go
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
open-telemetry/opentelemetry-lambda#2747 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in open-telemetry/opentelemetry-lambda
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
Case detail: main-column section headers are hard to distinguish from body textEvtl. vergeben @yubessy hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
ubie-oss/hecatoncheires#347 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
[OperatorHub] Add OLM installation method to the documentation #1193Evtl. vergeben @NiccoloFei hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
cloudnative-pg/plugin-barman-cloud#1233 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag