Configure the Splunk Distribution of OTel JS for Splunk Observability Cloud π
You can configure the Splunk Distribution of OpenTelemetry JS to suit your instrumentation needs. In most cases, modifying the basic configuration is enough to get started.
The following sections describe all available settings for configuring OpenTelemetry for Node.js, including options for activating new features that are unique to the Splunk Distribution of OpenTelemetry JS.
Configuration methods π
To configure the Splunk Distribution of OpenTelemetry JS, you can use a combination of environment variables and arguments passed to the start()
function:
Environment variables
For example:
export OTEL_SERVICE_NAME='test-service'
Arguments passed to the
start()
functionFor example:
start({ serviceName: 'my-node-service', });
Configuration for each of the supported data type, such as metrics or tracing, is set using additional properties on the configuration object:
start({
// general options like `serviceName` and `endpoint`
metrics: {
// configuration passed to metrics signal
},
profiling: {
// configuration passed to profiling signal
},
tracing: {
// configuration passed to tracing signal
},
});
You can also activate the collection of a specific data type by passing a boolean value instead of an object. For example:
start({
// general options like `serviceName` and `endpoint`
metrics: true, // turn metrics on with default options
profiling: true, // turn profiling on with default options
});
Note
Function arguments take precedence over the corresponding environment variables.
General settings π
The following settings are specific to the Splunk Distribution of OpenTelemetry JS:
Environment variable |
Argument to |
Description |
---|---|---|
|
|
The name of your organizationβs realm, for example, |
|
|
A Splunk authentication token that lets exporters send data directly to Splunk Observability Cloud. Unset by default. Required if you need to send data to the Splunk Observability Cloud ingest endpoint. See Create and manage authentication tokens using Splunk Observability Cloud. |
|
|
Activates the addition of server trace information to HTTP response headers. For more information, see Server trace information. The default value is |
|
|
Log level for the OpenTelemetry diagnostic console logger. To activate debug logging, set the |
Instrumentations configuration π
The following settings control which instrumentations are activated:
Environment variable |
Argument to |
Description |
---|---|---|
|
Whether to activate all the embedded instrumentations. The default value is |
|
|
When set to |
For example, to turn off all default instrumentations and only turn on the bunyan
instrumentation, set the following environment variables:
export OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=false
export OTEL_INSTRUMENTATION_BUNYAN_ENABLED=true
The previous settings only apply to instrumentations loaded by the Splunk Distribution of OpenTelemetry JS by default. When using the programmatic API to supply a list of user-specified instrumentations, they have no effect.
Trace configuration π
The following settings control tracing limits and attributes:
Environment variable |
Argument to |
Description |
---|---|---|
|
Not applicable |
Activates tracer creation and autoinstrumentation. Default value is |
|
|
Name of the service or application youβre instrumenting. Takes precedence over the service name defined in the |
|
Not applicable |
Comma-separated list of resource attributes added to every reported span. For example, |
|
Not applicable |
Maximum number of attributes per span. Default value is unlimited. |
|
Not applicable |
Maximum number of events per span. Default value is unlimited. |
|
Not applicable |
Maximum number of links per span. Default value is |
|
Not applicable |
Maximum length of strings for attribute values. Values larger than the limit are truncated. Default value is |
|
Not applicable |
Whether to include the full Redis query in |
Exporters configuration π
The following settings control trace exporters and their endpoints:
Environment variable |
Argument to |
Description |
---|---|---|
|
|
Comma-separated list of trace exporters to use. The default value is |
|
|
Comma-separated list of metrics exporter to use. The default value is |
|
|
Procotol for exporting metrics. Accepted values are |
|
|
The OTLP endpoint. The default value is |
Jaeger exporter π
To use the Jaeger exporter, add the @opentelemetry/exporter-jaeger
package as in the following example:
const { start } = require('@splunk/otel');
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
start({
serviceName: 'my-node-service',
tracing: {
spanExporterFactory: (options) => {
return new JaegerExporter({
serviceName: options.serviceName,
// Additional config
})
}
},
});
Note
To send data directly to Splunk Observability Cloud, see Send data directly to Splunk Observability Cloud.
Propagators configuration π
The following settings control trace propagation:
Environment variable |
Argument to |
Description |
---|---|---|
|
|
Comma-separated list of propagators you want to use. The default value is |
For backward compatibility with the SignalFx Tracing Library for Node.js, use the b3multi trace propagator:
export OTEL_PROPAGATORS=b3multi
$env:OTEL_PROPAGATORS=b3multi
Node.js settings for AlwaysOn Profiling π
The following settings control the AlwaysOn Profiling feature for the Node.js agent:
Environment variable |
Argument to |
Description |
---|---|---|
|
|
Activates AlwaysOn Profiling. The default value is |
|
|
Activates memory profiling for AlwaysOn Profiling. The default value is |
|
|
The collector endpoint for profiler logs. The default value is |
|
|
Frequency with which call stacks are sampled, in milliseconds. The default value is 1000 milliseconds. |
To configure AlwaysOn Profiling programmatically, pass the arguments to the start
function, as in the following example:
start({
serviceName: '<service-name>',
profiling: true,
tracing: {
// configuration passed to tracing signal
},
});
Note
For more information on AlwaysOn Profiling, see Introduction to AlwaysOn Profiling for Splunk APM.
Metrics configuration π
The following settings activate runtime metrics collection:
Environment variable |
Argument to |
Description |
---|---|---|
|
Activated by calling |
Activates metrics collection. The default value is |
|
|
The metrics endpoint. Takes precedence over |
|
|
The metrics endpoint. Takes precedence over the value set in |
|
|
The interval, in milliseconds, of metrics collection and exporting. The default value is |
|
|
Activates the collection and export of runtime metrics. The default value is |
|
|
The interval, in milliseconds, during which garbage collection and event loop statistics are collected. After collection, the values become available to the metric exporter. The default value is |
|
|
Activates the collection and export of internal debug metrics for troubleshooting. The default value is |
None |
|
Callback that lets you filter the default resource or provide a custom one. The function takes one argument of type |
Note
To pass settings as arguments, use the start()
function.
Configuring an existing metrics client to send custom metrics π
You can use an existing SignalFx client for sending custom metrics instead of creating and configuring a new one.
To configure an existing client, pass the following data to the start()
function:
signalfx
: A JavaScript object with optionalclient
anddimensions
fields. Thedimensions
object adds a predefined dimension for each data point. The format fordimensions
is{key: value, ...}
.
The following is a list of dimensions added by default:
service
: SeeserviceName
in Trace configuration.metric_source
:splunk-otel-js
node_version
:process.versions.node
, for example16.10.0
Server trace information π
To connect Real User Monitoring (RUM) requests from mobile and web applications with server trace data, activate Splunk trace response headers by setting the following environment variable:
export SPLUNK_TRACE_RESPONSE_HEADER_ENABLED=true
$env:SPLUNK_TRACE_RESPONSE_HEADER_ENABLED=true
When you set this environment variable, your application instrumentation adds the following response headers to HTTP responses.
Access-Control-Expose-Headers: Server-Timing
Server-Timing: traceparent;desc="00-<serverTraceId>-<serverSpanId>-01"
The Server-Timing
header contains the traceId
and spanId
in traceparent
format. For more information, see the Server-Timing and traceparent documentation on the W3C website.