Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions doc/esm-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ node --experimental-loader=@opentelemetry/instrumentation/hook.mjs --import @ope
```javascript
/*telemetry.cjs*/
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-node');
const { ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-base');
const {
getNodeAutoInstrumentations,
} = require('@opentelemetry/auto-instrumentations-node');
Expand All @@ -95,7 +95,7 @@ node --require ./telemetry.cjs app.js
```typescript
/*telemetry.ts | telemetry.mjs*/
import { NodeSDK } from '@opentelemetry/sdk-node';
import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node';
import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';

const sdk = new NodeSDK({
Expand Down
1 change: 1 addition & 0 deletions experimental/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ For notes on migrating to 2.x / 0.200.x see [the upgrade guide](doc/upgrade-to-2
### :house: Internal

* refactor(configuration): remove redundant env var parsing in EnvironmentConfigFactory [#6710](https://github.com/open-telemetry/opentelemetry-js/pull/6710) @MikeGoldsmith
* refactor(sdk-node): replace usage of `NodeTracerProvider` for `BasicTracerProvider` in SDK start [#6640](https://github.com/open-telemetry/opentelemetry-js/pull/6640) @david-luna

## 0.218.0

Expand Down
122 changes: 111 additions & 11 deletions experimental/packages/exporter-trace-otlp-grpc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,17 @@ To see documentation and sample code for the metric exporter, see the [exporter-
The OTLPTraceExporter in Node expects the URL to only be the hostname. It will not work with `/v1/traces`.

```js
const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const collectorOptions = {
// url is optional and can be omitted - default is http://localhost:4317
Expand All @@ -34,11 +43,22 @@ const collectorOptions = {
};

const exporter = new OTLPTraceExporter(collectorOptions);
const provider = new NodeTracerProvider({
const provider = new BasicTracerProvider({
spanProcessors: [new SimpleSpanProcessor(exporter)]
});

provider.register();
// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
['SIGINT', 'SIGTERM'].forEach(signal => {
process.on(signal, () => provider.shutdown().catch(console.error));
});
Expand All @@ -47,8 +67,17 @@ provider.register();
By default, the exporter creates a secure (TLS) connection. When connecting to a local development collector without TLS, you can use an insecure connection by specifying the `http://` scheme in the URL:

```js
const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const collectorOptions = {
url: 'http://localhost:4317', // http:// creates an insecure connection
Expand All @@ -59,16 +88,36 @@ const provider = new NodeTracerProvider({
spanProcessors: [new SimpleSpanProcessor(exporter)]
});

provider.register();
// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
```

Alternatively, you can explicitly configure insecure credentials:

```js
const grpc = require('@grpc/grpc-js');

const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const collectorOptions = {
url: 'localhost:4317',
Expand All @@ -80,7 +129,18 @@ const provider = new NodeTracerProvider({
spanProcessors: [new SimpleSpanProcessor(exporter)]
});

provider.register();
// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
```

To use TLS in Node.js, provide `credentials` option like so:
Expand All @@ -89,8 +149,17 @@ To use TLS in Node.js, provide `credentials` option like so:
const fs = require('fs');
const grpc = require('@grpc/grpc-js');

const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const collectorOptions = {
// url is optional and can be omitted - default is http://localhost:4317
Expand All @@ -104,7 +173,18 @@ const provider = new NodeTracerProvider({
spanProcessors: [new SimpleSpanProcessor(exporter)]
});

provider.register();
// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
['SIGINT', 'SIGTERM'].forEach(signal => {
process.on(signal, () => provider.shutdown().catch(console.error));
});
Expand All @@ -127,8 +207,17 @@ The exporter can be configured to send custom metadata with each request as in t
```js
const grpc = require('@grpc/grpc-js');

const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const metadata = new grpc.Metadata();
// For instance, an API key or access token might go here.
Expand All @@ -146,7 +235,18 @@ const provider = new NodeTracerProvider({
spanProcessors: [new SimpleSpanProcessor(exporter)]
});

provider.register();
// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
['SIGINT', 'SIGTERM'].forEach(signal => {
process.on(signal, () => provider.shutdown().catch(console.error));
});
Expand Down
27 changes: 23 additions & 4 deletions experimental/packages/exporter-trace-otlp-http/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,17 @@ provider.register();
## Traces in Node - JSON over http

```js
const { NodeTracerProvider, BatchSpanProcessor } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const collectorOptions = {
url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:4318/v1/traces
Expand All @@ -71,7 +80,7 @@ const collectorOptions = {
};

const exporter = new OTLPTraceExporter(collectorOptions);
const provider = new NodeTracerProvider({
const provider = new BasicTracerProvider({
spanProcessors: [
new BatchSpanProcessor(exporter, {
// The maximum queue size. After the size is reached spans are dropped.
Expand All @@ -82,8 +91,18 @@ const provider = new NodeTracerProvider({
]
});

provider.register();

// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
```

## GRPC
Expand Down
25 changes: 22 additions & 3 deletions experimental/packages/exporter-trace-otlp-proto/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,17 @@ To see documentation and sample code for the metric exporter, see the [exporter-
## Traces in Node - PROTO over http

```js
const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-proto');
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const collectorOptions = {
url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:4318/v1/traces
Expand All @@ -37,8 +46,18 @@ const provider = new NodeTracerProvider({
spanProcessors: [new SimpleSpanProcessor(exporter)]
});

provider.register();

// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
```

## Exporter Timeout Configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,35 @@ OpenTelemetry gRPC Instrumentation allows the user to automatically collect trac
To load a specific instrumentation (**gRPC** in this case), specify it in the Node Tracer's configuration.

```javascript
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { BasicTracerProvider, SimpleSpanProcessor, ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-base');
const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');

const provider = new NodeTracerProvider({
const { AsyncLocalStorageContextManager } = require('@opentelemetry/context-async-hooks');
const {
CompositePropagator,
W3CBaggagePropagator,
W3CTraceContextPropagator,
} = require('@opentelemetry/core');
const {
trace, propagation, context,
} = require('@opentelemetry/api');

const provider = new BasicTracerProvider({
spanProcessors: [new SimpleSpanProcessor(new ConsoleSpanExporter())]
});

provider.register();

// Set context manager and propagation
context.setGlobalContextManager(new AsyncLocalStorageContextManager());
propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
],
})
);

trace.setGlobalTracerProvider(provider);
registerInstrumentations({
instrumentations: [new GrpcInstrumentation()]
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@
"@opentelemetry/context-async-hooks": "2.7.1",
"@opentelemetry/core": "2.7.1",
"@opentelemetry/sdk-trace-base": "2.7.1",
"@opentelemetry/sdk-trace-node": "2.7.1",
"@protobuf-ts/grpc-transport": "2.11.1",
"@protobuf-ts/plugin": "2.11.1",
"@protobuf-ts/runtime": "2.11.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import * as grpc from '@grpc/grpc-js';
import { GrpcTesterClient } from './proto/ts/fixtures/grpc-test.client';
import {
InMemorySpanExporter,
NodeTracerProvider,
BasicTracerProvider,
SimpleSpanProcessor,
} from '@opentelemetry/sdk-trace-node';
} from '@opentelemetry/sdk-trace-base';
import * as protoLoader from '@grpc/proto-loader';
import * as path from 'path';
import * as assert from 'assert';
Expand Down Expand Up @@ -138,7 +138,7 @@ describe('#grpc-protobuf', () => {
let client: GrpcTesterClient;
let server: grpc.Server;
let contextManager: ContextManager;
const provider = new NodeTracerProvider({
const provider = new BasicTracerProvider({
spanProcessors: [new SimpleSpanProcessor(memoryExporter)],
});

Expand Down
Loading
Loading