Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(examples/mongodb): Update mongodb example dependencies #2531

Merged
Merged
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
21 changes: 10 additions & 11 deletions examples/mongodb/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,20 @@
"url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues"
},
"dependencies": {
"@opentelemetry/api": "^1.0.0",
"@opentelemetry/exporter-jaeger": "^1.0.0",
"@opentelemetry/exporter-zipkin": "^1.0.0",
"@opentelemetry/instrumentation": "^0.48.0",
"@opentelemetry/instrumentation-http": "^0.48.0",
"@opentelemetry/instrumentation-mongodb": "^0.32.0",
"@opentelemetry/sdk-trace-node": "^1.0.0",
"@opentelemetry/sdk-trace-base": "^1.0.0",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/exporter-zipkin": "^1.27.0",
"@opentelemetry/instrumentation": "^0.54.2",
"@opentelemetry/instrumentation-http": "^0.54.2",
"@opentelemetry/instrumentation-mongodb": "^0.48.0",
"@opentelemetry/sdk-trace-node": "^1.27.0",
"@opentelemetry/sdk-trace-base": "^1.27.0",
"@opentelemetry/semantic-conventions": "^1.27.0",
"mongodb": "^3.6.11"
"mongodb": "^6.10.0"
},
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme",
"devDependencies": {
"cross-env": "^7.0.3",
"ts-node": "^10.6.0",
"typescript": "4.4.4"
"ts-node": "^10.9.2",
"typescript": "5.6.3"
}
}
44 changes: 24 additions & 20 deletions examples/mongodb/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ import * as api from '@opentelemetry/api';

import { setupTracing } from './tracer';

setupTracing('example-mongodb-server')
setupTracing('example-mongodb-server');

import { accessDB } from './utils';

import * as http from 'http';
import { IncomingMessage, ServerResponse } from 'http';
import * as mongodb from 'mongodb';
import {Collection} from "mongodb";
import { Collection } from 'mongodb';

const DB_NAME = 'mydb'
const COLLECTION_NAME = 'users'
const DB_NAME = 'mydb';
const COLLECTION_NAME = 'users';
const URL = `mongodb://localhost:27017/${DB_NAME}`;

let db: mongodb.Db;
Expand All @@ -28,7 +28,6 @@ function startServer(port: number) {
throw err;
});


// Creates a server
const server = http.createServer(handleRequest);
// Starts the server
Expand All @@ -40,16 +39,20 @@ function startServer(port: number) {
/** A function which handles requests and send response. */
function handleRequest(request: IncomingMessage, response: ServerResponse) {
const currentSpan = api.trace.getSpan(api.context.active());
// display traceID in the terminal
const traceId = currentSpan?.spanContext();
console.log(`traceid: ${traceId}`);
console.log(`Jaeger URL: http://localhost:16686/trace/${traceId}`);
console.log(`Zipkin URL: http://localhost:9411/zipkin/traces/${traceId}`);
if (currentSpan) {
// display traceID in the terminal
const { traceId } = currentSpan?.spanContext();
console.log(`traceid: ${traceId}`);
console.log(`Jaeger URL: http://localhost:16686/trace/${traceId}`);
console.log(`Zipkin URL: http://localhost:9411/zipkin/traces/${traceId}`);
} else {
console.log('No active span found');
}

try {
const body = [];
request.on('error', (err) => console.log(err));
request.on('data', (chunk) => body.push(chunk));
request.on('error', err => console.log(err));
request.on('data', chunk => body.push(chunk));
request.on('end', async () => {
if (request.url === '/collection/') {
handleCreateCollection(response);
Expand All @@ -71,12 +74,13 @@ startServer(8080);
function handleInsertQuery(response: ServerResponse) {
const obj = { name: 'John', age: '20' };
const usersCollection: Collection = db.collection(COLLECTION_NAME);
usersCollection.insertOne(obj)
usersCollection
.insertOne(obj)
.then(() => {
console.log('1 document inserted');
// find document to test context propagation using callback
usersCollection.findOne({}, function () {
response.end();
// find document to test context
usersCollection.findOne({}).then(res => {
console.log(JSON.stringify(res));
});
})
.catch(err => {
Expand All @@ -87,16 +91,16 @@ function handleInsertQuery(response: ServerResponse) {

function handleGetQuery(response: ServerResponse) {
const usersCollection: Collection = db.collection(COLLECTION_NAME);
usersCollection.
find({})
usersCollection
.find({})
.toArray()
.then(() => {
console.log('1 document served');
response.end();
})
.catch(err => {
throw err;
})
});
}

function handleCreateCollection(response: ServerResponse) {
Expand All @@ -108,7 +112,7 @@ function handleCreateCollection(response: ServerResponse) {
.catch(err => {
console.log('Error code:', err.code);
response.end(err.message);
});
});
}

function handleNotFound(response: ServerResponse) {
Expand Down
13 changes: 6 additions & 7 deletions examples/mongodb/src/tracer.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
import * as api from "@opentelemetry/api";
import * as api from '@opentelemetry/api';

import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
import { Resource } from '@opentelemetry/resources';
import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { ZipkinExporter } from '@opentelemetry/exporter-zipkin';
import { registerInstrumentations } from '@opentelemetry/instrumentation';
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb';
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';

import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';

export const setupTracing = (serviceName: string): api.Tracer => {
const provider = new NodeTracerProvider({
resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: serviceName
})
[ATTR_SERVICE_NAME]: serviceName,
}),
});

// Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings
Expand All @@ -32,7 +31,7 @@ export const setupTracing = (serviceName: string): api.Tracer => {
});

provider.addSpanProcessor(new SimpleSpanProcessor(new ZipkinExporter()));
provider.addSpanProcessor(new SimpleSpanProcessor(new JaegerExporter()));
provider.addSpanProcessor(new SimpleSpanProcessor(new OTLPTraceExporter()));

return api.trace.getTracer('mongodb-example');
};