opentelemetry.io/content/en/docs/zero-code/js/configuration.md

97 lines
3.3 KiB
Markdown

---
title: Zero-Code Instrumentation Configuration
linkTitle: Configuration
description: Learn how to configure Zero-Code Instrumentation for Node.js
aliases:
- /docs/languages/js/automatic/configuration
- /docs/languages/js/automatic/module-config
weight: 10
cSpell:ignore: serviceinstance
---
This module is highly configurable by setting
[environment variables](/docs/specs/otel/configuration/sdk-environment-variables/).
Many aspects of the auto instrumentation's behavior can be configured for your
needs, such as resource detectors, exporters, trace context propagation headers,
and more.
## SDK and exporter configuration
SDK and exporter configuration can be set using environment variables. More
information can be found [here](/docs/languages/sdk-configuration/).
## SDK resource detector configuration
By default, the module will enable all SDK resource detectors. You can use the
`OTEL_NODE_RESOURCE_DETECTORS` environment variable to enable only certain
detectors, or completely disable them:
- `env`
- `host`
- `os`
- `process`
- `serviceinstance`
- `container`
- `alibaba`
- `aws`
- `azure`
- `gcp`
- `all` - enables all resource detectors
- `none` - disables resource detection
For example, to only enable the `env` and `host` detectors, you can set:
```shell
OTEL_NODE_RESOURCE_DETECTORS=env,host
```
## Excluding instrumentation libraries
By default, all
[supported instrumentation libraries](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/metapackages/auto-instrumentations-node/README.md#supported-instrumentations)
are enabled, but you can use environment variables to enable or disable specific
instrumentations.
### Enable specific instrumentations
Use the environment variable `OTEL_NODE_ENABLED_INSTRUMENTATIONS` to enable only
certain instrumentations by providing a comma-separated list of the
instrumentation library names without the `@opentelemetry/instrumentation-`
prefix.
For example, to enable only
[@opentelemetry/instrumentation-http](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http)
and
[@opentelemetry/instrumentation-express](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-express)
instrumentations:
```shell
OTEL_NODE_ENABLED_INSTRUMENTATIONS="http,express"
```
### Disable specific instrumentations
Use the environment variable `OTEL_NODE_DISABLED_INSTRUMENTATIONS` to keep the
fully enabled list and only disable certain instrumentations by providing a
comma-separated list of the instrumentation library names without the
`@opentelemetry/instrumentation-` prefix.
For example, to disable only
[@opentelemetry/instrumentation-fs](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-fs)
and
[@opentelemetry/instrumentation-grpc](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc)
instrumentations:
```shell
OTEL_NODE_DISABLED_INSTRUMENTATIONS="fs,grpc"
```
{{% alert title="Note" color="info" %}}
If both environment variables are set, `OTEL_NODE_ENABLED_INSTRUMENTATIONS` is
applied first, and then `OTEL_NODE_DISABLED_INSTRUMENTATIONS` is applied to that
list. Therefore, if the same instrumentation is included in both lists, that
instrumentation will be disabled.
{{% /alert %}}