Skip to content

Commit bc7f570

Browse files
authored
Merge branch 'main' into jamie.update-contributing-guidelines
2 parents 66749ed + fa78668 commit bc7f570

File tree

35 files changed

+271
-182
lines changed

35 files changed

+271
-182
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Before creating a pull request, please make sure:
77
- You have read the guide for contributing
88
- See https://github.com/open-telemetry/opentelemetry-js/blob/main/CONTRIBUTING.md
99
- You signed all your commits (otherwise we won't be able to merge the PR)
10-
- See https://github.com/open-telemetry/community/blob/main/CONTRIBUTING.md#sign-the-cla
10+
- See https://github.com/open-telemetry/community/blob/main/guides/contributor#sign-the-cla
1111
- You added unit tests for the new functionality
1212
- You mention in the PR description which issue it is addressing, e.g. "Fixes #xxx". This will auto-close
1313
the issue that your PR fixes (if such)

.github/component_owners.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ components:
7474
plugins/node/opentelemetry-instrumentation-aws-sdk:
7575
- blumamir
7676
- jj22ee
77+
- trivikr
7778
plugins/node/opentelemetry-instrumentation-bunyan:
7879
- seemk
7980
- trentm
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Create or Update OpenTelemetry Update PR
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
create-or-update-deps-pr:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Fork
11+
run: gh repo fork open-telemetry/opentelemetry-js-contrib
12+
env:
13+
GITHUB_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }}
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
with:
17+
repository: opentelemetrybot/opentelemetry-js-contrib
18+
ref: main
19+
token: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }}
20+
- name: Sync with upstream
21+
run: |
22+
git remote show origin
23+
git remote add upstream https://github.com/open-telemetry/opentelemetry-js-contrib.git
24+
git fetch upstream
25+
git reset --hard upstream/main
26+
git push origin main --force
27+
28+
- uses: actions/setup-node@v4
29+
with:
30+
cache: 'npm'
31+
cache-dependency-path: package-lock.json
32+
node-version: 22
33+
34+
- run: npm install -g npm@latest
35+
36+
- run: npm ci
37+
38+
- name: Create/Update Release PR
39+
run: |
40+
git config user.name opentelemetrybot
41+
git config user.email [email protected]
42+
git checkout -b feat/update-otel-deps
43+
node ./scripts/update-otel-deps.js
44+
git commit -am "feat(deps): update deps matching '@opentelemetry/*'"
45+
git push origin feat/update-otel-deps --force
46+
gh pr create --repo open-telemetry/opentelemetry-js-contrib --title 'chore: prepare next release' --body 'Updates all `@opentelemetry/*` dependencies to latest'
47+
env:
48+
GITHUB_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }}

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ git merge upstream/main
8888

8989
Remember to always work in a branch of your local copy, as you might otherwise have to contend with conflicts in main.
9090

