Network requirements
The observability plugin sends OpenTelemetry data to LaunchDarkly athttps://otel.observability.app.launchdarkly.com:4318 by default. Port 4318 is the standard OpenTelemetry HTTP/Protobuf port.
If your network restricts outbound traffic to port 443, override the OTLP endpoint to use HTTPS on port 443. You have two ways to override the endpoint:
* Use the configuration option for your SDK. For example, in .NET, call
WithOtlpEndpoint("https://otel.observability.app.launchdarkly.com:443") when you build the plugin.* Set the
If your application emits OpenTelemetry data locally but none of it appears in LaunchDarkly, check whether your network allows outbound traffic to port 4318. A restrictive firewall is a common cause of missing backend observability data.
OTEL_EXPORTER_OTLP_ENDPOINT environment variable to https://otel.observability.app.launchdarkly.com:443. This variable works with all server-side SDKs except Java. In Java, use the otlpEndpoint option.Server-side SDKs
This feature is available in the observability plugin for the following server-side SDKs:.NET (server-side)
Expand .NET (server-side) code sample
Expand .NET (server-side) code sample
You can configure the observability plugin for the .NET (server-side) SDK through a mix of environment variables, OpenTelemetry configuration options, and plugin configuration options.Use the For a complete list of configuration options, read
ObservabilityPlugin.ObservabilityPluginBuilder to set the options. In many cases, you can use an OpenTelemetry-specific environment variable instead, if you prefer. For example, if you want to set a custom OTLP endpoint, you can either set OtlpEndpoint in your ObservabilityPlugin.ObservabilityPluginBuilder, or you can set the OTEL_EXPORTER_OTLP_ENDPOINT environment variable.Here’s how:ObservabilityPlugin.ObservabilityPluginBuilder.Go
Expand Go code sample
Expand Go code sample
Java
Expand Java code sample
Expand Java code sample
You can configure the observability plugin for the Java SDK through the plugin’s options. The Java plugin does not read OpenTelemetry environment variables such as This table lists the available options:
The OTLP exporters and the sampling configuration request both use The available log levels are
OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_SERVICE_NAME, so set these values through the plugin options instead.Use ObservabilityOptions.Builder to set the options.Here’s how:| Option | Default | Description |
|---|---|---|
enabled | true | When false, the plugin starts no providers, registers no flag evaluation hook, does not fetch sampling configuration, and LDObserve methods do nothing. |
serviceName | Empty | The service name, set as the service.name resource attribute. |
serviceVersion | Empty | The service version, set as the service.version resource attribute. |
environment | Empty | The deployment environment name, set as the deployment.environment.name resource attribute. |
otlpEndpoint | LaunchDarkly endpoint | A custom OTLP/HTTP endpoint. |
backendUrl | LaunchDarkly endpoint | A custom URL for fetching sampling configuration. |
resourceAttributes | Empty | Additional resource attributes. These are merged over the plugin’s defaults, which means they can override service.name and other default attributes. |
customHeaders, customHeader | None | Headers to send with every OTLP export and sampling configuration request. |
proxySelector, proxyHostAndPort | Java Virtual Machine (JVM) default | An egress proxy for exports and sampling configuration requests. |
logsApiLevel | INFO | The minimum severity of exported logs. NONE turns off log export. |
debug | false | Turns on debug logging. |
manualStart | false | Delays provider startup until you call LDObserve.start(sdkKey, options). |
shutdownHook | true | Flushes and stops the providers from a JVM shutdown hook. Set this to false when a framework such as Spring Boot manages shutdown, and call LDObserve.shutdown() from its close callback. |
java.net.http.HttpClient, so they behave the same way behind an egress proxy. If you do not configure a proxy, the JVM default proxy selector applies. It honors the https.proxyHost, https.proxyPort, and http.nonProxyHosts system properties. To set a proxy or headers explicitly, use proxyHostAndPort and customHeader. To apply per-host proxy rules, pass a java.net.ProxySelector to proxySelector.Here’s how:TRACE, DEBUG, INFO, WARN, ERROR, FATAL, and NONE, matching the OpenTelemetry severity numbers. The plugin treats a log record with no severity as TRACE.For a complete list of configuration options, read Configuration Options in the plugin README.Node.js (server-side)
Expand Node.js (server-side) code sample
Expand Node.js (server-side) code sample
You can configure the observability plugin for the Node.js (server-side) SDK through a mix of environment variables, OpenTelemetry configuration options, and plugin configuration options.For a complete list of configuration options, read
Environment variables
The environment variables specify where to enable instrumentation:LAUNCHDARKLY_OTEL_NODE_ENABLE_FILESYSTEM_INSTRUMENTATIONenables file system instrumentation. It defaults tofalse.LAUNCHDARKLY_OTEL_NODE_ENABLE_OUTGOING_HTTP_INSTRUMENTATIONenables outgoing HTTP instrumentation. It defaults totrue. It only affects outgoing HTTP requests instrumented by@opentelemetry/instrumentation-http.
OpenTelemetry configuration options
If you are already using OpenTelemetry configuration options for Node in your application, you can continue to use them.When you use the observability plugin, the@opentelemetry/instrumentation-fs instrumentation behaves as follows:- The instrumentation will only be enabled if
LAUNCHDARKLY_OTEL_NODE_ENABLE_FILESYSTEM_INSTRUMENTATIONistrue. - The instruction is unaffected by the
OTEL_NODE_ENABLED_INSTRUMENTATIONSandOTEL_NODE_DISABLED_INSTRUMENTATIONSOpenTelemetry environment variables.
Plugin configuration options
To specify the observability plugin configuration options, use theNodeOptions interface to set the options.Here’s how:NodeOptions.Python
Expand Python code sample
Expand Python code sample
You can configure the observability plugin for the Python SDK through a mix of environment variables, OpenTelemetry configuration options, and plugin configuration options.Use the For a complete list of configuration options, read
ObservabilityConfig class to set the options. In many cases, you can use an OpenTelemetry-specific environment variable instead, if you prefer. For example, if you want to set a custom OTLP endpoint, you can either set otlp_endpoint in your ObservabilityConfig, or you can set the OTEL_EXPORTER_OTLP_ENDPOINT environment variable.Here’s how:ObservabilityConfig.Ruby
Expand Ruby code sample
Expand Ruby code sample
You can configure options for the Ruby observability plugin when you initialize the SDK, or using environment variables.For a complete list of configuration options, read Plugin Options.
Plugin configuration options
The plugin constructor accepts optional keyword arguments for configuration.Here’s how:Environment variables
The environment variables specify where to enable instrumentation:LAUNCHDARKLY_SDK_KEYprovides the LaunchDarkly SDK key. This key is automatically extracted from the client during initialization.OTEL_EXPORTER_OTLP_ENDPOINTprovides a custom OTLP endpoint.OTEL_SERVICE_NAMEprovides the service name, if not specified in plugin options.
Environment configuration is automaticThe environment associated with your SDK key is automatically determined by the backend, so you don’t need to configure it separately.