From e7365e99e7f48faf4088b14e6ae2c260867b7fe1 Mon Sep 17 00:00:00 2001 From: Bartlomiej Obecny Date: Wed, 11 Aug 2021 13:27:59 +0200 Subject: [PATCH 1/6] feat: new fastify instrumentation --- examples/connect/client.js | 3 +- examples/connect/server.js | 2 +- examples/connect/tracing.js | 2 +- examples/fastify/README.md | 56 ++++ examples/fastify/client.js | 39 +++ examples/fastify/docker/collector-config.yaml | 28 ++ examples/fastify/docker/docker-compose.yaml | 21 ++ examples/fastify/images/trace1.png | Bin 0 -> 365982 bytes examples/fastify/package.json | 59 ++++ examples/fastify/server.js | 46 +++ examples/fastify/tracing.js | 52 ++++ examples/grpc_dynamic_codegen/tracer.js | 1 - examples/mongodb/server.js | 1 + examples/web/webpack.config.js | 2 +- .../.eslintignore | 2 + .../.eslintrc.js | 7 + .../.npmignore | 4 + .../LICENSE | 201 ++++++++++++ .../README.md | 70 +++++ .../package.json | 70 +++++ .../src/enums/AttributeNames.ts | 32 ++ .../src/index.ts | 19 ++ .../src/instrumentation.ts | 248 +++++++++++++++ .../src/types.ts | 17 + .../src/utils.ts | 71 +++++ .../src/version.ts | 18 ++ .../test/instrumentation.test.ts | 292 ++++++++++++++++++ .../tsconfig.json | 11 + 28 files changed, 1369 insertions(+), 5 deletions(-) create mode 100644 examples/fastify/README.md create mode 100644 examples/fastify/client.js create mode 100644 examples/fastify/docker/collector-config.yaml create mode 100644 examples/fastify/docker/docker-compose.yaml create mode 100644 examples/fastify/images/trace1.png create mode 100644 examples/fastify/package.json create mode 100644 examples/fastify/server.js create mode 100644 examples/fastify/tracing.js create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/.eslintignore create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/.eslintrc.js create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/.npmignore create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/LICENSE create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/README.md create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/package.json create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/src/index.ts create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/src/types.ts create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/src/version.ts create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/tsconfig.json diff --git a/examples/connect/client.js b/examples/connect/client.js index dc34f77e6c..265710d3b1 100644 --- a/examples/connect/client.js +++ b/examples/connect/client.js @@ -2,7 +2,8 @@ // eslint-disable-next-line import/order const tracing = require('./tracing')('example-connect-client'); -const tracer = tracing.tracer; + +const { tracer } = tracing; const api = require('@opentelemetry/api'); const axios = require('axios').default; diff --git a/examples/connect/server.js b/examples/connect/server.js index a92bb092f6..0c70584891 100644 --- a/examples/connect/server.js +++ b/examples/connect/server.js @@ -11,6 +11,7 @@ const axios = require('axios'); const app = connect(); const PORT = 8080; +// eslint-disable-next-line prefer-arrow-callback app.use(function middleware1(req, res, next) { next(); }); @@ -32,7 +33,6 @@ app.use('/run_test', async (req, res) => { tracing.log('enabling connect'); tracing.connectInstrumentation.enable(); } - }); app.listen(PORT); diff --git a/examples/connect/tracing.js b/examples/connect/tracing.js index 85cb967d4e..b0584bb5b6 100644 --- a/examples/connect/tracing.js +++ b/examples/connect/tracing.js @@ -48,5 +48,5 @@ module.exports = (serviceName) => { connectInstrumentation, provider, tracer: opentelemetry.trace.getTracer('connect-example'), - } + }; }; diff --git a/examples/fastify/README.md b/examples/fastify/README.md new file mode 100644 index 0000000000..bde7fff0bc --- /dev/null +++ b/examples/fastify/README.md @@ -0,0 +1,56 @@ +# Overview + +OpenTelemetry Fastify Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (Collector Exporter), to give observability to distributed systems. + +This is a simple example that demonstrates tracing calls made to Fastify API. The example shows key aspects of tracing such as +- Root Span (on Client) +- Child Span (on Client) +- Span Events +- Span Attributes + +## Installation + +```sh +$ # from this directory +$ npm install +``` + +## Run the Application + +### Collector - docker container + + - Run docker container with collector + + ```sh + # from this directory + $ npm run docker:start + ``` + +### Server + + - Run the server + + ```sh + # from this directory + $ npm run server + ``` + + - Run the client + + ```sh + # from this directory + npm run client + ``` + +#### Zipkin UI +Go to Zipkin with your browser [http://localhost:9411/]() + +

+ +## Useful links +- For more information on OpenTelemetry, visit: +- For more information on OpenTelemetry for Node.js, visit: + +## LICENSE + +Apache License 2.0 diff --git a/examples/fastify/client.js b/examples/fastify/client.js new file mode 100644 index 0000000000..5f34229b75 --- /dev/null +++ b/examples/fastify/client.js @@ -0,0 +1,39 @@ +'use strict'; + +// eslint-disable-next-line import/order +const tracing = require('./tracing')('example-fastify-client'); + +const { tracer } = tracing; +const api = require('@opentelemetry/api'); +const axios = require('axios').default; + +function makeRequest() { + tracing.log('starting'); + const span = tracer.startSpan('client.makeRequest()', { + kind: api.SpanKind.CLIENT, + }); + + api.context.with(api.trace.setSpan(api.ROOT_CONTEXT, span), async () => { + try { + const res = await axios.post('http://localhost:8080/run_test', { + // testing + // const res = await axios.post('http://localhost:8080/run_test2', { + headers: { + 'Content-Type': 'application/json', + }, + timeout: 3000, + }); + tracing.log('status:', res.statusText); + span.setStatus({ code: api.SpanStatusCode.OK }); + } catch (e) { + tracing.log('failed:', e.message); + span.setStatus({ code: api.SpanStatusCode.ERROR, message: e.message }); + } + span.end(); + tracing.log('forcing spans to be exported'); + await tracing.provider.shutdown(); + tracing.log('all spans exported successfully.'); + }); +} + +makeRequest(); diff --git a/examples/fastify/docker/collector-config.yaml b/examples/fastify/docker/collector-config.yaml new file mode 100644 index 0000000000..04d65a6ba2 --- /dev/null +++ b/examples/fastify/docker/collector-config.yaml @@ -0,0 +1,28 @@ +receivers: + otlp: + protocols: + grpc: + http: + cors_allowed_origins: + - http://* + - https://* + +exporters: + zipkin: + endpoint: "http://zipkin-all-in-one:9411/api/v2/spans" + prometheus: + endpoint: "0.0.0.0:9464" + +processors: + batch: + +service: + pipelines: + traces: + receivers: [otlp] + exporters: [zipkin] + processors: [batch] + metrics: + receivers: [otlp] + exporters: [prometheus] + processors: [batch] diff --git a/examples/fastify/docker/docker-compose.yaml b/examples/fastify/docker/docker-compose.yaml new file mode 100644 index 0000000000..396ca636ec --- /dev/null +++ b/examples/fastify/docker/docker-compose.yaml @@ -0,0 +1,21 @@ +version: "3" +services: + # Collector + collector: + image: otel/opentelemetry-collector:0.30.0 +# image: otel/opentelemetry-collector:latest + command: ["--config=/conf/collector-config.yaml", "--log-level=DEBUG"] + volumes: + - ./collector-config.yaml:/conf/collector-config.yaml + ports: + - "9464:9464" + - "4317:4317" + - "55681:55681" + depends_on: + - zipkin-all-in-one + + # Zipkin + zipkin-all-in-one: + image: openzipkin/zipkin:latest + ports: + - "9411:9411" diff --git a/examples/fastify/images/trace1.png b/examples/fastify/images/trace1.png new file mode 100644 index 0000000000000000000000000000000000000000..c850b1f72a1e9c0977b32bc0af45a677cccb1a44 GIT binary patch literal 365982 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