91-
Please also see [GitHub workflow](https://github.com/open-telemetry/community/blob/main/CONTRIBUTING.md#github-workflow) section of general project contributing guide.
91+
Please also see [GitHub workflow](https://github.com/open-telemetry/community/blob/main/guides/contributor/processes.md#github-workflow) section of general project contributing guide.
9292

9393
## Development
9494

examples/express/README.md

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Overview
22

3-
OpenTelemetry Express Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (we can use Zipkin or Jaeger for this example), to give observability to distributed systems.
3+
OpenTelemetry Express Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (we use Jaeger for this example), to give observability to distributed systems.
44

55
This is a simple example that demonstrates tracing calls made to Express API. The example
66
shows key aspects of tracing such as
@@ -17,44 +17,34 @@ shows key aspects of tracing such as
1717
npm install
1818
```
1919

20-
Setup [Zipkin Tracing](https://zipkin.io/pages/quickstart.html)
21-
or
22-
Setup [Jaeger Tracing](https://www.jaegertracing.io/docs/latest/getting-started/#all-in-one)
23-
24-
## Run the Application
25-
26-
### Zipkin
27-
28-
Run the server:
29-
30-
```sh
31-
npm run zipkin:server
20+
Start Jaeger in Docker for receiving tracing data (see [the Jaeger docs](https://www.jaegertracing.io/docs/2.0/getting-started/#in-docker) for more details about running Jaeger):
21+
22+
```bash
23+
docker run --rm --name jaeger \
24+
-p 5778:5778 \
25+
-p 16686:16686 \
26+
-p 4317:4317 \
27+
-p 4318:4318 \
28+
-p 14250:14250 \
29+
-p 14268:14268 \
30+
-p 9411:9411 \
31+
jaegertracing/jaeger:2.0.0 \
32+
--set receivers.otlp.protocols.http.endpoint=0.0.0.0:4318 \
33+
--set receivers.otlp.protocols.grpc.endpoint=0.0.0.0:4317
3234
```
3335

34-
Then run the client in a separate terminal:
35-
36-
```sh
37-
npm run zipkin:client
38-
```
39-
40-
After a short time, the generated traces should be available in the Zipkin UI.
41-
Visit <http://localhost:9411/zipkin> and click the "RUN QUERY" button to view
42-
recent traces, then click "SHOW" on a given trace.
43-
44-
<p align="center"><img alt="Zipkin UI with trace" src="./images/zipkin.jpg?raw=true"/></p>
45-
46-
### Jaeger
36+
## Run the Application
4737

4838
Run the server:
4939

5040
```sh
51-
npm run jaeger:server
41+
npm run server
5242
```
5343

5444
Then run the client in a separate terminal:
5545

5646
```sh
57-
npm run jaeger:client
47+
npm run client
5848
```
5949

6050
Visit the Jaeger UI at <http://localhost:16686/search>, select a service (e.g. "example-express-client"), click "Find Traces", then click on a trace to view it.

examples/express/images/zipkin.jpg

-102 KB
Binary file not shown.

examples/express/package.json

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
"version": "0.1.0",
55
"description": "Example of Express integration with OpenTelemetry",
66
"scripts": {
7-
"zipkin:server": "cross-env EXPORTER=zipkin ts-node src/server.ts",
8-
"zipkin:client": "cross-env EXPORTER=zipkin ts-node src/client.ts",
9-
"jaeger:server": "cross-env EXPORTER=jaeger ts-node src/server.ts",
10-
"jaeger:client": "cross-env EXPORTER=jaeger ts-node src/client.ts",
7+
"server": "ts-node src/server.ts",
8+
"client": "ts-node src/client.ts",
119
"compile": "tsc -p ."
1210
},
1311
"repository": {
@@ -30,23 +28,21 @@
3028
},
3129
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/express#readme",
3230
"dependencies": {
33-
"@opentelemetry/api": "^1.3.0",
34-
"@opentelemetry/exporter-jaeger": "^1.18.1",
35-
"@opentelemetry/exporter-trace-otlp-proto": "^0.48.0",
36-
"@opentelemetry/exporter-zipkin": "^1.18.1",
37-
"@opentelemetry/instrumentation": "^0.48.0",
38-
"@opentelemetry/instrumentation-express": "^0.34.1",
39-
"@opentelemetry/instrumentation-http": "^0.48.0",
40-
"@opentelemetry/resources": "^1.18.1",
41-
"@opentelemetry/sdk-trace-base": "^1.18.1",
42-
"@opentelemetry/sdk-trace-node": "^1.18.1",
31+
"@opentelemetry/api": "^1.9.0",
32+
"@opentelemetry/exporter-trace-otlp-proto": "^0.54.2",
33+
"@opentelemetry/instrumentation": "^0.54.2",
34+
"@opentelemetry/instrumentation-express": "^0.44.0",
35+
"@opentelemetry/instrumentation-http": "^0.54.2",
36+
"@opentelemetry/resources": "^1.27.0",
37+
"@opentelemetry/sdk-trace-base": "^1.27.0",
38+
"@opentelemetry/sdk-trace-node": "^1.27.0",
4339
"@opentelemetry/semantic-conventions": "^1.27.0",
4440
"axios": "^1.6.0",
45-
"cross-env": "^7.0.3",
4641
"express": "^4.17.1"
4742
},
4843
"devDependencies": {
4944
"@types/express": "^4.17.13",
45+
"@types/node": "18.18.14",
5046
"ts-node": "^10.6.0",
5147
"typescript": "4.4.4"
5248
}

examples/express/src/tracer.ts

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,39 @@
11
'use strict';
22

3-
import { SpanKind, Attributes } from "@opentelemetry/api";
4-
5-
const opentelemetry = require('@opentelemetry/api');
6-
7-
// Not functionally required but gives some insight what happens behind the scenes
8-
const { diag, DiagConsoleLogger, DiagLogLevel } = opentelemetry;
9-
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO);
10-
3+
import { trace, SamplingDecision, SpanKind, Attributes } from '@opentelemetry/api';
114
import { registerInstrumentations } from '@opentelemetry/instrumentation';
125
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
136
import { Sampler, AlwaysOnSampler, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
147
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';
15-
import { ZipkinExporter } from '@opentelemetry/exporter-zipkin';
168
import { Resource } from '@opentelemetry/resources';
17-
import { SEMRESATTRS_SERVICE_NAME, SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';
18-
19-
const Exporter = (process.env.EXPORTER || '').toLowerCase().startsWith('z') ? ZipkinExporter : OTLPTraceExporter;
9+
import { ATTR_SERVICE_NAME, ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';
2010
import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';
21-
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');
11+
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
2212

2313
export const setupTracing = (serviceName: string) => {
2414
const provider = new NodeTracerProvider({
2515
resource: new Resource({
26-
[SEMRESATTRS_SERVICE_NAME]: serviceName,
16+
[ATTR_SERVICE_NAME]: serviceName,
2717
}),
2818
sampler: filterSampler(ignoreHealthCheck, new AlwaysOnSampler()),
2919
});
3020
registerInstrumentations({
3121
tracerProvider: provider,
3222
instrumentations: [
3323
// Express instrumentation expects HTTP layer to be instrumented
34-
HttpInstrumentation,
35-
ExpressInstrumentation,
24+
new HttpInstrumentation(),
25+
new ExpressInstrumentation(),
3626
],
3727
});
3828

39-
const exporter = new Exporter({
40-
serviceName,
41-
});
29+
const exporter = new OTLPTraceExporter({});
4230

4331
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
4432

4533
// Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings
4634
provider.register();
4735

48-
return opentelemetry.trace.getTracer(serviceName);
36+
return trace.getTracer(serviceName);
4937
};
5038

5139
type FilterFunction = (spanName: string, spanKind: SpanKind, attributes: Attributes) => boolean;
@@ -54,7 +42,7 @@ function filterSampler(filterFn: FilterFunction, parent: Sampler): Sampler {
5442
return {
5543
shouldSample(ctx, tid, spanName, spanKind, attr, links) {
5644
if (!filterFn(spanName, spanKind, attr)) {
57-
return { decision: opentelemetry.SamplingDecision.NOT_RECORD };
45+
return { decision: SamplingDecision.NOT_RECORD };
5846
}
5947
return parent.shouldSample(ctx, tid, spanName, spanKind, attr, links);
6048
},
@@ -65,5 +53,5 @@ function filterSampler(filterFn: FilterFunction, parent: Sampler): Sampler {
6553
}
6654

6755
function ignoreHealthCheck(spanName: string, spanKind: SpanKind, attributes: Attributes) {
68-
return spanKind !== opentelemetry.SpanKind.SERVER || attributes[SEMATTRS_HTTP_ROUTE] !== "/health";
56+
return spanKind !== SpanKind.SERVER || attributes[ATTR_HTTP_ROUTE] !== "/health";
6957
}

examples/mongodb/package.json

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,20 @@
3030
"url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues"
3131
},
3232
"dependencies": {
33-
"@opentelemetry/api": "^1.0.0",
34-
"@opentelemetry/exporter-jaeger": "^1.0.0",
35-
"@opentelemetry/exporter-zipkin": "^1.0.0",
36-
"@opentelemetry/instrumentation": "^0.48.0",
37-
"@opentelemetry/instrumentation-http": "^0.48.0",
38-
"@opentelemetry/instrumentation-mongodb": "^0.32.0",
39-
"@opentelemetry/sdk-trace-node": "^1.0.0",
40-
"@opentelemetry/sdk-trace-base": "^1.0.0",
33+
"@opentelemetry/api": "^1.9.0",
34+
"@opentelemetry/exporter-zipkin": "^1.27.0",
35+
"@opentelemetry/instrumentation": "^0.54.2",
36+
"@opentelemetry/instrumentation-http": "^0.54.2",
37+
"@opentelemetry/instrumentation-mongodb": "^0.48.0",
38+
"@opentelemetry/sdk-trace-node": "^1.27.0",
39+
"@opentelemetry/sdk-trace-base": "^1.27.0",
4140
"@opentelemetry/semantic-conventions": "^1.27.0",
42-
"mongodb": "^3.6.11"
41+
"mongodb": "^6.10.0"
4342
},
4443
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme",
4544
"devDependencies": {
4645
"cross-env": "^7.0.3",
47-
"ts-node": "^10.6.0",
48-
"typescript": "4.4.4"
46+
"ts-node": "^10.9.2",
47+
"typescript": "5.6.3"
4948
}
5049
}

0 commit comments

Comments
 (0)