@opentelemetry/baggage-span-processor
Version:
OpenTelemetry Baggage Span Processor for Node.js
79 lines (52 loc) • 2.88 kB
Markdown
[![NPM Published Version][npm-img]][npm-url]
[![Apache License][license-image]][license-url]
The BaggageSpanProcessor reads entries stored in Baggage from the parent context and adds the [baggage](https://opentelemetry.io/docs/concepts/signals/baggage) entries' keys and
values to the span as attributes on span start.
Add this span processor to a tracer provider.
Keys and values added to Baggage will appear on subsequent child spans for a trace within this service *and* be propagated to external services in accordance with any configured propagation formats configured.
If the external services also have a Baggage span processor, the keys and values will appear in those child spans as well.
⚠ Warning ⚠️
Do not put sensitive information in Baggage.
To repeat: a consequence of adding data to Baggage is that the keys and values will appear in all outgoing HTTP headers from the application.
Compatible with OpenTelemetry JS API and SDK `1.0+`.
```bash
npm install --save @opentelemetry/baggage-span-processor
```
Add to the span processors that copies all baggage entries during configuration:
```javascript
import { NodeSDK, tracing } from '@opentelemetry/sdk-node';
import { ALLOW_ALL_BAGGAGE_KEYS, BaggageSpanProcessor } from '@opentelemetry/baggage-span-processor';
const spanProcessors = [
new tracing.SimpleSpanProcessor(
new tracing.ConsoleSpanExporter()),
new BaggageSpanProcessor(ALLOW_ALL_BAGGAGE_KEYS)];
const sdk = new NodeSDK({
serviceName: "example-service",
spanProcessors
});
sdk.start();
```
Alternatively, you can provide a custom baggage key predicate to select which baggage keys you want to copy.
For example, to only copy baggage entries that start with `my-key`:
```javascript
new BaggageSpanProcessor((baggageKey: string) => key.startsWith('my-key'))
```
For example, to only copy baggage entries that matches the regex `^key.+`:
```javascript
const regex = new RegExp("^key.+")
new BaggageSpanProcessor((baggageKey: string) => regex.test(baggageKey))
```
- For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
- For more about OpenTelemetry JavaScript: <https://github.com/open-telemetry/opentelemetry-js>
- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]
APACHE 2.0 - See [LICENSE][license-url] for more information.
[]: https://github.com/open-telemetry/opentelemetry-js/discussions
[]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE
[]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
[]: https://www.npmjs.com/package/@opentelemetry/baggage-span-processor
[]: https://badge.fury.io/js/%40opentelemetry%2Fbaggage-span-processor.svg