mxv&$6nv53n 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 ^X-h$J7nK5N{R)D`TNBp9R?O`|rZoe|4`8MvQ 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 R{{{Y?l2ba7a7_R9{{hL*K5qa3 literal 0 HcmV?d00001 diff --git a/examples/fastify/package.json b/examples/fastify/package.json new file mode 100644 index 0000000000..9f57b516d2 --- /dev/null +++ b/examples/fastify/package.json @@ -0,0 +1,59 @@ +{ + "name": "example-fastify", + "private": true, + "version": "0.24.0", + "description": "Example of Fastify integration with OpenTelemetry", + "main": "index.js", + "scripts": { + "client": "node ./client.js", + "docker:start": "cd ./docker && docker-compose down && docker-compose up", + "docker:stop": "cd ./docker && docker-compose down", + "server": "node ./server.js" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/open-telemetry/opentelemetry-js.git" + }, + "keywords": [ + "opentelemetry", + "express", + "tracing" + ], + "engines": { + "node": ">=8" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js/issues" + }, + "dependencies": { + "@opentelemetry/api": "^1.0.1", + "@opentelemetry/exporter-jaeger": "^0.24.0", + "@opentelemetry/exporter-zipkin": "^0.24.0", + "@opentelemetry/exporter-collector": "^0.24.0", + "@opentelemetry/instrumentation": "^0.24.0", + "@opentelemetry/instrumentation-fastify": "^0.24.0", + "@opentelemetry/instrumentation-http": "^0.24.0", + "@opentelemetry/node": "^0.24.0", + "@opentelemetry/resources": "^0.24.0", + "@opentelemetry/semantic-conventions": "^0.24.0", + "@opentelemetry/tracing": "^0.24.0", + "axios": "^0.21.1", + "cross-env": "^7.0.3", + "fastify": "^3.19.2", + "fastify-cors": "^6.0.2", + "fastify-express": "^0.3.3", + "middie": "^5.3.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "devDependencies": {} +} diff --git a/examples/fastify/server.js b/examples/fastify/server.js new file mode 100644 index 0000000000..d28536973b --- /dev/null +++ b/examples/fastify/server.js @@ -0,0 +1,46 @@ +'use strict'; + +// eslint-disable-next-line +const tracing = require('./tracing')('example-fastify-server'); +const opentelemetry = require('@opentelemetry/api'); + +const { context, trace } = opentelemetry; +const Fastify = require('fastify'); +const axios = require('axios'); + +const PORT = 8080; +const app = Fastify({ logger: true }); +app + .register(require('fastify-express')) + .register(subsystem); + +async function subsystem(fastify) { + fastify.addHook('onRequest', async () => { + const span = trace.getSpan(context.active()); + console.log('first', span); + }); + // eslint-disable-next-line prefer-arrow-callback + fastify.addHook('onRequest', async function onRequestHook() { + const span = trace.getSpan(context.active()); + console.log('second', span); + }); + fastify.use((req, res, next) => { + const span = trace.getSpan(context.active()); + console.log('third', span); + next(); + }); + fastify.post('/run_test2', async (req, res) => { + const result = await axios.get('https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'); + const result2 = await axios.get('https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'); + tracing.log('sending response'); + res.send(`OK ${result.data.version} ${result2.data.version}`); + }); +} + +app.post('/run_test', async (req, res) => { + const result = await axios.get('https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'); + tracing.log('sending response'); + res.send(`OK ${result.data.version}`); +}); + +app.listen(PORT); diff --git a/examples/fastify/tracing.js b/examples/fastify/tracing.js new file mode 100644 index 0000000000..2a0e951aaf --- /dev/null +++ b/examples/fastify/tracing.js @@ -0,0 +1,52 @@ +'use strict'; + +const opentelemetry = require('@opentelemetry/api'); + +const { diag, DiagConsoleLogger, DiagLogLevel } = opentelemetry; +diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); + +const { Resource } = require('@opentelemetry/resources'); +const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { NodeTracerProvider } = require('@opentelemetry/node'); +const { SimpleSpanProcessor } = require('@opentelemetry/tracing'); +const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector'); + +const { FastifyInstrumentation } = require('@opentelemetry/instrumentation-fastify'); +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); + +function log() { + // eslint-disable-next-line prefer-rest-params + const args = Array.from(arguments) || []; + args.unshift(new Date()); + console.log.apply(this, args); +} + +module.exports = (serviceName) => { + const provider = new NodeTracerProvider({ + resource: new Resource({ + [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + }), + }); + const fastifyInstrumentation = new FastifyInstrumentation(); + registerInstrumentations({ + tracerProvider: provider, + instrumentations: [ + // Fastify instrumentation expects HTTP layer to be instrumented + HttpInstrumentation, + fastifyInstrumentation, + ], + }); + + const exporter = new CollectorTraceExporter(); + provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + + // Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings + provider.register({}); + return { + log, + fastifyInstrumentation, + provider, + tracer: opentelemetry.trace.getTracer('fastify-example'), + }; +}; diff --git a/examples/grpc_dynamic_codegen/tracer.js b/examples/grpc_dynamic_codegen/tracer.js index e4c843b236..945d346835 100644 --- a/examples/grpc_dynamic_codegen/tracer.js +++ b/examples/grpc_dynamic_codegen/tracer.js @@ -8,7 +8,6 @@ const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc'); - const EXPORTER = process.env.EXPORTER || ''; module.exports = (serviceName) => { diff --git a/examples/mongodb/server.js b/examples/mongodb/server.js index c97b354178..082f599976 100644 --- a/examples/mongodb/server.js +++ b/examples/mongodb/server.js @@ -68,6 +68,7 @@ function handleInsertQuery(response) { } else { console.log('1 document inserted'); // find document to test context propagation using callback + // eslint-disable-next-line prefer-arrow-callback collection.findOne({}, function () { response.end(); }); diff --git a/examples/web/webpack.config.js b/examples/web/webpack.config.js index a431e9e2b6..fd3de03bb4 100644 --- a/examples/web/webpack.config.js +++ b/examples/web/webpack.config.js @@ -10,7 +10,7 @@ const common = { mode: 'development', entry: { 'document-load': 'examples/document-load/index.js', - 'meta': 'examples/meta/index.js', + meta: 'examples/meta/index.js', 'user-interaction': 'examples/user-interaction/index.js', }, output: { diff --git a/plugins/node/opentelemetry-instrumentation-fastify/.eslintignore b/plugins/node/opentelemetry-instrumentation-fastify/.eslintignore new file mode 100644 index 0000000000..5498e0f48a --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/.eslintignore @@ -0,0 +1,2 @@ +build +coverage diff --git a/plugins/node/opentelemetry-instrumentation-fastify/.eslintrc.js b/plugins/node/opentelemetry-instrumentation-fastify/.eslintrc.js new file mode 100644 index 0000000000..f756f4488b --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + "env": { + "mocha": true, + "node": true + }, + ...require('../../../eslint.config.js') +} diff --git a/plugins/node/opentelemetry-instrumentation-fastify/.npmignore b/plugins/node/opentelemetry-instrumentation-fastify/.npmignore new file mode 100644 index 0000000000..9505ba9450 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/.npmignore @@ -0,0 +1,4 @@ +/bin +/coverage +/doc +/test diff --git a/plugins/node/opentelemetry-instrumentation-fastify/LICENSE b/plugins/node/opentelemetry-instrumentation-fastify/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/plugins/node/opentelemetry-instrumentation-fastify/README.md b/plugins/node/opentelemetry-instrumentation-fastify/README.md new file mode 100644 index 0000000000..1f0a438bd9 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/README.md @@ -0,0 +1,70 @@ +# OpenTelemetry Fastify Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![dependencies][dependencies-image]][dependencies-url] +[![devDependencies][devDependencies-image]][devDependencies-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for [`fastify`](https://www.fastify.io/). + +For automatic instrumentation see the +[@opentelemetry/node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-node) package. + +## Installation + +This instrumentation relies on HTTP calls to also be instrumented. Make sure you install and enable both, otherwise you will have spans that are not fastifyed to each other. + +```bash +npm install --save @opentelemetry/instrumentation-http @opentelemetry/instrumentation-fastify +``` + +### Supported Versions + +- `^3.0.0` + +## Usage + +OpenTelemetry fastify Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +To load the instrumentation, specify it in the Node Tracer's configuration: + +```js +const { NodeTracerProvider } = require('@opentelemetry/node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); +const { FastifyInstrumentation } = require('@opentelemetry/instrumentation-connnect'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + // Fastify instrumentation expects HTTP layer to be instrumented + new HttpInstrumentation(), + new FastifyInstrumentation(), + ], +}); +``` + +See [examples/fastify](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/fastify) for a short example. + + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js-contrib.svg?path=plugins%2Fnode%2Fopentelemetry-instrumentation-fastify +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=plugins%2Fnode%2Fopentelemetry-instrumentation-fastify +[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js-contrib.svg?path=plugins%2Fnode%2Fopentelemetry-instrumentation-fastify&type=dev +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=plugins%2Fnode%2Fopentelemetry-instrumentation-fastify&type=dev +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-fastify +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-fastify.svg diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json new file mode 100644 index 0000000000..a57009fb9f --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -0,0 +1,70 @@ +{ + "name": "@opentelemetry/instrumentation-fastify", + "version": "0.24.0", + "description": "OpenTelemetry fastly automatic instrumentation package.", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js-contrib", + "scripts": { + "clean": "rimraf build/*", + "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", + "compile": "npm run version:update && tsc -p .", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "precompile": "tsc --version", + "prepare": "npm run compile", + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "version:update": "node ../../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "opentelemetry", + "fastify", + "nodejs", + "tracing", + "profiling", + "instrumentation" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.5.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + }, + "devDependencies": { + "@opentelemetry/api": "1.0.1", + "@opentelemetry/context-async-hooks": "0.24.0", + "@opentelemetry/instrumentation-http": "0.24.0", + "@opentelemetry/node": "0.24.0", + "@opentelemetry/tracing": "0.24.0", + "@types/express": "4.17.13", + "@types/mocha": "7.0.2", + "@types/node": "14.17.4", + "codecov": "3.8.2", + "fastify-express": "0.3.3", + "gts": "3.1.0", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "3.0.2", + "ts-mocha": "8.0.0", + "typescript": "4.3.5" + }, + "dependencies": { + "@opentelemetry/core": "^0.24.0", + "@opentelemetry/instrumentation": "^0.24.0", + "@opentelemetry/semantic-conventions": "^0.24.0", + "fastify": "^3.19.2" + } +} diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts new file mode 100644 index 0000000000..3626fb8fab --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export enum AttributeNames { + FASTIFY_NAME = 'fastify.name', + FASTIFY_TYPE = 'fastify.type', + HOOK_NAME = 'hook.name', + PLUGIN_NAME = 'plugin.name', +} + +export enum FastifyTypes { + MIDDLEWARE = 'middleware', + REQUEST_HANDLER = 'request_handler', +} + +export enum FastifyNames { + MIDDLEWARE = 'middleware', + REQUEST_HANDLER = 'request handler', +} diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/index.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/index.ts new file mode 100644 index 0000000000..16b659dde3 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './enums/AttributeNames'; +export * from './instrumentation'; +export * from './types'; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts new file mode 100644 index 0000000000..8fb12e7604 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -0,0 +1,248 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + context, + diag, + Span, + SpanAttributes, + SpanOptions, + SpanStatusCode, + trace, +} from '@opentelemetry/api'; +import { getRPCMetadata, RPCType } from '@opentelemetry/core'; +import { + InstrumentationBase, + InstrumentationConfig, + InstrumentationNodeModuleDefinition, + safeExecuteInTheMiddle, +} from '@opentelemetry/instrumentation'; +import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import type { HookHandlerDoneFunction } from 'fastify/types/hooks'; +import type { FastifyInstance } from 'fastify/types/instance'; +import type { FastifyReply } from 'fastify/types/reply'; +import type { FastifyRequest } from 'fastify/types/request'; +import { + AttributeNames, + FastifyNames, + FastifyTypes, +} from './enums/AttributeNames'; +import type { HandlerOriginal } from './types'; +import { safeExecuteInTheMiddleMaybePromise } from './utils'; +import { VERSION } from './version'; + +export const ANONYMOUS_NAME = 'anonymous'; + +/** Fastify instrumentation for OpenTelemetry */ +export class FastifyInstrumentation extends InstrumentationBase { + constructor(config: InstrumentationConfig = {}) { + super( + '@opentelemetry/instrumentation-fastify', + VERSION, + Object.assign({}, config) + ); + } + + init() { + return [ + new InstrumentationNodeModuleDefinition( + 'fastify', + ['^3.0.0'], + (moduleExports, moduleVersion) => { + diag.debug(`Applying patch for fastify@${moduleVersion}`); + return this._patchConstructor(moduleExports); + }, + (moduleExports, moduleVersion) => { + diag.debug(`Removing patch for fastify@${moduleVersion}`); + } + ), + ]; + } + + private _hookOnRequest() { + const instrumentation = this; + return function onRequest( + request: FastifyRequest, + reply: FastifyReply, + done: HookHandlerDoneFunction + ) { + if (!instrumentation.isEnabled()) { + return done(); + } + const rpcMetadata = getRPCMetadata(context.active()); + const routeName = request.routerPath; + if (routeName && rpcMetadata?.type === RPCType.HTTP) { + rpcMetadata.span.updateName(`${request.method} ${routeName || '/'}`); + } + done(); + }; + } + + private _wrapHandler( + pluginName: string, + hookName: string, + original: () => Promise | void + ): () => Promise | void { + const instrumentation = this; + return function (this: any, ...args): Promise | void { + if (!instrumentation.isEnabled()) { + return original.apply(this, args); + } + + const spanName = `${FastifyNames.MIDDLEWARE} - ${ + original.name || ANONYMOUS_NAME + }`; + + const span = instrumentation._startSpan(spanName, { + [AttributeNames.FASTIFY_TYPE]: FastifyTypes.MIDDLEWARE, + [AttributeNames.PLUGIN_NAME]: pluginName, + [AttributeNames.HOOK_NAME]: hookName, + }); + + return safeExecuteInTheMiddleMaybePromise( + () => { + return original.apply(this, args); + }, + err => { + if (err) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err.message, + }); + span.recordException(err); + } + span.end(); + } + ); + }; + } + + private _wrapAddHook(): ( + original: FastifyInstance['addHook'] + ) => () => FastifyInstance { + const instrumentation = this; + return function ( + original: FastifyInstance['addHook'] + ): () => FastifyInstance { + return function wrappedAddHook(this: any, ...args: any) { + if (!instrumentation.isEnabled()) { + return original.apply(this, args); + } + + const name = args[0] as string; + const handler = args[1] as HandlerOriginal; + const pluginName = this.pluginName; + if (name === 'onRegister') { + return original.apply(this, [name as any, handler]); + } + return original.apply(this, [ + name as any, + instrumentation._wrapHandler(pluginName, name, handler), + ]); + }; + }; + } + + private _patchConstructor( + original: () => FastifyInstance + ): () => FastifyInstance { + const instrumentation = this; + return function (this: FastifyInstance, ...args) { + const app: FastifyInstance = original.apply(this, args); + app.addHook('onRequest', instrumentation._hookOnRequest()); + app.addHook('preHandler', instrumentation._hookPreHandler()); + + instrumentation._wrap(app, 'addHook', instrumentation._wrapAddHook()); + + return app; + }; + } + + public _patchSend(span: Span) { + const instrumentation = this; + return function patchSend( + original: () => FastifyReply + ): () => FastifyReply { + return function send(this: FastifyReply, ...args) { + if (!instrumentation.isEnabled()) { + return original.apply(this, args); + } + + return safeExecuteInTheMiddle( + () => { + return original.apply(this, args); + }, + err => { + if (err) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err.message, + }); + span.recordException(err); + } + span.end(); + } + ); + }; + }; + } + + public _hookPreHandler() { + const instrumentation = this; + return function preHandler( + this: any, + request: FastifyRequest, + reply: FastifyReply, + done: HookHandlerDoneFunction + ) { + if (!instrumentation.isEnabled()) { + return done(); + } + const requestContext = (request as any).context || {}; + const handlerName = (requestContext.handler?.name || '').substr(6); + const spanName = `${FastifyNames.REQUEST_HANDLER} - ${ + handlerName || ANONYMOUS_NAME + }`; + + const spanAttributes: SpanAttributes = { + [AttributeNames.PLUGIN_NAME]: this.pluginName, + [AttributeNames.FASTIFY_TYPE]: FastifyTypes.REQUEST_HANDLER, + [SemanticAttributes.HTTP_ROUTE]: request.routerPath, + }; + if (handlerName) { + spanAttributes[AttributeNames.FASTIFY_NAME] = handlerName; + } + const span = instrumentation._startSpan(spanName, spanAttributes); + instrumentation._wrap(reply, 'send', instrumentation._patchSend(span)); + return context.with(trace.setSpan(context.active(), span), () => { + done(); + }); + }; + } + + public _startSpan( + spanName: string, + spanAttributes: SpanAttributes = {} + ): Span { + const options: SpanOptions = { + attributes: { + ...spanAttributes, + }, + }; + + return this.tracer.startSpan(spanName, options); + } +} diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/types.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/types.ts new file mode 100644 index 0000000000..a0534a3207 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/types.ts @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type HandlerOriginal = (() => Promise) & (() => void); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts new file mode 100644 index 0000000000..a9db28dabf --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts @@ -0,0 +1,71 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// @TODO after approve add this to instrumentation package and replace usage +// when it will be released + +/** + * This function handles the missing case from instrumentation package when + * execute can either return a promise or void. And using async is not an + * option as it is producing unwanted side effects. + * @param execute - function to be executed + * @param onFinish - function called when function executed + * @param preventThrowingError - prevent to throw error when execute + * function fails + */ +export function safeExecuteInTheMiddleMaybePromise( + execute: () => Promise | T, + onFinish: (e: Error | undefined, result?: T) => void, + preventThrowingError?: boolean +): Promise | T | void { + let error: Error | undefined; + let executeResult: Promise | T | void; + let isPromise = false; + let result: T | undefined = undefined; + try { + executeResult = execute(); + const promiseResult = executeResult as Promise; + + isPromise = + promiseResult && + typeof promiseResult.then === 'function' && + typeof promiseResult.catch === 'function'; + + if (isPromise) { + promiseResult + .then(res => { + onFinish(undefined, res); + }) + .catch((err: Error) => { + onFinish(err); + }); + } else { + result = executeResult as T | undefined; + } + } catch (e) { + error = e; + } finally { + if (!isPromise || error) { + onFinish(error, result); + if (error && !preventThrowingError) { + // eslint-disable-next-line no-unsafe-finally + throw error; + } + } + // eslint-disable-next-line no-unsafe-finally + return executeResult; + } +} diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/version.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/version.ts new file mode 100644 index 0000000000..2902e7d262 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/version.ts @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// this is autogenerated file, see scripts/version-update.js +export const VERSION = '0.24.0'; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts new file mode 100644 index 0000000000..8d4da51f10 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts @@ -0,0 +1,292 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as assert from 'assert'; +import { context } from '@opentelemetry/api'; +import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; +import { NodeTracerProvider } from '@opentelemetry/node'; +import { + InMemorySpanExporter, + ReadableSpan, + SimpleSpanProcessor, +} from '@opentelemetry/tracing'; +import { HookHandlerDoneFunction } from 'fastify/types/hooks'; +import { FastifyReply } from 'fastify/types/reply'; +import { FastifyRequest } from 'fastify/types/request'; +import * as http from 'http'; +import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; +import { ANONYMOUS_NAME } from '../src/instrumentation'; +import { FastifyInstrumentation } from '../src'; + +const URL = require('url').URL; + +const httpRequest = { + get: (options: http.ClientRequestArgs | string) => { + return new Promise((resolve, reject) => { + return http.get(options, resp => { + let data = ''; + resp.on('data', chunk => { + data += chunk; + }); + resp.on('end', () => { + resolve(data); + }); + resp.on('error', err => { + reject(err); + }); + }); + }); + }, +}; + +const httpInstrumentation = new HttpInstrumentation(); +const instrumentation = new FastifyInstrumentation(); +const contextManager = new AsyncHooksContextManager().enable(); +const memoryExporter = new InMemorySpanExporter(); +const provider = new NodeTracerProvider(); +const spanProcessor = new SimpleSpanProcessor(memoryExporter); +instrumentation.setTracerProvider(provider); +httpInstrumentation.setTracerProvider(provider); +context.setGlobalContextManager(contextManager); + +provider.addSpanProcessor(spanProcessor); +instrumentation.enable(); +httpInstrumentation.enable(); + +import 'fastify-express'; +import { FastifyInstance } from 'fastify/types/instance'; + +const Fastify = require('fastify'); + +function getSpans(): ReadableSpan[] { + const spans = memoryExporter.getFinishedSpans().filter(s => { + return ( + s.instrumentationLibrary.name === '@opentelemetry/instrumentation-fastify' + ); + }); + return spans; +} + +describe('fastify', () => { + let PORT: number; + let app: FastifyInstance; + + function startServer(): Promise { + return new Promise(resolve => + app.listen(0, (err, address) => { + const url = new URL(address); + PORT = parseInt(url.port, 10); + resolve(); + }) + ); + } + + beforeEach(async () => { + instrumentation.enable(); + app = Fastify(); + app.register(require('fastify-express')); + }); + + afterEach(async () => { + await new Promise(resolve => + app.close(() => { + resolve(); + }) + ); + + contextManager.disable(); + contextManager.enable(); + memoryExporter.reset(); + instrumentation.disable(); + }); + + describe('when fastify is disabled', () => { + it('should not generate any spans', async () => { + instrumentation.disable(); + app.get('/test', (req, res) => { + res.send('OK'); + }); + await startServer(); + + await httpRequest.get(`http://localhost:${PORT}/test`); + + const spans = getSpans(); + assert.strictEqual(spans.length, 0); // http instrumentation only + }); + }); + + describe('when fastify is enabled', () => { + it('should generate span for anonymous middleware', async () => { + app.get('/test', (req, res) => { + res.send('OK'); + }); + + await startServer(); + + await httpRequest.get(`http://localhost:${PORT}/test`); + + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 5); + const span = spans[1]; + assert.deepStrictEqual(span.attributes, { + 'fastify.type': 'request_handler', + 'plugin.name': 'fastify-express', + [SemanticAttributes.HTTP_ROUTE]: '/test', + }); + assert.strictEqual(span.name, `request handler - ${ANONYMOUS_NAME}`); + const baseSpan = spans[0]; + assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + }); + + it('should generate span for named handler', async () => { + // eslint-disable-next-line prefer-arrow-callback + app.get('/test', function namedHandler(req, res) { + res.send('OK'); + }); + + await startServer(); + + await httpRequest.get(`http://localhost:${PORT}/test`); + + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 5); + const span = spans[1]; + assert.deepStrictEqual(span.attributes, { + 'fastify.type': 'request_handler', + 'fastify.name': 'namedHandler', + 'plugin.name': 'fastify-express', + [SemanticAttributes.HTTP_ROUTE]: '/test', + }); + assert.strictEqual(span.name, 'request handler - namedHandler'); + + const baseSpan = spans[0]; + assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + }); + + describe('when subsystem is registered', () => { + beforeEach(async () => { + httpInstrumentation.enable(); + + async function subsystem(fastify: FastifyInstance) { + fastify.addHook( + 'onRequest', + async ( + req: FastifyRequest, + res: FastifyReply, + next: HookHandlerDoneFunction + ) => { + next(); + } + ); + fastify.use((req, res, next) => { + next(); + }); + // eslint-disable-next-line prefer-arrow-callback + fastify.get('/test', function foo(req, res) { + res.send('OK'); + }); + } + + app.register(subsystem); + + await startServer(); + + await httpRequest.get(`http://localhost:${PORT}/test`); + assert.strictEqual(getSpans().length, 4); + }); + + it('should change name for parent http route', async () => { + const spans = memoryExporter.getFinishedSpans(); + + assert.strictEqual(spans.length, 6); + const changedRootSpan = spans[2]; + const span = spans[3]; + assert.strictEqual(changedRootSpan.name, 'GET /test'); + assert.strictEqual(span.name, 'request handler - foo'); + assert.strictEqual( + span.parentSpanId, + changedRootSpan.spanContext().spanId + ); + }); + + it('should create span for fastify express runConnect', async () => { + const spans = memoryExporter.getFinishedSpans(); + + assert.strictEqual(spans.length, 6); + const baseSpan = spans[2]; + const span = spans[0]; + assert.strictEqual(span.name, 'middleware - runConnect'); + assert.deepStrictEqual(span.attributes, { + 'fastify.type': 'middleware', + 'plugin.name': 'fastify-express', + 'hook.name': 'onRequest', + }); + + assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + }); + + it('should create span for fastify express for enhanceRequest', async () => { + const spans = memoryExporter.getFinishedSpans(); + + assert.strictEqual(spans.length, 6); + const baseSpan = spans[2]; + const span = spans[1]; + assert.strictEqual(span.name, 'middleware - enhanceRequest'); + assert.deepStrictEqual(span.attributes, { + 'fastify.type': 'middleware', + 'plugin.name': 'fastify-express', + 'hook.name': 'onRequest', + }); + + assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + }); + + it('should create span for request', async () => { + const spans = memoryExporter.getFinishedSpans(); + + assert.strictEqual(spans.length, 6); + const baseSpan = spans[2]; + const span = spans[3]; + assert.strictEqual(span.name, 'request handler - foo'); + assert.deepStrictEqual(span.attributes, { + 'plugin.name': 'subsystem', + 'fastify.type': 'request_handler', + 'fastify.name': 'foo', + 'http.route': '/test', + }); + + assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + }); + + it('should create span for subsystem anonymous middleware', async () => { + const spans = memoryExporter.getFinishedSpans(); + + assert.strictEqual(spans.length, 6); + const baseSpan = spans[2]; + const span = spans[4]; + assert.strictEqual(span.name, `middleware - ${ANONYMOUS_NAME}`); + assert.deepStrictEqual(span.attributes, { + 'fastify.type': 'middleware', + 'plugin.name': 'subsystem', + 'hook.name': 'onRequest', + }); + + assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + }); + }); + }); +}); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/tsconfig.json b/plugins/node/opentelemetry-instrumentation-fastify/tsconfig.json new file mode 100644 index 0000000000..28be80d266 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.base", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] +} From 5bab2906eac4225d37fa97b4c5e8a8158e6a6a8f Mon Sep 17 00:00:00 2001 From: Bartlomiej Obecny Date: Thu, 9 Sep 2021 23:41:51 +0200 Subject: [PATCH 2/6] reviews --- .../README.md | 4 ++-- .../package.json | 1 + .../src/index.ts | 1 - .../src/instrumentation.ts | 21 +++---------------- .../src/utils.ts | 18 +++++++--------- 5 files changed, 14 insertions(+), 31 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-fastify/README.md b/plugins/node/opentelemetry-instrumentation-fastify/README.md index 1f0a438bd9..fd9c9a96a1 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/README.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/README.md @@ -12,7 +12,7 @@ For automatic instrumentation see the ## Installation -This instrumentation relies on HTTP calls to also be instrumented. Make sure you install and enable both, otherwise you will have spans that are not fastifyed to each other. +This instrumentation relies on HTTP calls to also be instrumented. Make sure you install and enable both, otherwise you will have spans that are not connected with each other. ```bash npm install --save @opentelemetry/instrumentation-http @opentelemetry/instrumentation-fastify @@ -32,7 +32,7 @@ To load the instrumentation, specify it in the Node Tracer's configuration: const { NodeTracerProvider } = require('@opentelemetry/node'); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); -const { FastifyInstrumentation } = require('@opentelemetry/instrumentation-connnect'); +const { FastifyInstrumentation } = require('@opentelemetry/instrumentation-fastify'); const provider = new NodeTracerProvider(); provider.register(); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index a57009fb9f..28743320e1 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -32,6 +32,7 @@ }, "files": [ "build/src/**/*.js", + "build/src/**/*.js.map", "build/src/**/*.d.ts", "doc", "LICENSE", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/index.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/index.ts index 16b659dde3..34b600dd0c 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/index.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/index.ts @@ -16,4 +16,3 @@ export * from './enums/AttributeNames'; export * from './instrumentation'; -export * from './types'; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index 8fb12e7604..9b0b8e34df 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -16,10 +16,8 @@ import { context, - diag, Span, SpanAttributes, - SpanOptions, SpanStatusCode, trace, } from '@opentelemetry/api'; @@ -62,11 +60,8 @@ export class FastifyInstrumentation extends InstrumentationBase { 'fastify', ['^3.0.0'], (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for fastify@${moduleVersion}`); + this._diag.debug(`Applying patch for fastify@${moduleVersion}`); return this._patchConstructor(moduleExports); - }, - (moduleExports, moduleVersion) => { - diag.debug(`Removing patch for fastify@${moduleVersion}`); } ), ]; @@ -138,10 +133,6 @@ export class FastifyInstrumentation extends InstrumentationBase { original: FastifyInstance['addHook'] ): () => FastifyInstance { return function wrappedAddHook(this: any, ...args: any) { - if (!instrumentation.isEnabled()) { - return original.apply(this, args); - } - const name = args[0] as string; const handler = args[1] as HandlerOriginal; const pluginName = this.pluginName; @@ -160,7 +151,7 @@ export class FastifyInstrumentation extends InstrumentationBase { original: () => FastifyInstance ): () => FastifyInstance { const instrumentation = this; - return function (this: FastifyInstance, ...args) { + return function fastify(this: FastifyInstance, ...args) { const app: FastifyInstance = original.apply(this, args); app.addHook('onRequest', instrumentation._hookOnRequest()); app.addHook('preHandler', instrumentation._hookPreHandler()); @@ -237,12 +228,6 @@ export class FastifyInstrumentation extends InstrumentationBase { spanName: string, spanAttributes: SpanAttributes = {} ): Span { - const options: SpanOptions = { - attributes: { - ...spanAttributes, - }, - }; - - return this.tracer.startSpan(spanName, options); + return this.tracer.startSpan(spanName, { attributes: spanAttributes }); } } diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts index a9db28dabf..81e9ad6c7c 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts @@ -39,26 +39,24 @@ export function safeExecuteInTheMiddleMaybePromise( executeResult = execute(); const promiseResult = executeResult as Promise; - isPromise = - promiseResult && - typeof promiseResult.then === 'function' && - typeof promiseResult.catch === 'function'; + isPromise = promiseResult && typeof promiseResult.then === 'function'; if (isPromise) { - promiseResult - .then(res => { + promiseResult.then( + res => { onFinish(undefined, res); - }) - .catch((err: Error) => { + }, + (err: Error) => { onFinish(err); - }); + } + ); } else { result = executeResult as T | undefined; } } catch (e) { error = e; } finally { - if (!isPromise || error) { + if (!isPromise) { onFinish(error, result); if (error && !preventThrowingError) { // eslint-disable-next-line no-unsafe-finally From 5dbe7db17a796f5b89b725359312005ceee79482 Mon Sep 17 00:00:00 2001 From: Bartlomiej Obecny Date: Sat, 11 Sep 2021 01:06:34 +0200 Subject: [PATCH 3/6] adding error handling for unhandled exception, fixing returned constructor, http.route, context propagation --- examples/fastify/client.js | 4 +- examples/fastify/server.js | 22 ++++++-- .../src/instrumentation.ts | 48 ++++++++++------ .../test/instrumentation.test.ts | 55 ++++++++++++++----- 4 files changed, 91 insertions(+), 38 deletions(-) diff --git a/examples/fastify/client.js b/examples/fastify/client.js index 5f34229b75..32f460ab4f 100644 --- a/examples/fastify/client.js +++ b/examples/fastify/client.js @@ -15,9 +15,9 @@ function makeRequest() { api.context.with(api.trace.setSpan(api.ROOT_CONTEXT, span), async () => { try { - const res = await axios.post('http://localhost:8080/run_test', { + const res = await axios.post('http://localhost:8080/run_test/1', { // testing - // const res = await axios.post('http://localhost:8080/run_test2', { + // const res = await axios.post('http://localhost:8080/run_test2/1', { headers: { 'Content-Type': 'application/json', }, diff --git a/examples/fastify/server.js b/examples/fastify/server.js index d28536973b..94dc2f7bc1 100644 --- a/examples/fastify/server.js +++ b/examples/fastify/server.js @@ -17,27 +17,39 @@ app async function subsystem(fastify) { fastify.addHook('onRequest', async () => { const span = trace.getSpan(context.active()); - console.log('first', span); + span.setAttribute('order', 2); }); + // eslint-disable-next-line prefer-arrow-callback fastify.addHook('onRequest', async function onRequestHook() { const span = trace.getSpan(context.active()); - console.log('second', span); + span.setAttribute('order', 3); + + const newSpan = tracing.tracer.startSpan('foo'); + newSpan.setAttribute('foo', 'bar'); + newSpan.end(); }); + fastify.use((req, res, next) => { const span = trace.getSpan(context.active()); - console.log('third', span); + span.setAttribute('order', 1); next(); }); - fastify.post('/run_test2', async (req, res) => { + + fastify.post('/run_test2/:id', async (req, res) => { + const span = trace.getSpan(context.active()); + span.setAttribute('order', 4); + const result = await axios.get('https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'); const result2 = await axios.get('https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'); + tracing.log('sending response'); + // throw Error('boom lala'); res.send(`OK ${result.data.version} ${result2.data.version}`); }); } -app.post('/run_test', async (req, res) => { +app.post('/run_test/:id', async (req, res) => { const result = await axios.get('https://raw.githubusercontent.com/open-telemetry/opentelemetry-js/main/package.json'); tracing.log('sending response'); res.send(`OK ${result.data.version}`); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index 9b0b8e34df..b76785af4e 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -80,6 +80,7 @@ export class FastifyInstrumentation extends InstrumentationBase { const rpcMetadata = getRPCMetadata(context.active()); const routeName = request.routerPath; if (routeName && rpcMetadata?.type === RPCType.HTTP) { + rpcMetadata.span.setAttribute(SemanticAttributes.HTTP_ROUTE, routeName); rpcMetadata.span.updateName(`${request.method} ${routeName || '/'}`); } done(); @@ -107,21 +108,23 @@ export class FastifyInstrumentation extends InstrumentationBase { [AttributeNames.HOOK_NAME]: hookName, }); - return safeExecuteInTheMiddleMaybePromise( - () => { - return original.apply(this, args); - }, - err => { - if (err) { - span.setStatus({ - code: SpanStatusCode.ERROR, - message: err.message, - }); - span.recordException(err); + return context.with(trace.setSpan(context.active(), span), () => { + return safeExecuteInTheMiddleMaybePromise( + () => { + return original.apply(this, args); + }, + err => { + if (err) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err.message, + }); + span.recordException(err); + } + span.end(); } - span.end(); - } - ); + ); + }); }; } @@ -151,7 +154,8 @@ export class FastifyInstrumentation extends InstrumentationBase { original: () => FastifyInstance ): () => FastifyInstance { const instrumentation = this; - return function fastify(this: FastifyInstance, ...args) { + + function fastify(this: FastifyInstance, ...args: any) { const app: FastifyInstance = original.apply(this, args); app.addHook('onRequest', instrumentation._hookOnRequest()); app.addHook('preHandler', instrumentation._hookPreHandler()); @@ -159,7 +163,11 @@ export class FastifyInstrumentation extends InstrumentationBase { instrumentation._wrap(app, 'addHook', instrumentation._wrapAddHook()); return app; - }; + } + + fastify.fastify = fastify; + fastify.default = fastify; + return fastify; } public _patchSend(span: Span) { @@ -167,7 +175,9 @@ export class FastifyInstrumentation extends InstrumentationBase { return function patchSend( original: () => FastifyReply ): () => FastifyReply { - return function send(this: FastifyReply, ...args) { + return function send(this: FastifyReply, ...args: any) { + const maybeError: any = args[0]; + if (!instrumentation.isEnabled()) { return original.apply(this, args); } @@ -177,6 +187,10 @@ export class FastifyInstrumentation extends InstrumentationBase { return original.apply(this, args); }, err => { + if (!err && maybeError instanceof Error) { + err = maybeError; + } + if (err) { span.setStatus({ code: SpanStatusCode.ERROR, diff --git a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts index 8d4da51f10..6d43c51034 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts @@ -15,7 +15,7 @@ */ import * as assert from 'assert'; -import { context } from '@opentelemetry/api'; +import { context, SpanStatusCode } from '@opentelemetry/api'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { NodeTracerProvider } from '@opentelemetry/node'; @@ -148,7 +148,7 @@ describe('fastify', () => { [SemanticAttributes.HTTP_ROUTE]: '/test', }); assert.strictEqual(span.name, `request handler - ${ANONYMOUS_NAME}`); - const baseSpan = spans[0]; + const baseSpan = spans[2]; assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); }); @@ -173,7 +173,7 @@ describe('fastify', () => { }); assert.strictEqual(span.name, 'request handler - namedHandler'); - const baseSpan = spans[0]; + const baseSpan = spans[2]; assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); }); @@ -196,16 +196,19 @@ describe('fastify', () => { next(); }); // eslint-disable-next-line prefer-arrow-callback - fastify.get('/test', function foo(req, res) { + fastify.get('/test/:id', function foo(req, res) { res.send('OK'); }); + fastify.get('/test-error', () => { + throw Error('foo'); + }); } app.register(subsystem); await startServer(); - await httpRequest.get(`http://localhost:${PORT}/test`); + await httpRequest.get(`http://localhost:${PORT}/test/1`); assert.strictEqual(getSpans().length, 4); }); @@ -215,19 +218,16 @@ describe('fastify', () => { assert.strictEqual(spans.length, 6); const changedRootSpan = spans[2]; const span = spans[3]; - assert.strictEqual(changedRootSpan.name, 'GET /test'); + assert.strictEqual(changedRootSpan.name, 'GET /test/:id'); assert.strictEqual(span.name, 'request handler - foo'); - assert.strictEqual( - span.parentSpanId, - changedRootSpan.spanContext().spanId - ); + assert.strictEqual(span.parentSpanId, spans[4].spanContext().spanId); }); it('should create span for fastify express runConnect', async () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 6); - const baseSpan = spans[2]; + const baseSpan = spans[1]; const span = spans[0]; assert.strictEqual(span.name, 'middleware - runConnect'); assert.deepStrictEqual(span.attributes, { @@ -259,24 +259,32 @@ describe('fastify', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 6); - const baseSpan = spans[2]; + const baseSpan = spans[4]; const span = spans[3]; assert.strictEqual(span.name, 'request handler - foo'); assert.deepStrictEqual(span.attributes, { 'plugin.name': 'subsystem', 'fastify.type': 'request_handler', 'fastify.name': 'foo', - 'http.route': '/test', + 'http.route': '/test/:id', }); assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); }); + it('should update http.route for http span', async () => { + const spans = memoryExporter.getFinishedSpans(); + + assert.strictEqual(spans.length, 6); + const span = spans[2]; + assert.strictEqual(span.attributes['http.route'], '/test/:id'); + }); + it('should create span for subsystem anonymous middleware', async () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 6); - const baseSpan = spans[2]; + const baseSpan = spans[0]; const span = spans[4]; assert.strictEqual(span.name, `middleware - ${ANONYMOUS_NAME}`); assert.deepStrictEqual(span.attributes, { @@ -287,6 +295,25 @@ describe('fastify', () => { assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); }); + + it('should update span with error that was raised', async () => { + memoryExporter.reset(); + await httpRequest.get(`http://localhost:${PORT}/test-error`); + const spans = memoryExporter.getFinishedSpans(); + + assert.strictEqual(spans.length, 6); + const span = spans[3]; + assert.strictEqual(span.name, 'request handler - anonymous'); + assert.deepStrictEqual(span.status, { + code: SpanStatusCode.ERROR, + message: 'foo', + }); + assert.deepStrictEqual(span.attributes, { + 'fastify.type': 'request_handler', + 'plugin.name': 'subsystem', + 'http.route': '/test-error', + }); + }); }); }); }); From ffde5689b9ebcb148c645606be6ed1169583d8d7 Mon Sep 17 00:00:00 2001 From: Bartlomiej Obecny Date: Tue, 19 Oct 2021 00:00:05 +0200 Subject: [PATCH 4/6] fixing ending span, fixing tests, fixing case with more than 1 span to be end --- examples/fastify/server.js | 18 ++++ .../src/constants.ts | 19 ++++ .../src/instrumentation.ts | 76 ++++++++++------ .../src/types.ts | 8 ++ .../src/utils.ts | 61 +++++++++++++ .../test/instrumentation.test.ts | 88 +++++++++++++++---- 6 files changed, 228 insertions(+), 42 deletions(-) create mode 100644 plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts diff --git a/examples/fastify/server.js b/examples/fastify/server.js index 94dc2f7bc1..deb99a4cd7 100644 --- a/examples/fastify/server.js +++ b/examples/fastify/server.js @@ -47,6 +47,24 @@ async function subsystem(fastify) { // throw Error('boom lala'); res.send(`OK ${result.data.version} ${result2.data.version}`); }); + + fastify.addHook('onRequest', (req, reply, done) => { + const span = trace.getSpan(context.active()); + console.log('first', span); + console.log('kuku1'); + span.setAttribute('kuku1', 'lala'); + + setTimeout(() => { + console.log('kuku2'); + span.setAttribute('kuku2', 'lala'); + const newSpan = tracing.tracer.startSpan('tada'); + newSpan.end(); + + reply.send('foo'); + done(); + }, 2000); + }); + } app.post('/run_test/:id', async (req, res) => { diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts new file mode 100644 index 0000000000..82da6c1f5e --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts @@ -0,0 +1,19 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export const spanRequestSymbol = Symbol( + 'opentelemetry.instrumentation.fastify.request_active_span' +); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index b76785af4e..0f62dcc3fd 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -16,7 +16,6 @@ import { context, - Span, SpanAttributes, SpanStatusCode, trace, @@ -38,8 +37,12 @@ import { FastifyNames, FastifyTypes, } from './enums/AttributeNames'; -import type { HandlerOriginal } from './types'; -import { safeExecuteInTheMiddleMaybePromise } from './utils'; +import type { HandlerOriginal, PluginFastifyReply } from './types'; +import { + endSpan, + safeExecuteInTheMiddleMaybePromise, + startSpan, +} from './utils'; import { VERSION } from './version'; export const ANONYMOUS_NAME = 'anonymous'; @@ -77,6 +80,8 @@ export class FastifyInstrumentation extends InstrumentationBase { if (!instrumentation.isEnabled()) { return done(); } + instrumentation._wrap(reply, 'send', instrumentation._patchSend()); + const rpcMetadata = getRPCMetadata(context.active()); const routeName = request.routerPath; if (routeName && rpcMetadata?.type === RPCType.HTTP) { @@ -90,10 +95,11 @@ export class FastifyInstrumentation extends InstrumentationBase { private _wrapHandler( pluginName: string, hookName: string, - original: () => Promise | void + original: (...args: unknown[]) => Promise | void, + syncFunctionWithDone: boolean ): () => Promise | void { const instrumentation = this; - return function (this: any, ...args): Promise | void { + return function (this: any, ...args: unknown[]): Promise | void { if (!instrumentation.isEnabled()) { return original.apply(this, args); } @@ -102,12 +108,26 @@ export class FastifyInstrumentation extends InstrumentationBase { original.name || ANONYMOUS_NAME }`; - const span = instrumentation._startSpan(spanName, { + const reply = args[1] as PluginFastifyReply; + + const span = startSpan(reply, instrumentation.tracer, spanName, { [AttributeNames.FASTIFY_TYPE]: FastifyTypes.MIDDLEWARE, [AttributeNames.PLUGIN_NAME]: pluginName, [AttributeNames.HOOK_NAME]: hookName, }); + const origDone = + syncFunctionWithDone && + (args[args.length - 1] as HookHandlerDoneFunction); + if (origDone) { + args[args.length - 1] = function ( + ...doneArgs: Parameters + ) { + endSpan(reply); + origDone.apply(this, doneArgs); + }; + } + return context.with(trace.setSpan(context.active(), span), () => { return safeExecuteInTheMiddleMaybePromise( () => { @@ -121,7 +141,10 @@ export class FastifyInstrumentation extends InstrumentationBase { }); span.recordException(err); } - span.end(); + // async hooks should end the span as soon as the promise is resolved + if (!syncFunctionWithDone) { + endSpan(reply); + } } ); }); @@ -142,9 +165,19 @@ export class FastifyInstrumentation extends InstrumentationBase { if (name === 'onRegister') { return original.apply(this, [name as any, handler]); } + + const syncFunctionWithDone = + typeof args[args.length - 1] === 'function' && + handler.constructor.name !== 'AsyncFunction'; + return original.apply(this, [ name as any, - instrumentation._wrapHandler(pluginName, name, handler), + instrumentation._wrapHandler( + pluginName, + name, + handler, + syncFunctionWithDone + ), ]); }; }; @@ -170,7 +203,7 @@ export class FastifyInstrumentation extends InstrumentationBase { return fastify; } - public _patchSend(span: Span) { + public _patchSend() { const instrumentation = this; return function patchSend( original: () => FastifyReply @@ -190,15 +223,7 @@ export class FastifyInstrumentation extends InstrumentationBase { if (!err && maybeError instanceof Error) { err = maybeError; } - - if (err) { - span.setStatus({ - code: SpanStatusCode.ERROR, - message: err.message, - }); - span.recordException(err); - } - span.end(); + endSpan(this, err); } ); }; @@ -230,18 +255,15 @@ export class FastifyInstrumentation extends InstrumentationBase { if (handlerName) { spanAttributes[AttributeNames.FASTIFY_NAME] = handlerName; } - const span = instrumentation._startSpan(spanName, spanAttributes); - instrumentation._wrap(reply, 'send', instrumentation._patchSend(span)); + const span = startSpan( + reply, + instrumentation.tracer, + spanName, + spanAttributes + ); return context.with(trace.setSpan(context.active(), span), () => { done(); }); }; } - - public _startSpan( - spanName: string, - spanAttributes: SpanAttributes = {} - ): Span { - return this.tracer.startSpan(spanName, { attributes: spanAttributes }); - } } diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/types.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/types.ts index a0534a3207..ee2e325494 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/types.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/types.ts @@ -14,4 +14,12 @@ * limitations under the License. */ +import { Span } from '@opentelemetry/api'; +import { FastifyReply } from 'fastify'; +import { spanRequestSymbol } from './constants'; + export type HandlerOriginal = (() => Promise) & (() => void); + +export type PluginFastifyReply = FastifyReply & { + [spanRequestSymbol]?: Span[]; +}; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts index 81e9ad6c7c..7b328fea3c 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts @@ -14,6 +14,67 @@ * limitations under the License. */ +import { + Span, + SpanAttributes, + SpanStatusCode, + Tracer, +} from '@opentelemetry/api'; +import { spanRequestSymbol } from './constants'; + +import type { PluginFastifyReply } from './types'; + +/** + * Starts Span + * @param reply - reply function + * @param tracer - tracer + * @param spanName - span name + * @param spanAttributes - span attributes + */ +export function startSpan( + reply: PluginFastifyReply, + tracer: Tracer, + spanName: string, + spanAttributes: SpanAttributes = {} +) { + const span = tracer.startSpan(spanName, { attributes: spanAttributes }); + + const spans: Span[] = reply[spanRequestSymbol] || []; + spans.push(span); + + Object.defineProperty(reply, spanRequestSymbol, { + enumerable: false, + configurable: true, + value: spans, + }); + + return span; +} + +/** + * Ends span + * @param reply - reply function + * @param err - error + */ +export function endSpan(reply: PluginFastifyReply, err?: any) { + const spans = reply[spanRequestSymbol] || []; + // there is no active span, or it has already ended + if (!spans.length) { + return; + } + spans.forEach(span => { + if (err) { + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err.message, + }); + span.recordException(err); + } + span.end(); + }); + delete reply[spanRequestSymbol]; +} + // @TODO after approve add this to instrumentation package and replace usage // when it will be released diff --git a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts index 6d43c51034..4d5c362292 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts @@ -30,7 +30,7 @@ import { FastifyRequest } from 'fastify/types/request'; import * as http from 'http'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { ANONYMOUS_NAME } from '../src/instrumentation'; -import { FastifyInstrumentation } from '../src'; +import { AttributeNames, FastifyInstrumentation } from '../src'; const URL = require('url').URL; @@ -141,14 +141,14 @@ describe('fastify', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 5); - const span = spans[1]; + const span = spans[3]; assert.deepStrictEqual(span.attributes, { 'fastify.type': 'request_handler', 'plugin.name': 'fastify-express', [SemanticAttributes.HTTP_ROUTE]: '/test', }); assert.strictEqual(span.name, `request handler - ${ANONYMOUS_NAME}`); - const baseSpan = spans[2]; + const baseSpan = spans[1]; assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); }); @@ -164,7 +164,7 @@ describe('fastify', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 5); - const span = spans[1]; + const span = spans[3]; assert.deepStrictEqual(span.attributes, { 'fastify.type': 'request_handler', 'fastify.name': 'namedHandler', @@ -173,7 +173,7 @@ describe('fastify', () => { }); assert.strictEqual(span.name, 'request handler - namedHandler'); - const baseSpan = spans[2]; + const baseSpan = spans[1]; assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); }); @@ -217,18 +217,18 @@ describe('fastify', () => { assert.strictEqual(spans.length, 6); const changedRootSpan = spans[2]; - const span = spans[3]; + const span = spans[4]; assert.strictEqual(changedRootSpan.name, 'GET /test/:id'); assert.strictEqual(span.name, 'request handler - foo'); - assert.strictEqual(span.parentSpanId, spans[4].spanContext().spanId); + assert.strictEqual(span.parentSpanId, spans[3].spanContext().spanId); }); it('should create span for fastify express runConnect', async () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 6); - const baseSpan = spans[1]; - const span = spans[0]; + const baseSpan = spans[0]; + const span = spans[1]; assert.strictEqual(span.name, 'middleware - runConnect'); assert.deepStrictEqual(span.attributes, { 'fastify.type': 'middleware', @@ -244,7 +244,7 @@ describe('fastify', () => { assert.strictEqual(spans.length, 6); const baseSpan = spans[2]; - const span = spans[1]; + const span = spans[0]; assert.strictEqual(span.name, 'middleware - enhanceRequest'); assert.deepStrictEqual(span.attributes, { 'fastify.type': 'middleware', @@ -259,8 +259,8 @@ describe('fastify', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 6); - const baseSpan = spans[4]; - const span = spans[3]; + const baseSpan = spans[3]; + const span = spans[4]; assert.strictEqual(span.name, 'request handler - foo'); assert.deepStrictEqual(span.attributes, { 'plugin.name': 'subsystem', @@ -284,8 +284,8 @@ describe('fastify', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 6); - const baseSpan = spans[0]; - const span = spans[4]; + const baseSpan = spans[1]; + const span = spans[3]; assert.strictEqual(span.name, `middleware - ${ANONYMOUS_NAME}`); assert.deepStrictEqual(span.attributes, { 'fastify.type': 'middleware', @@ -302,7 +302,7 @@ describe('fastify', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans.length, 6); - const span = spans[3]; + const span = spans[4]; assert.strictEqual(span.name, 'request handler - anonymous'); assert.deepStrictEqual(span.status, { code: SpanStatusCode.ERROR, @@ -315,5 +315,63 @@ describe('fastify', () => { }); }); }); + + describe('spans context', () => { + describe('hook callback', () => { + it('span should end upon done invocation', async () => { + let hookDone: HookHandlerDoneFunction; + const hookExecutedPromise = new Promise(resolve => { + app.addHook( + 'onRequest', + (_req, _reply, done: HookHandlerDoneFunction) => { + hookDone = done; + resolve(); + } + ); + }); + app.get('/test', (_req, reply: FastifyReply) => { + reply.send('request ended in handler'); + }); + await startServer(); + httpRequest.get(`http://localhost:${PORT}/test`); + await hookExecutedPromise; + + // done was not yet called from the hook, so it should not end the span + const preDoneSpans = getSpans().filter( + s => !s.attributes[AttributeNames.PLUGIN_NAME] + ); + assert.strictEqual(preDoneSpans.length, 0); + hookDone!(); + const postDoneSpans = getSpans().filter( + s => !s.attributes[AttributeNames.PLUGIN_NAME] + ); + assert.strictEqual(postDoneSpans.length, 1); + }); + + it('span should end when calling reply.send from hook', async () => { + app.addHook( + 'onRequest', + ( + _req: FastifyRequest, + reply: FastifyReply, + _done: HookHandlerDoneFunction + ) => { + reply.send('request ended prematurely in hook'); + } + ); + app.get('/test', (_req: FastifyRequest, _reply: FastifyReply) => { + throw Error( + 'handler should not be executed as request is ended in onRequest hook' + ); + }); + await startServer(); + await httpRequest.get(`http://localhost:${PORT}/test`); + const spans = getSpans().filter( + s => !s.attributes[AttributeNames.PLUGIN_NAME] + ); + assert.strictEqual(spans.length, 1); + }); + }); + }); }); }); From e7da493f9351613e70befd0c30a116993adff3ea Mon Sep 17 00:00:00 2001 From: Bartlomiej Obecny Date: Tue, 19 Oct 2021 00:20:27 +0200 Subject: [PATCH 5/6] upgrading to latest --- examples/fastify/package.json | 24 +++++++++---------- examples/fastify/tracing.js | 4 ++-- .../package.json | 20 ++++++++-------- .../src/version.ts | 2 +- .../test/instrumentation.test.ts | 4 ++-- 5 files changed, 27 insertions(+), 27 deletions(-) diff --git a/examples/fastify/package.json b/examples/fastify/package.json index 9f57b516d2..822fbe4eb8 100644 --- a/examples/fastify/package.json +++ b/examples/fastify/package.json @@ -1,7 +1,7 @@ { "name": "example-fastify", "private": true, - "version": "0.24.0", + "version": "0.25.0", "description": "Example of Fastify integration with OpenTelemetry", "main": "index.js", "scripts": { @@ -36,17 +36,17 @@ "url": "https://github.com/open-telemetry/opentelemetry-js/issues" }, "dependencies": { - "@opentelemetry/api": "^1.0.1", - "@opentelemetry/exporter-jaeger": "^0.24.0", - "@opentelemetry/exporter-zipkin": "^0.24.0", - "@opentelemetry/exporter-collector": "^0.24.0", - "@opentelemetry/instrumentation": "^0.24.0", - "@opentelemetry/instrumentation-fastify": "^0.24.0", - "@opentelemetry/instrumentation-http": "^0.24.0", - "@opentelemetry/node": "^0.24.0", - "@opentelemetry/resources": "^0.24.0", - "@opentelemetry/semantic-conventions": "^0.24.0", - "@opentelemetry/tracing": "^0.24.0", + "@opentelemetry/api": "^1.0.2", + "@opentelemetry/exporter-jaeger": "^1.0.0", + "@opentelemetry/exporter-zipkin": "^1.0.0", + "@opentelemetry/exporter-collector": "^0.25.0", + "@opentelemetry/instrumentation": "^0.26.0", + "@opentelemetry/instrumentation-fastify": "^0.25.0", + "@opentelemetry/instrumentation-http": "^0.26.0", + "@opentelemetry/sdk-trace-node": "^1.0.0", + "@opentelemetry/resources": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^1.0.0", "axios": "^0.21.1", "cross-env": "^7.0.3", "fastify": "^3.19.2", diff --git a/examples/fastify/tracing.js b/examples/fastify/tracing.js index 2a0e951aaf..fdc4337f24 100644 --- a/examples/fastify/tracing.js +++ b/examples/fastify/tracing.js @@ -8,8 +8,8 @@ diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); const { Resource } = require('@opentelemetry/resources'); const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); -const { NodeTracerProvider } = require('@opentelemetry/node'); -const { SimpleSpanProcessor } = require('@opentelemetry/tracing'); +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector'); const { FastifyInstrumentation } = require('@opentelemetry/instrumentation-fastify'); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 28743320e1..a86755e15f 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.24.0", + "version": "0.25.0", "description": "OpenTelemetry fastly automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -42,14 +42,14 @@ "access": "public" }, "peerDependencies": { - "@opentelemetry/api": "^1.0.1" + "@opentelemetry/api": "^1.0.2" }, "devDependencies": { - "@opentelemetry/api": "1.0.1", - "@opentelemetry/context-async-hooks": "0.24.0", - "@opentelemetry/instrumentation-http": "0.24.0", - "@opentelemetry/node": "0.24.0", - "@opentelemetry/tracing": "0.24.0", + "@opentelemetry/api": "1.0.2", + "@opentelemetry/context-async-hooks": "1.0.0", + "@opentelemetry/instrumentation-http": "0.26.0", + "@opentelemetry/sdk-trace-node": "1.0.0", + "@opentelemetry/sdk-trace-base": "1.0.0", "@types/express": "4.17.13", "@types/mocha": "7.0.2", "@types/node": "14.17.4", @@ -63,9 +63,9 @@ "typescript": "4.3.5" }, "dependencies": { - "@opentelemetry/core": "^0.24.0", - "@opentelemetry/instrumentation": "^0.24.0", - "@opentelemetry/semantic-conventions": "^0.24.0", + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/instrumentation": "^0.26.0", + "@opentelemetry/semantic-conventions": "^1.0.0", "fastify": "^3.19.2" } } diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/version.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/version.ts index 2902e7d262..2c1c3f80c6 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/version.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/version.ts @@ -15,4 +15,4 @@ */ // this is autogenerated file, see scripts/version-update.js -export const VERSION = '0.24.0'; +export const VERSION = '0.25.0'; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts index 4d5c362292..b7e2b3b5e6 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts @@ -18,12 +18,12 @@ import * as assert from 'assert'; import { context, SpanStatusCode } from '@opentelemetry/api'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; -import { NodeTracerProvider } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { InMemorySpanExporter, ReadableSpan, SimpleSpanProcessor, -} from '@opentelemetry/tracing'; +} from '@opentelemetry/sdk-trace-base'; import { HookHandlerDoneFunction } from 'fastify/types/hooks'; import { FastifyReply } from 'fastify/types/reply'; import { FastifyRequest } from 'fastify/types/request'; From 187978937169aa98fda2cdb6c9a42a5f1260d58b Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 21 Oct 2021 09:59:38 -0700 Subject: [PATCH 6/6] fix: application hooks throws exception from instrumentation (#5) --- .../src/constants.ts | 7 +++ .../src/instrumentation.ts | 3 +- .../test/instrumentation.test.ts | 51 ++++++++++++++++++- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts index 82da6c1f5e..e6e0ebedae 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts @@ -17,3 +17,10 @@ export const spanRequestSymbol = Symbol( 'opentelemetry.instrumentation.fastify.request_active_span' ); + +export const applicationHookNames = [ + 'onRegister', + 'onRoute', + 'onReady', + 'onClose', +]; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index 0f62dcc3fd..985238a0b4 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -32,6 +32,7 @@ import type { HookHandlerDoneFunction } from 'fastify/types/hooks'; import type { FastifyInstance } from 'fastify/types/instance'; import type { FastifyReply } from 'fastify/types/reply'; import type { FastifyRequest } from 'fastify/types/request'; +import { applicationHookNames } from './constants'; import { AttributeNames, FastifyNames, @@ -162,7 +163,7 @@ export class FastifyInstrumentation extends InstrumentationBase { const name = args[0] as string; const handler = args[1] as HandlerOriginal; const pluginName = this.pluginName; - if (name === 'onRegister') { + if (applicationHookNames.includes(name)) { return original.apply(this, [name as any, handler]); } diff --git a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts index b7e2b3b5e6..503606d296 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts @@ -15,7 +15,7 @@ */ import * as assert from 'assert'; -import { context, SpanStatusCode } from '@opentelemetry/api'; +import { context, ROOT_CONTEXT, SpanStatusCode } from '@opentelemetry/api'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; @@ -373,5 +373,54 @@ describe('fastify', () => { }); }); }); + + describe('application hooks', () => { + it('onRoute not instrumented', done => { + app.addHook('onRoute', () => { + assert.strictEqual(context.active(), ROOT_CONTEXT); + }); + // add a route to trigger the 'onRoute' hook + app.get('/test', (_req: FastifyRequest, reply: FastifyReply) => { + reply.send('OK'); + }); + + startServer() + .then(() => done()) + .catch(err => done(err)); + }); + + it('onRegister is not instrumented', done => { + app.addHook('onRegister', () => { + assert.strictEqual(context.active(), ROOT_CONTEXT); + }); + // register a plugin to trigger 'onRegister' hook + app.register((fastify, options, done) => { + done(); + }); + startServer() + .then(() => done()) + .catch(err => done(err)); + }); + + it('onReady is not instrumented', done => { + app.addHook('onReady', () => { + assert.strictEqual(context.active(), ROOT_CONTEXT); + }); + startServer() + .then(() => done()) + .catch(err => done(err)); + }); + + it('onClose is not instrumented', done => { + app.addHook('onClose', () => { + assert.strictEqual(context.active(), ROOT_CONTEXT); + }); + startServer() + .then(() => { + app.close().then(() => done()); + }) + .catch(err => done(err)); + }); + }); }); });