From 0149bcf104e7e5a4f7281d1b54dbc2b07fef26c1 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Mon, 5 Apr 2021 11:40:38 +0300 Subject: [PATCH 01/29] feat: initial implementation of restify instrumentation --- examples/restify/README.md | 81 +++++++ examples/restify/client.js | 36 ++++ examples/restify/images/jaeger-ui.png | Bin 0 -> 367298 bytes examples/restify/images/zipkin-ui.png | Bin 0 -> 234783 bytes examples/restify/package.json | 44 ++++ examples/restify/server.js | 68 ++++++ examples/restify/tracer.js | 37 ++++ .../.eslintignore | 1 + .../.eslintrc.js | 7 + .../.npmignore | 4 + .../LICENSE | 201 ++++++++++++++++++ .../README.md | 70 ++++++ .../package.json | 70 ++++++ .../src/index.ts | 17 ++ .../src/instrumentation.ts | 123 +++++++++++ .../src/version.ts | 18 ++ .../test/restify.test.ts | 175 +++++++++++++++ .../tsconfig.json | 11 + 18 files changed, 963 insertions(+) create mode 100644 examples/restify/README.md create mode 100644 examples/restify/client.js create mode 100644 examples/restify/images/jaeger-ui.png create mode 100644 examples/restify/images/zipkin-ui.png create mode 100644 examples/restify/package.json create mode 100644 examples/restify/server.js create mode 100644 examples/restify/tracer.js create mode 100644 plugins/node/opentelemetry-instrumentation-restify/.eslintignore create mode 100644 plugins/node/opentelemetry-instrumentation-restify/.eslintrc.js create mode 100644 plugins/node/opentelemetry-instrumentation-restify/.npmignore create mode 100644 plugins/node/opentelemetry-instrumentation-restify/LICENSE create mode 100644 plugins/node/opentelemetry-instrumentation-restify/README.md create mode 100644 plugins/node/opentelemetry-instrumentation-restify/package.json create mode 100644 plugins/node/opentelemetry-instrumentation-restify/src/index.ts create mode 100644 plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts create mode 100644 plugins/node/opentelemetry-instrumentation-restify/src/version.ts create mode 100644 plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts create mode 100644 plugins/node/opentelemetry-instrumentation-restify/tsconfig.json diff --git a/examples/restify/README.md b/examples/restify/README.md new file mode 100644 index 0000000000..2ac9b868b0 --- /dev/null +++ b/examples/restify/README.md @@ -0,0 +1,81 @@ +# Overview + +OpenTelemetry HTTP Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (we can use Zipkin or Jaeger for this example), to give observability to distributed systems. + +This is a simple example that demonstrates tracing HTTP request from client to server. The example +shows key aspects of tracing such as + +- Root Span (on Client) +- Child Span (on Client) +- Child Span from a Remote Parent (on Server) +- SpanContext Propagation (from Client to Server) +- Span Events +- Span Attributes + +## Installation + +```sh +# from this directory +npm install +``` + +Setup [Zipkin Tracing](https://zipkin.io/pages/quickstart.html) +or +Setup [Jaeger Tracing](https://www.jaegertracing.io/docs/latest/getting-started/#all-in-one) + +## Run the Application + +### Zipkin + +- Run the server + + ```sh + # from this directory + npm run zipkin:server + ``` + +- Run the client + + ```sh + # from this directory + npm run zipkin:client + ``` + +#### Zipkin UI + +`zipkin:server` script should output the `traceid` in the terminal (e.g `traceid: 4815c3d576d930189725f1f1d1bdfcc6`). +Go to Zipkin with your browser (e.g + +

+ +### Jaeger + +- Run the server + + ```sh + # from this directory + npm run jaeger:server + ``` + +- Run the client + + ```sh + # from this directory + npm run jaeger:client + ``` + +#### Jaeger UI + +`jaeger:server` script should output the `traceid` in the terminal (e.g `traceid: 4815c3d576d930189725f1f1d1bdfcc6`). +Go to Jaeger with your browser (e.g + +

+ +## 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/restify/client.js b/examples/restify/client.js new file mode 100644 index 0000000000..a27ba0355e --- /dev/null +++ b/examples/restify/client.js @@ -0,0 +1,36 @@ +'use strict'; + +const api = require('@opentelemetry/api'); +const tracer = require('./tracer')('example-http-client'); +// eslint-disable-next-line import/order +const http = require('http'); + +/** A function which makes requests and handles response. */ +function makeRequest() { + // span corresponds to outgoing requests. Here, we have manually created + // the span, which is created to track work that happens outside of the + // request lifecycle entirely. + const span = tracer.startSpan('makeRequest'); + api.context.with(api.setSpan(api.context.active(), span), () => { + http.get({ + host: 'localhost', + port: 8080, + path: '/helloworld', + }, (response) => { + const body = []; + response.on('data', (chunk) => body.push(chunk)); + response.on('end', () => { + console.log(body.toString()); + span.end(); + }); + }); + }); + + // The process must live for at least the interval past any traces that + // must be exported, or some risk being lost if they are recorded after the + // last export. + console.log('Sleeping 5 seconds before shutdown to ensure all records are flushed.'); + setTimeout(() => { console.log('Completed.'); }, 5000); +} + +makeRequest(); diff --git a/examples/restify/images/jaeger-ui.png b/examples/restify/images/jaeger-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..181a097113258f2607ac06957b035d8719db219d GIT binary patch literal 367298 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�b_QGTj}+%}4U>>fxTOknWvRXw5BPjtH%m+Y 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ℑ)3 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Έ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 literal 0 HcmV?d00001 diff --git a/examples/restify/images/zipkin-ui.png b/examples/restify/images/zipkin-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..ac04aca4f9092ba2c4fb05bf8c0aea2e97bcac2c GIT binary patch literal 234783 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 z

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 literal 0 HcmV?d00001 diff --git a/examples/restify/package.json b/examples/restify/package.json new file mode 100644 index 0000000000..6eb7ed028f --- /dev/null +++ b/examples/restify/package.json @@ -0,0 +1,44 @@ +{ + "name": "restify-example", + "private": true, + "version": "0.18.0", + "description": "Example of HTTP integration with OpenTelemetry", + "main": "index.js", + "scripts": { + "zipkin:server": "cross-env EXPORTER=zipkin node ./server.js", + "zipkin:client": "cross-env EXPORTER=zipkin node ./client.js", + "jaeger:server": "cross-env EXPORTER=jaeger node ./server.js", + "jaeger:client": "cross-env EXPORTER=jaeger node ./client.js" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/open-telemetry/opentelemetry-js.git" + }, + "keywords": [ + "opentelemetry", + "http", + "tracing" + ], + "engines": { + "node": ">=8" + }, + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js/issues" + }, + "dependencies": { + "@opentelemetry/api": "^0.18.0", + "@opentelemetry/exporter-jaeger": "^0.18.0", + "@opentelemetry/exporter-zipkin": "^0.18.0", + "@opentelemetry/instrumentation": "^0.18.0", + "@opentelemetry/instrumentation-http": "^0.18.0", + "@opentelemetry/node": "^0.18.0", + "@opentelemetry/tracing": "^0.18.0", + "restify": "^4.3.4" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "devDependencies": { + "cross-env": "^6.0.0" + } +} diff --git a/examples/restify/server.js b/examples/restify/server.js new file mode 100644 index 0000000000..a7592a86ff --- /dev/null +++ b/examples/restify/server.js @@ -0,0 +1,68 @@ +'use strict'; + +/* eslint-disable */ + +const api = require('@opentelemetry/api'); +const http = require('http'); + +const { diag, DiagConsoleLogger, DiagLogLevel } = api; +diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE); + +// eslint-disable-next-line import/order +const tracer = require('./tracer')('example-http-server'); +// eslint-disable-next-line import/order +const restify = require('restify'); + +const server = restify.createServer(); + +server.use((req, res, next) => { + const ctx = api.context.active(); + const span = api.getSpan(ctx); + console.log('USER', 'mw', span.name, span.attributes, span?.instrumentationLibrary?.name); + next(); +}); + +server.get('/hello/:name', (req, res, next) => { + console.log('USER', 'handling hello'); + res.send(`Hello, ${req.params.name}\n`); + return next(); +}); + + +server.get('/bye/:name', (req, res, next) => { + console.log('USER', 'handling hello 2'); + // cannot execute the operation on ended Span + res.send(`Bye, ${req.params.name}\n`); + throw new Error('errroror'); +}); + +let port; +server.listen(0, () => { + port = server.address().port; + console.log('USER', 'ready on %s', server.url); +}); + +setTimeout(() => { + http.get({ + hostname: 'localhost', + headers: { + accept: 'text/plain', + }, + port, + path: '/hello/name' + }, (res) => { + res.on('data', (data) => console.log('USER', '::', data.toString())); + }); + + http.get({ + hostname: 'localhost', + headers: { + accept: 'text/plain', + }, + port, + path: '/bye/name' + }, (res) => { + res.on('data', (data) => console.log('USER', '::', data.toString())); + }); +}, 100); + diff --git a/examples/restify/tracer.js b/examples/restify/tracer.js new file mode 100644 index 0000000000..4525534e18 --- /dev/null +++ b/examples/restify/tracer.js @@ -0,0 +1,37 @@ +'use strict'; + +const opentelemetry = require('@opentelemetry/api'); + +const { diag, DiagConsoleLogger, DiagLogLevel } = opentelemetry; +diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE); + +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +const { NodeTracerProvider } = require('@opentelemetry/node'); +const { SimpleSpanProcessor } = require('@opentelemetry/tracing'); +const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); + +const { RestifyInstrumentation: Instrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify/build/src'); +const { HttpInstrumentation } = require('../../../opentelemetry-js/packages/opentelemetry-instrumentation-http'); + +module.exports = (serviceName) => { + const provider = new NodeTracerProvider(); + registerInstrumentations({ + tracerProvider: provider, + // when boostraping with lerna for testing purposes + instrumentations: [ + HttpInstrumentation, + Instrumentation, + ], + }); + + const exporter = new JaegerExporter({ + serviceName, + }); + + provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + + // Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings + provider.register(); + + return opentelemetry.trace.getTracer('restify-example'); +}; diff --git a/plugins/node/opentelemetry-instrumentation-restify/.eslintignore b/plugins/node/opentelemetry-instrumentation-restify/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/.eslintignore @@ -0,0 +1 @@ +build diff --git a/plugins/node/opentelemetry-instrumentation-restify/.eslintrc.js b/plugins/node/opentelemetry-instrumentation-restify/.eslintrc.js new file mode 100644 index 0000000000..f756f4488b --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + "env": { + "mocha": true, + "node": true + }, + ...require('../../../eslint.config.js') +} diff --git a/plugins/node/opentelemetry-instrumentation-restify/.npmignore b/plugins/node/opentelemetry-instrumentation-restify/.npmignore new file mode 100644 index 0000000000..9505ba9450 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/.npmignore @@ -0,0 +1,4 @@ +/bin +/coverage +/doc +/test diff --git a/plugins/node/opentelemetry-instrumentation-restify/LICENSE b/plugins/node/opentelemetry-instrumentation-restify/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/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-restify/README.md b/plugins/node/opentelemetry-instrumentation-restify/README.md new file mode 100644 index 0000000000..9687350add --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/README.md @@ -0,0 +1,70 @@ +# OpenTelemetry Express Instrumentation for Node.js +[![Gitter chat][gitter-image]][gitter-url] +[![dependencies][dependencies-image]][dependencies-url] +[![devDependencies][devDependencies-image]][devDependencies-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for [`express`](https://github.com/expressjs/express). + +For automatic instrumentation see the +[@opentelemetry/node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-node) package. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-express +``` +### Supported Versions + - `^4.0.0` + +## Usage + +OpenTelemetry Express 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 a specific instrumentation (express in this case), specify it in the Node Tracer's configuration. +```js +const { NodeTracerProvider } = require('@opentelemetry/node'); +const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express'); + +const provider = new NodeTracerProvider(); +provider.register(); +new ExpressInstrumentation(); +``` + +See [examples/express](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/express) for a short example. + +### Caveats + +Because of the way express works, it's hard to correctly compute the time taken by asynchronous middlewares and request handlers. For this reason, the time you'll see reported for asynchronous middlewares and request handlers will only represent the synchronous execution time, and **not** any asynchronous work. + +### Express Instrumentation Options + +Express instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Description | +| ------- | ---- | ----------- | +| `ignoreLayers` | `IgnoreMatcher[]` | Express instrumentation will not trace all layers that match. | +| `ignoreLayersType`| `ExpressLayerType[]` | Express instrumentation will ignore the layers that match based on their type. | + +For reference, here are the three different layer type: + - `router` is the name of `express.Router()` + - `middleware` + - `request_handler` is the name for anything thats not a router or a middleware. + +## Useful links +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us on [gitter][gitter-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[gitter-image]: https://badges.gitter.im/open-telemetry/opentelemetry-js.svg +[gitter-url]: https://gitter.im/open-telemetry/opentelemetry-node?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge +[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://david-dm.org/open-telemetry/opentelemetry-js-contrib/status.svg?path=packages/opentelemetry-instrumentation-express +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=packages%2Fopentelemetry-instrumentation-express +[devDependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib/dev-status.svg?path=packages/opentelemetry-instrumentation-express +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=packages%2Fopentelemetry-instrumentation-express&type=dev diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json new file mode 100644 index 0000000000..33f2154c89 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -0,0 +1,70 @@ +{ + "name": "@opentelemetry/instrumentation-restify", + "version": "0.14.0", + "description": "OpenTelemetry express automatic instrumentation package.", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js-contrib", + "scripts": { + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.ts'", + "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", + "tdd": "yarn test -- --watch-extensions ts --watch", + "clean": "rimraf build/*", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "precompile": "tsc --version", + "version:update": "node ../../../scripts/version-update.js", + "compile": "npm run version:update && tsc -p .", + "prepare": "npm run compile", + "watch": "tsc -w" + }, + "keywords": [ + "opentelemetry", + "express", + "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" + }, + "devDependencies": { + "@opentelemetry/context-async-hooks": "0.18.0", + "@opentelemetry/node": "0.18.0", + "@opentelemetry/tracing": "0.18.0", + "@types/express": "4.17.7", + "@types/mocha": "7.0.2", + "@types/node": "14.0.27", + "@types/restify": "^4.3.7", + "codecov": "3.7.2", + "gts": "3.1.0", + "mocha": "7.2.0", + "nyc": "15.1.0", + "restify": "^4.3.4", + "rimraf": "3.0.2", + "ts-mocha": "8.0.0", + "ts-node": "9.0.0", + "tslint-consistent-codestyle": "1.16.0", + "tslint-microsoft-contrib": "6.2.0", + "typescript": "4.1.3" + }, + "dependencies": { + "@opentelemetry/api": "^0.18.0", + "@opentelemetry/core": "^0.18.0", + "@opentelemetry/instrumentation": "^0.18.0", + "@opentelemetry/semantic-conventions": "^0.18.0" + } +} diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/index.ts b/plugins/node/opentelemetry-instrumentation-restify/src/index.ts new file mode 100644 index 0000000000..24c76056a1 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/src/index.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 * from './instrumentation'; diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts new file mode 100644 index 0000000000..dbbe969693 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -0,0 +1,123 @@ +/* + * 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 api from '@opentelemetry/api'; +import { getSpan } from '@opentelemetry/api'; +import * as restify from 'restify'; +import { Server } from 'restify'; +import { VERSION } from './version'; +import { + InstrumentationBase, + InstrumentationNodeModuleDefinition, + InstrumentationNodeModuleFile, + isWrapped, +} from '@opentelemetry/instrumentation'; +import { HttpAttribute } from '@opentelemetry/semantic-conventions'; + +const { diag } = api; +const RESTIFY_HANDLERS = ['use', 'pre']; +const RESTIFY_METHODS = ['del', 'get', 'head', 'opts', 'post', 'put', 'patch']; +const RESTIFY_VERSION_ATTRIBUTE = 'restify.version' + +const MODULE_NAME = 'restify'; +const SUPPORTED_VERSIONS = ['^4.0.0']; + +export class RestifyInstrumentation extends InstrumentationBase< + typeof restify +> { + constructor() { + super( + `@opentelemetry/instrumentation-${MODULE_NAME}`, + VERSION + ); + } + + private _moduleVersion: string | undefined; + + init() { + const module = new InstrumentationNodeModuleDefinition( + MODULE_NAME, + SUPPORTED_VERSIONS, + (moduleExports, moduleVersion) => { + this._moduleVersion = moduleVersion; + return moduleExports; + } + ); + + module.files.push(new InstrumentationNodeModuleFile( + 'restify/lib/server.js', + SUPPORTED_VERSIONS, + (moduleExports, moduleVersion) => { + diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + const Server: any = moduleExports; + for (const name of RESTIFY_METHODS) { + if (isWrapped(Server.prototype[name])) { + this._unwrap(Server.prototype, name); + } + this._wrap(Server.prototype, name as keyof Server, this._methodPatcher.bind(this)); + } + for (const name of RESTIFY_HANDLERS) { + if (isWrapped(Server.prototype[name])) { + this._unwrap(Server.prototype, name); + } + this._wrap(Server.prototype, name as keyof Server, this._handlerPatcher.bind(this)); + } + return moduleExports; + }, + (moduleExports, moduleVersion) => { + diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + if (moduleExports) { + const Server: any = moduleExports; + for (const name of RESTIFY_METHODS) { + this._unwrap(Server.prototype, name as keyof Server); + } + for (const name of RESTIFY_HANDLERS) { + this._unwrap(Server.prototype, name as keyof Server); + } + } + } + )); + + return module; + } + + private _handlerPatcher (original: Function) { + const instrumentation = this; + return function (this: Server, handler: Function) { + return original.call(this, (req: any, res: any, next: Function) => { + const span = getSpan(api?.context?.active()); + if (span) { + span.setAttribute(RESTIFY_VERSION_ATTRIBUTE, instrumentation._moduleVersion || 'n/a'); + } + return handler(req, res, next); + }); + }; + } + + private _methodPatcher (original: Function) { + const instrumentation = this; + return function (this: Server, path: any, handler: Function) { + return original.call(this, path, (req: any, res: any, next: Function) => { + const span = getSpan(api?.context?.active()); + if (span && req?.route?.path) { + span.setAttribute(HttpAttribute.HTTP_ROUTE, req.route.path); + span.setAttribute(RESTIFY_VERSION_ATTRIBUTE, instrumentation._moduleVersion || 'n/a'); + } + return handler(req, res, next); + }); + }; + } +} diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/version.ts b/plugins/node/opentelemetry-instrumentation-restify/src/version.ts new file mode 100644 index 0000000000..bc552fd543 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/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.14.0'; diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts new file mode 100644 index 0000000000..c3ff84dbe6 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -0,0 +1,175 @@ +/* + * 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 restify from 'restify'; +import { context, setSpan } from '@opentelemetry/api'; +import { NodeTracerProvider } from '@opentelemetry/node'; +import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; +import { + InMemorySpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/tracing'; +// import { +// ExceptionAttribute, +// ExceptionEventName, +// HttpAttribute, +// } from '@opentelemetry/semantic-conventions'; + +import { RestifyInstrumentation } from '../src'; +const plugin = new RestifyInstrumentation(); + +import { strict as assert } from 'assert'; +import * as http from 'http'; +import { AddressInfo } from 'net'; + +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 createServer = async (setupRoutes?: Function) => { + const server = restify.createServer(); + + if (typeof setupRoutes === 'function') { + setupRoutes(server); + } else { + server.get('/route/:param', (req, res, next) => { + res.send({ route: req?.params?.param }); + }); + + server.get('/failing', (req, res, next) => { + throw new Error('NOK'); + }); + } + + await new Promise(resolve => server.listen(0, resolve)); + return server; +}; + +describe('Restify Instrumentation', () => { + const provider = new NodeTracerProvider(); + const memoryExporter = new InMemorySpanExporter(); + const spanProcessor = new SimpleSpanProcessor(memoryExporter); + provider.addSpanProcessor(spanProcessor); + plugin.setTracerProvider(provider); + const tracer = provider.getTracer('default'); + let contextManager: AsyncHooksContextManager; + let server: restify.Server; + let port: number; + + before(() => { + plugin.enable(); + }); + + after(() => { + plugin.disable(); + }); + + beforeEach(async () => { + contextManager = new AsyncHooksContextManager(); + context.setGlobalContextManager(contextManager.enable()); + + server = await createServer(); + port = (server.address() as AddressInfo).port; + assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); + }); + + afterEach(() => { + memoryExporter.reset(); + context.disable(); + server.close(); + }); + + describe('Instrumenting core middleware calls', () => { + it('should add restify attributes to the parent span', async () => { + const rootSpan = tracer.startSpan('rootSpan'); + + server.pre((req: any, res: any, next: any) => { + context.with(setSpan(context.active(), rootSpan), next); + }); + + await context.with(setSpan(context.active(), rootSpan), async () => { + await httpRequest.get(`http://localhost:${port}/route/foo`); + rootSpan.end(); + assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 1); + const span = memoryExporter + .getFinishedSpans()[0]; + + assert.notEqual(span, undefined); + assert.equal(span.attributes['http.route'], '/route/:param'); + assert.equal(span.attributes['restify.version'], 'n/a'); + }); + }); + + it('should lack `http.route` but still have `restify.version` if route was 404', async () => { + const rootSpan = tracer.startSpan('rootSpan'); + + const server = await createServer((server: restify.Server) => { + server.pre((req: any, res: any, next: any) => { + context.with(setSpan(context.active(), rootSpan), next); + }); + }); + port = (server.address() as AddressInfo).port; + + await context.with(setSpan(context.active(), rootSpan), async () => { + const res = await httpRequest.get(`http://localhost:${port}/route/foo`); + rootSpan.end(); + assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 1); + const span = memoryExporter + .getFinishedSpans()[0]; + + assert.notEqual(span, undefined); + assert.equal(span.attributes['http.route'], undefined); + assert.equal(span.attributes['restify.version'], 'n/a'); + assert.strictEqual(res, '{"code":"ResourceNotFound","message":"/route/foo does not exist"}'); + }); + }); + + it('should not create span if there is no parent span', async () => { + const res = await httpRequest.get(`http://localhost:${port}/route/bar`); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); + assert.strictEqual(res, '{"route":"bar"}'); + }); + }); + + describe('Disabling restify instrumentation', () => { + it('should not create new spans', async () => { + plugin.disable(); + const rootSpan = tracer.startSpan('rootSpan'); + + await context.with(setSpan(context.active(), rootSpan), async () => { + assert.strictEqual(await httpRequest.get(`http://localhost:${port}/route/foo`), '{"route":"foo"}'); + rootSpan.end(); + assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 1); + assert.notStrictEqual(memoryExporter.getFinishedSpans()[0], undefined); + }); + }); + }); +}); diff --git a/plugins/node/opentelemetry-instrumentation-restify/tsconfig.json b/plugins/node/opentelemetry-instrumentation-restify/tsconfig.json new file mode 100644 index 0000000000..28be80d266 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.base", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] +} From 96f73e6fbc502220ba39b6b86d7ae9b3ca8920f8 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 6 Apr 2021 18:19:13 +0300 Subject: [PATCH 02/29] feat: create spans instead of altering parent spans --- .../package.json | 4 +- .../src/instrumentation.ts | 94 ++++++++++++++----- .../src/types.ts | 24 +++++ 3 files changed, 95 insertions(+), 27 deletions(-) create mode 100644 plugins/node/opentelemetry-instrumentation-restify/src/types.ts diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 33f2154c89..7ad34a83ba 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -46,6 +46,7 @@ "@opentelemetry/node": "0.18.0", "@opentelemetry/tracing": "0.18.0", "@types/express": "4.17.7", + "@types/lodash.once": "^4.1.6", "@types/mocha": "7.0.2", "@types/node": "14.0.27", "@types/restify": "^4.3.7", @@ -65,6 +66,7 @@ "@opentelemetry/api": "^0.18.0", "@opentelemetry/core": "^0.18.0", "@opentelemetry/instrumentation": "^0.18.0", - "@opentelemetry/semantic-conventions": "^0.18.0" + "@opentelemetry/semantic-conventions": "^0.18.0", + "lodash.once": "^4.1.1" } } diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index dbbe969693..67305ac720 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -14,11 +14,12 @@ * limitations under the License. */ -import api from '@opentelemetry/api'; -import { getSpan } from '@opentelemetry/api'; +import * as api from '@opentelemetry/api'; import * as restify from 'restify'; import { Server } from 'restify'; +import * as types from './types'; import { VERSION } from './version'; +import once = require('lodash.once'); import { InstrumentationBase, InstrumentationNodeModuleDefinition, @@ -28,9 +29,8 @@ import { import { HttpAttribute } from '@opentelemetry/semantic-conventions'; const { diag } = api; -const RESTIFY_HANDLERS = ['use', 'pre']; +const RESTIFY_MW_METHODS = ['use', 'pre']; const RESTIFY_METHODS = ['del', 'get', 'head', 'opts', 'post', 'put', 'patch']; -const RESTIFY_VERSION_ATTRIBUTE = 'restify.version' const MODULE_NAME = 'restify'; const SUPPORTED_VERSIONS = ['^4.0.0']; @@ -69,11 +69,11 @@ export class RestifyInstrumentation extends InstrumentationBase< } this._wrap(Server.prototype, name as keyof Server, this._methodPatcher.bind(this)); } - for (const name of RESTIFY_HANDLERS) { + for (const name of RESTIFY_MW_METHODS) { if (isWrapped(Server.prototype[name])) { this._unwrap(Server.prototype, name); } - this._wrap(Server.prototype, name as keyof Server, this._handlerPatcher.bind(this)); + this._wrap(Server.prototype, name as keyof Server, this._middlewarePatcher.bind(this)); } return moduleExports; }, @@ -84,7 +84,7 @@ export class RestifyInstrumentation extends InstrumentationBase< for (const name of RESTIFY_METHODS) { this._unwrap(Server.prototype, name as keyof Server); } - for (const name of RESTIFY_HANDLERS) { + for (const name of RESTIFY_MW_METHODS) { this._unwrap(Server.prototype, name as keyof Server); } } @@ -94,30 +94,72 @@ export class RestifyInstrumentation extends InstrumentationBase< return module; } - private _handlerPatcher (original: Function) { + private _middlewarePatcher (original: Function, methodName?: string) { const instrumentation = this; - return function (this: Server, handler: Function) { - return original.call(this, (req: any, res: any, next: Function) => { - const span = getSpan(api?.context?.active()); - if (span) { - span.setAttribute(RESTIFY_VERSION_ATTRIBUTE, instrumentation._moduleVersion || 'n/a'); - } - return handler(req, res, next); - }); + return function (this: Server, ...handler: restify.RequestHandler[][] | restify.RequestHandler[]) { + return original.call(this, instrumentation._handlerPatcher({ type: types.LayerType.MIDDLEWARE, methodName }, handler)); }; } - private _methodPatcher (original: Function) { + private _methodPatcher (original: Function, methodName?: string) { const instrumentation = this; - return function (this: Server, path: any, handler: Function) { - return original.call(this, path, (req: any, res: any, next: Function) => { - const span = getSpan(api?.context?.active()); - if (span && req?.route?.path) { - span.setAttribute(HttpAttribute.HTTP_ROUTE, req.route.path); - span.setAttribute(RESTIFY_VERSION_ATTRIBUTE, instrumentation._moduleVersion || 'n/a'); - } - return handler(req, res, next); - }); + return function (this: Server, path: any, ...handler: restify.RequestHandler[][] | restify.RequestHandler[]) { + return original.call(this, path, ...instrumentation._handlerPatcher({ type: types.LayerType.REQUEST_HANDLER, path, methodName }, handler)); }; } + + // will return the same type as `handler`, but all functions recusively patched + private _handlerPatcher (metadata: types.Metadata, handler: restify.RequestHandler | restify.RequestHandler[] | restify.RequestHandler[][]): any { + if (Array.isArray(handler)) { + return (handler as restify.RequestHandler[]).map((handler: any) => this._handlerPatcher(metadata, handler)); + } + if (typeof handler === 'function') { + return (req: types.Request, res: restify.Response, next: restify.Next) => { + // const parentSpan = api.getSpan(api?.context?.active()); + const route = (typeof req.getRoute === 'function' ? req.getRoute()?.path : req.route?.path); + const spanName = route || metadata.methodName || metadata.type; + const attributes = { + [types.CustomAttributeNames.VERSION]: this._moduleVersion || 'n/a', + [types.CustomAttributeNames.TYPE]: metadata.type, + [types.CustomAttributeNames.METHOD]: metadata.methodName, + [HttpAttribute.HTTP_ROUTE]: route, + } + const span = this.tracer.startSpan(spanName, { + attributes, + }, api.context.active()); // TODO: <- with this I intend to find and attach all consecutive handlers to HTTP span + // .. but instead all spans are attached to the previous handler's span. + const endSpan = once(span.end.bind(span)); + req.once('after', endSpan); + req.once('restifyError', endSpan); + req.once('uncaughtException', endSpan); + + const patchedNext = (err: any) => { + // handler has finished + endSpan(); + next(err); + }; + patchedNext.ifError = next.ifError; + + return api.context.with( + api.setSpan(api.context.active(), span), + (req: types.Request, res: restify.Response, next: restify.Next) => { + try { + return handler(req, res, next); + } catch (err) { + span.recordException(err); + throw err; + } finally { + endSpan(); + } + }, + this, + req, + res, + patchedNext + ); + }; + } + + return handler; + } } diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/types.ts b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts new file mode 100644 index 0000000000..2537045ee4 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts @@ -0,0 +1,24 @@ +import * as restify from 'restify'; + +export enum CustomAttributeNames { + TYPE = 'restify.type', + METHOD = 'restify.method', + VERSION = 'restify.version', +} + +export enum LayerType { + MIDDLEWARE = 'middleware', + REQUEST_HANDLER = 'request_handler', +} + +declare interface RequestWithRoute extends restify.Request { + route: { path: string }, + getRoute: (() => { path: string }), +} + +export declare type Request = RequestWithRoute; +export declare type Metadata = { + path?: string, + methodName?: string, + type: LayerType, +}; From 4f920f54516d560e3185e0d7defd265ab2d14a77 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 6 Apr 2021 18:56:05 +0300 Subject: [PATCH 03/29] feat: clean examples up --- examples/restify/client.js | 17 ++++++---- examples/restify/server.js | 67 +++++++++++--------------------------- 2 files changed, 29 insertions(+), 55 deletions(-) diff --git a/examples/restify/client.js b/examples/restify/client.js index a27ba0355e..aecba9643a 100644 --- a/examples/restify/client.js +++ b/examples/restify/client.js @@ -6,21 +6,23 @@ const tracer = require('./tracer')('example-http-client'); const http = require('http'); /** A function which makes requests and handles response. */ -function makeRequest() { +function makeRequest(path) { // span corresponds to outgoing requests. Here, we have manually created // the span, which is created to track work that happens outside of the // request lifecycle entirely. - const span = tracer.startSpan('makeRequest'); + const span = tracer.startSpan(`makeRequest to ${path}`); api.context.with(api.setSpan(api.context.active(), span), () => { http.get({ host: 'localhost', + headers: { + accept: 'text/plain', + }, port: 8080, - path: '/helloworld', + path, }, (response) => { - const body = []; - response.on('data', (chunk) => body.push(chunk)); + response.on('data', (chunk) => console.log(path, '::', chunk.toString('utf8'))); response.on('end', () => { - console.log(body.toString()); + console.log(path, 'status', response.statusCode); span.end(); }); }); @@ -33,4 +35,5 @@ function makeRequest() { setTimeout(() => { console.log('Completed.'); }, 5000); } -makeRequest(); +makeRequest('/hello/world'); +makeRequest('/bye/world'); diff --git a/examples/restify/server.js b/examples/restify/server.js index a7592a86ff..2d42a6032f 100644 --- a/examples/restify/server.js +++ b/examples/restify/server.js @@ -1,68 +1,39 @@ 'use strict'; -/* eslint-disable */ - const api = require('@opentelemetry/api'); -const http = require('http'); const { diag, DiagConsoleLogger, DiagLogLevel } = api; diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE); -// eslint-disable-next-line import/order -const tracer = require('./tracer')('example-http-server'); -// eslint-disable-next-line import/order const restify = require('restify'); +require('./tracer')('example-restify-server'); const server = restify.createServer(); +const PORT = 8080; -server.use((req, res, next) => { - const ctx = api.context.active(); - const span = api.getSpan(ctx); - console.log('USER', 'mw', span.name, span.attributes, span?.instrumentationLibrary?.name); +server.pre((req, res, next) => { next(); }); +server.use([(req, res, next) => { + // noop to showcase use with an array + next(); +}, (req, res, next) => { + req.defaultName = 'Stranger'; + next(); +}]); + server.get('/hello/:name', (req, res, next) => { - console.log('USER', 'handling hello'); - res.send(`Hello, ${req.params.name}\n`); - return next(); + console.log('Handling hello'); + res.send(`Hello, ${req.params.name || req.defaultName}\n`); + return next(); }); - -server.get('/bye/:name', (req, res, next) => { - console.log('USER', 'handling hello 2'); - // cannot execute the operation on ended Span - res.send(`Bye, ${req.params.name}\n`); - throw new Error('errroror'); +server.get('/bye/:name', () => { + console.log('Handling bye'); + throw new Error('Ooops in bye'); }); -let port; -server.listen(0, () => { - port = server.address().port; - console.log('USER', 'ready on %s', server.url); +server.listen(PORT, () => { + console.log('Ready on %s', server.url); }); - -setTimeout(() => { - http.get({ - hostname: 'localhost', - headers: { - accept: 'text/plain', - }, - port, - path: '/hello/name' - }, (res) => { - res.on('data', (data) => console.log('USER', '::', data.toString())); - }); - - http.get({ - hostname: 'localhost', - headers: { - accept: 'text/plain', - }, - port, - path: '/bye/name' - }, (res) => { - res.on('data', (data) => console.log('USER', '::', data.toString())); - }); -}, 100); - From 92af23333cd1ea3f17238e5555189475135b7a46 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Wed, 7 Apr 2021 14:46:42 +0300 Subject: [PATCH 04/29] feat: make exporter configurable like other examples --- examples/restify/tracer.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/examples/restify/tracer.js b/examples/restify/tracer.js index 4525534e18..9885540c10 100644 --- a/examples/restify/tracer.js +++ b/examples/restify/tracer.js @@ -7,12 +7,26 @@ diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { NodeTracerProvider } = require('@opentelemetry/node'); -const { SimpleSpanProcessor } = require('@opentelemetry/tracing'); +const { SimpleSpanProcessor, ConsoleSpanExporter } = require('@opentelemetry/tracing'); const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); +const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); const { RestifyInstrumentation: Instrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify/build/src'); const { HttpInstrumentation } = require('../../../opentelemetry-js/packages/opentelemetry-instrumentation-http'); +const Exporter = ((exporterParam) => { + if (typeof exporterParam === 'string') { + const exporterString = exporterParam.toLowerCase(); + if (exporterString.startsWith('z')) { + return ZipkinExporter; + } + if (exporterString.startsWith('j')) { + return JaegerExporter; + } + } + return ConsoleSpanExporter; +})(process.env.EXPORTER); + module.exports = (serviceName) => { const provider = new NodeTracerProvider(); registerInstrumentations({ @@ -24,7 +38,7 @@ module.exports = (serviceName) => { ], }); - const exporter = new JaegerExporter({ + const exporter = new Exporter({ serviceName, }); From 3c37d7f65d81153e7ff9fb9ca5b998dae232225b Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 8 Apr 2021 09:43:56 +0300 Subject: [PATCH 05/29] feat: implement disabling restify instrumentation --- .../src/instrumentation.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 67305ac720..41f9e1dca3 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -46,6 +46,7 @@ export class RestifyInstrumentation extends InstrumentationBase< } private _moduleVersion: string | undefined; + private _isDisabled = false; init() { const module = new InstrumentationNodeModuleDefinition( @@ -62,6 +63,7 @@ export class RestifyInstrumentation extends InstrumentationBase< SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + this._isDisabled = false; const Server: any = moduleExports; for (const name of RESTIFY_METHODS) { if (isWrapped(Server.prototype[name])) { @@ -79,6 +81,7 @@ export class RestifyInstrumentation extends InstrumentationBase< }, (moduleExports, moduleVersion) => { diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + this._isDisabled = true; if (moduleExports) { const Server: any = moduleExports; for (const name of RESTIFY_METHODS) { @@ -115,6 +118,9 @@ export class RestifyInstrumentation extends InstrumentationBase< } if (typeof handler === 'function') { return (req: types.Request, res: restify.Response, next: restify.Next) => { + if (this._isDisabled) { + return handler(req, res, next); + } // const parentSpan = api.getSpan(api?.context?.active()); const route = (typeof req.getRoute === 'function' ? req.getRoute()?.path : req.route?.path); const spanName = route || metadata.methodName || metadata.type; From 32b89311e366401d1eaebf145ff3032f1c78640b Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 8 Apr 2021 09:47:21 +0300 Subject: [PATCH 06/29] test: be more verbose in tests and check all spans --- .../test/restify.test.ts | 91 ++++++++++++------- 1 file changed, 60 insertions(+), 31 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index c3ff84dbe6..dd825d4d43 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -60,6 +60,16 @@ const createServer = async (setupRoutes?: Function) => { if (typeof setupRoutes === 'function') { setupRoutes(server); } else { + server.pre((req, res, next) => { + // this will be run before routing + next(); + }); + + server.use((req, res, next) => { + // this will be run only if route was found + next(); + }); + server.get('/route/:param', (req, res, next) => { res.send({ route: req?.params?.param }); }); @@ -108,53 +118,72 @@ describe('Restify Instrumentation', () => { }); describe('Instrumenting core middleware calls', () => { - it('should add restify attributes to the parent span', async () => { - const rootSpan = tracer.startSpan('rootSpan'); - - server.pre((req: any, res: any, next: any) => { - context.with(setSpan(context.active(), rootSpan), next); - }); + it('should create a span for each handler', async () => { + const rootSpan = tracer.startSpan('clientSpan'); await context.with(setSpan(context.active(), rootSpan), async () => { await httpRequest.get(`http://localhost:${port}/route/foo`); rootSpan.end(); - assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 1); - const span = memoryExporter - .getFinishedSpans()[0]; - - assert.notEqual(span, undefined); - assert.equal(span.attributes['http.route'], '/route/:param'); - assert.equal(span.attributes['restify.version'], 'n/a'); + assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 4); + + { + // span from pre + const span = memoryExporter + .getFinishedSpans()[0]; + assert.notEqual(span, undefined); + assert.equal(span.attributes['http.route'], undefined); + assert.equal(span.attributes['restify.method'], 'pre'); + assert.equal(span.attributes['restify.type'], 'middleware'); + assert.equal(span.attributes['restify.version'], 'n/a'); + } + { + // span from use + const span = memoryExporter + .getFinishedSpans()[1]; + assert.notEqual(span, undefined); + assert.equal(span.attributes['http.route'], '/route/:param'); + assert.equal(span.attributes['restify.method'], 'use'); + assert.equal(span.attributes['restify.type'], 'middleware'); + assert.equal(span.attributes['restify.version'], 'n/a'); + } + { + // span from get + const span = memoryExporter + .getFinishedSpans()[2]; + assert.notEqual(span, undefined); + assert.equal(span.attributes['http.route'], '/route/:param'); + assert.equal(span.attributes['restify.method'], 'get'); + assert.equal(span.attributes['restify.type'], 'request_handler'); + assert.equal(span.attributes['restify.version'], 'n/a'); + } }); }); it('should lack `http.route` but still have `restify.version` if route was 404', async () => { const rootSpan = tracer.startSpan('rootSpan'); - const server = await createServer((server: restify.Server) => { - server.pre((req: any, res: any, next: any) => { - context.with(setSpan(context.active(), rootSpan), next); - }); - }); - port = (server.address() as AddressInfo).port; - await context.with(setSpan(context.active(), rootSpan), async () => { - const res = await httpRequest.get(`http://localhost:${port}/route/foo`); + const res = await httpRequest.get(`http://localhost:${port}/not-found`); rootSpan.end(); - assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 1); - const span = memoryExporter - .getFinishedSpans()[0]; - - assert.notEqual(span, undefined); - assert.equal(span.attributes['http.route'], undefined); - assert.equal(span.attributes['restify.version'], 'n/a'); - assert.strictEqual(res, '{"code":"ResourceNotFound","message":"/route/foo does not exist"}'); + assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 2); + + { + // span from pre + const span = memoryExporter + .getFinishedSpans()[0]; + assert.notEqual(span, undefined); + assert.equal(span.attributes['http.route'], undefined); + assert.equal(span.attributes['restify.method'], 'pre'); + assert.equal(span.attributes['restify.type'], 'middleware'); + assert.equal(span.attributes['restify.version'], 'n/a'); + } + assert.strictEqual(res, '{"code":"ResourceNotFound","message":"/not-found does not exist"}'); }); }); - it('should not create span if there is no parent span', async () => { + it('should create spans even if there is no parent', async () => { const res = await httpRequest.get(`http://localhost:${port}/route/bar`); - assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 3); assert.strictEqual(res, '{"route":"bar"}'); }); }); From ee64e4d2139c52d39a90c2e0d6523149bfed9907 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 8 Apr 2021 15:46:38 +0300 Subject: [PATCH 07/29] fix: remove the handlers from req, those events seem not to be fired --- .../src/instrumentation.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 41f9e1dca3..5a611dccf2 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -135,12 +135,7 @@ export class RestifyInstrumentation extends InstrumentationBase< }, api.context.active()); // TODO: <- with this I intend to find and attach all consecutive handlers to HTTP span // .. but instead all spans are attached to the previous handler's span. const endSpan = once(span.end.bind(span)); - req.once('after', endSpan); - req.once('restifyError', endSpan); - req.once('uncaughtException', endSpan); - const patchedNext = (err: any) => { - // handler has finished endSpan(); next(err); }; From b6c8318943173ce52d0a353487ae4ffd94bba999 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 8 Apr 2021 15:47:35 +0300 Subject: [PATCH 08/29] refactor: export the instrumentation as default --- .../opentelemetry-instrumentation-restify/src/index.ts | 3 +++ .../test/restify.test.ts | 7 +------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/index.ts b/plugins/node/opentelemetry-instrumentation-restify/src/index.ts index 24c76056a1..1a843eb1f0 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/index.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/index.ts @@ -14,4 +14,7 @@ * limitations under the License. */ +import { RestifyInstrumentation } from './instrumentation'; + export * from './instrumentation'; +export default RestifyInstrumentation; diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index dd825d4d43..1c7567e9af 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -22,13 +22,8 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/tracing'; -// import { -// ExceptionAttribute, -// ExceptionEventName, -// HttpAttribute, -// } from '@opentelemetry/semantic-conventions'; -import { RestifyInstrumentation } from '../src'; +import RestifyInstrumentation from '../src'; const plugin = new RestifyInstrumentation(); import { strict as assert } from 'assert'; From a46adb77865804d49c82a9b01456a168991bcfa5 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 8 Apr 2021 15:48:06 +0300 Subject: [PATCH 09/29] fix: thrown errors are generally not caught in restify --- examples/restify/server.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/restify/server.js b/examples/restify/server.js index 2d42a6032f..212d65b807 100644 --- a/examples/restify/server.js +++ b/examples/restify/server.js @@ -29,9 +29,9 @@ server.get('/hello/:name', (req, res, next) => { return next(); }); -server.get('/bye/:name', () => { +server.get('/bye/:name', (req, res, next) => { console.log('Handling bye'); - throw new Error('Ooops in bye'); + return next(new Error('Ooops in bye')); }); server.listen(PORT, () => { From 5d67867069ce0b04d4bf30b07e92dea950620e06 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 8 Apr 2021 15:49:25 +0300 Subject: [PATCH 10/29] feat: enable the instrumentation for all versions after 4.0.0 --- .../src/instrumentation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 5a611dccf2..33d8bf4b93 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -33,7 +33,7 @@ const RESTIFY_MW_METHODS = ['use', 'pre']; const RESTIFY_METHODS = ['del', 'get', 'head', 'opts', 'post', 'put', 'patch']; const MODULE_NAME = 'restify'; -const SUPPORTED_VERSIONS = ['^4.0.0']; +const SUPPORTED_VERSIONS = ['>=4.0.0']; export class RestifyInstrumentation extends InstrumentationBase< typeof restify From c4657df111a6408b2771aab6c369eea49092fba8 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 8 Apr 2021 16:05:46 +0300 Subject: [PATCH 11/29] docs: update docs and metadata in package.json and README.md files --- examples/restify/README.md | 74 +++++-------------- examples/restify/package.json | 2 +- .../README.md | 44 +++-------- .../package.json | 6 +- 4 files changed, 34 insertions(+), 92 deletions(-) diff --git a/examples/restify/README.md b/examples/restify/README.md index 2ac9b868b0..e031fc3b4e 100644 --- a/examples/restify/README.md +++ b/examples/restify/README.md @@ -1,23 +1,13 @@ # Overview -OpenTelemetry HTTP Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (we can use Zipkin or Jaeger for this example), to give observability to distributed systems. +OpenTelemetry Restify Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (we can use Zipkin or Jaeger for this example). This example demonstrates tracing calls made to Restify API. All generated spans include following attributes: -This is a simple example that demonstrates tracing HTTP request from client to server. The example -shows key aspects of tracing such as +- `http.route`: resolved route; +- `restify.method`: server method used to register the handler. One of `use`, `pre`, `del`, `get`, `head`, `opts`, `post`, `put` or `patch`; +- `restify.type`: either `middleware` or `request_handler`; +- `restify.version`: `restify` version running. -- Root Span (on Client) -- Child Span (on Client) -- Child Span from a Remote Parent (on Server) -- SpanContext Propagation (from Client to Server) -- Span Events -- Span Attributes - -## Installation - -```sh -# from this directory -npm install -``` +## Setup Setup [Zipkin Tracing](https://zipkin.io/pages/quickstart.html) or @@ -25,51 +15,25 @@ Setup [Jaeger Tracing](https://www.jaegertracing.io/docs/latest/getting-started/ ## Run the Application -### Zipkin - -- Run the server - - ```sh - # from this directory - npm run zipkin:server - ``` - -- Run the client +First install the dependencies: - ```sh - # from this directory - npm run zipkin:client - ``` - -#### Zipkin UI +```sh +npm install +``` -`zipkin:server` script should output the `traceid` in the terminal (e.g `traceid: 4815c3d576d930189725f1f1d1bdfcc6`). -Go to Zipkin with your browser (e.g +### Zipkin -

+```sh +npm run zipkin:server # Run the server +npm run zipkin:client # Run the client in a separate terminal +``` ### Jaeger -- Run the server - - ```sh - # from this directory - npm run jaeger:server - ``` - -- Run the client - - ```sh - # from this directory - npm run jaeger:client - ``` - -#### Jaeger UI - -`jaeger:server` script should output the `traceid` in the terminal (e.g `traceid: 4815c3d576d930189725f1f1d1bdfcc6`). -Go to Jaeger with your browser (e.g - -

+```sh +npm run jaeger:server # Run the server +npm run jaeger:client # Run the client in a separate terminal +``` ## Useful links diff --git a/examples/restify/package.json b/examples/restify/package.json index 6eb7ed028f..357c977252 100644 --- a/examples/restify/package.json +++ b/examples/restify/package.json @@ -2,7 +2,7 @@ "name": "restify-example", "private": true, "version": "0.18.0", - "description": "Example of HTTP integration with OpenTelemetry", + "description": "Example of restify integration with OpenTelemetry", "main": "index.js", "scripts": { "zipkin:server": "cross-env EXPORTER=zipkin node ./server.js", diff --git a/plugins/node/opentelemetry-instrumentation-restify/README.md b/plugins/node/opentelemetry-instrumentation-restify/README.md index 9687350add..209e7b3d17 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/README.md +++ b/plugins/node/opentelemetry-instrumentation-restify/README.md @@ -1,10 +1,11 @@ -# OpenTelemetry Express Instrumentation for Node.js +# OpenTelemetry Restify Instrumentation for Node.js + [![Gitter chat][gitter-image]][gitter-url] [![dependencies][dependencies-image]][dependencies-url] [![devDependencies][devDependencies-image]][devDependencies-url] [![Apache License][license-image]][license-image] -This module provides automatic instrumentation for [`express`](https://github.com/expressjs/express). +This module provides automatic instrumentation for [`restify`](https://github.com/restify/node-restify) and allows the user to automatically collect trace data and export them to their backend of choice. For automatic instrumentation see the [@opentelemetry/node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-node) package. @@ -12,44 +13,23 @@ For automatic instrumentation see the ## Installation ```bash -npm install --save @opentelemetry/instrumentation-express +npm install --save @opentelemetry/instrumentation-restify ``` ### Supported Versions - - `^4.0.0` + - `>=4.0.0` ## Usage -OpenTelemetry Express 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 a specific instrumentation (express in this case), specify it in the Node Tracer's configuration. ```js const { NodeTracerProvider } = require('@opentelemetry/node'); -const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express'); +const RestifyInstrumentation = require('@opentelemetry/instrumentation-restify'); const provider = new NodeTracerProvider(); provider.register(); -new ExpressInstrumentation(); +new RestifyInstrumentation(); ``` -See [examples/express](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/express) for a short example. - -### Caveats - -Because of the way express works, it's hard to correctly compute the time taken by asynchronous middlewares and request handlers. For this reason, the time you'll see reported for asynchronous middlewares and request handlers will only represent the synchronous execution time, and **not** any asynchronous work. - -### Express Instrumentation Options - -Express instrumentation has few options available to choose from. You can set the following: - -| Options | Type | Description | -| ------- | ---- | ----------- | -| `ignoreLayers` | `IgnoreMatcher[]` | Express instrumentation will not trace all layers that match. | -| `ignoreLayersType`| `ExpressLayerType[]` | Express instrumentation will ignore the layers that match based on their type. | - -For reference, here are the three different layer type: - - `router` is the name of `express.Router()` - - `middleware` - - `request_handler` is the name for anything thats not a router or a middleware. +See [examples/restify](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/restify) for a short example. ## Useful links - For more information on OpenTelemetry, visit: @@ -64,7 +44,7 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [gitter-url]: https://gitter.im/open-telemetry/opentelemetry-node?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge [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://david-dm.org/open-telemetry/opentelemetry-js-contrib/status.svg?path=packages/opentelemetry-instrumentation-express -[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=packages%2Fopentelemetry-instrumentation-express -[devDependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib/dev-status.svg?path=packages/opentelemetry-instrumentation-express -[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=packages%2Fopentelemetry-instrumentation-express&type=dev +[dependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib/status.svg?path=packages/opentelemetry-instrumentation-restify +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=packages%2Fopentelemetry-instrumentation-restify +[devDependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib/dev-status.svg?path=packages/opentelemetry-instrumentation-restify +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-contrib?path=packages%2Fopentelemetry-instrumentation-restify&type=dev diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 7ad34a83ba..670346bdf8 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-restify", "version": "0.14.0", - "description": "OpenTelemetry express automatic instrumentation package.", + "description": "OpenTelemetry restify automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", @@ -20,10 +20,9 @@ }, "keywords": [ "opentelemetry", - "express", + "restify", "nodejs", "tracing", - "profiling", "instrumentation" ], "author": "OpenTelemetry Authors", @@ -45,7 +44,6 @@ "@opentelemetry/context-async-hooks": "0.18.0", "@opentelemetry/node": "0.18.0", "@opentelemetry/tracing": "0.18.0", - "@types/express": "4.17.7", "@types/lodash.once": "^4.1.6", "@types/mocha": "7.0.2", "@types/node": "14.0.27", From cbbdea00938fc81de601b04cc94cc3ebbd3a0879 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Fri, 9 Apr 2021 12:01:40 +0300 Subject: [PATCH 12/29] style: fix linting errors --- .../src/instrumentation.ts | 146 +++++++++++------- .../src/types.ts | 29 +++- .../test/restify.test.ts | 73 +++++---- 3 files changed, 155 insertions(+), 93 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 33d8bf4b93..ccc3bbefc7 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -39,10 +39,7 @@ export class RestifyInstrumentation extends InstrumentationBase< typeof restify > { constructor() { - super( - `@opentelemetry/instrumentation-${MODULE_NAME}`, - VERSION - ); + super(`@opentelemetry/instrumentation-${MODULE_NAME}`, VERSION); } private _moduleVersion: string | undefined; @@ -50,92 +47,133 @@ export class RestifyInstrumentation extends InstrumentationBase< init() { const module = new InstrumentationNodeModuleDefinition( - MODULE_NAME, - SUPPORTED_VERSIONS, - (moduleExports, moduleVersion) => { - this._moduleVersion = moduleVersion; - return moduleExports; - } - ); - - module.files.push(new InstrumentationNodeModuleFile( - 'restify/lib/server.js', + MODULE_NAME, SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); - this._isDisabled = false; - const Server: any = moduleExports; - for (const name of RESTIFY_METHODS) { - if (isWrapped(Server.prototype[name])) { - this._unwrap(Server.prototype, name); - } - this._wrap(Server.prototype, name as keyof Server, this._methodPatcher.bind(this)); - } - for (const name of RESTIFY_MW_METHODS) { - if (isWrapped(Server.prototype[name])) { - this._unwrap(Server.prototype, name); - } - this._wrap(Server.prototype, name as keyof Server, this._middlewarePatcher.bind(this)); - } + this._moduleVersion = moduleVersion; return moduleExports; - }, - (moduleExports, moduleVersion) => { - diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); - this._isDisabled = true; - if (moduleExports) { + } + ); + + module.files.push( + new InstrumentationNodeModuleFile( + 'restify/lib/server.js', + SUPPORTED_VERSIONS, + (moduleExports, moduleVersion) => { + diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + this._isDisabled = false; const Server: any = moduleExports; for (const name of RESTIFY_METHODS) { - this._unwrap(Server.prototype, name as keyof Server); + if (isWrapped(Server.prototype[name])) { + this._unwrap(Server.prototype, name); + } + this._wrap( + Server.prototype, + name as keyof Server, + this._methodPatcher.bind(this) + ); } for (const name of RESTIFY_MW_METHODS) { - this._unwrap(Server.prototype, name as keyof Server); + if (isWrapped(Server.prototype[name])) { + this._unwrap(Server.prototype, name); + } + this._wrap( + Server.prototype, + name as keyof Server, + this._middlewarePatcher.bind(this) + ); + } + return moduleExports; + }, + (moduleExports, moduleVersion) => { + diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + this._isDisabled = true; + if (moduleExports) { + const Server: any = moduleExports; + for (const name of RESTIFY_METHODS) { + this._unwrap(Server.prototype, name as keyof Server); + } + for (const name of RESTIFY_MW_METHODS) { + this._unwrap(Server.prototype, name as keyof Server); + } } } - } - )); + ) + ); return module; } - private _middlewarePatcher (original: Function, methodName?: string) { + private _middlewarePatcher(original: Function, methodName?: string) { const instrumentation = this; - return function (this: Server, ...handler: restify.RequestHandler[][] | restify.RequestHandler[]) { - return original.call(this, instrumentation._handlerPatcher({ type: types.LayerType.MIDDLEWARE, methodName }, handler)); + return function (this: Server, ...handler: types.NestedRequestHandlers) { + return original.call( + this, + instrumentation._handlerPatcher( + { type: types.LayerType.MIDDLEWARE, methodName }, + handler + ) + ); }; } - private _methodPatcher (original: Function, methodName?: string) { + private _methodPatcher(original: Function, methodName?: string) { const instrumentation = this; - return function (this: Server, path: any, ...handler: restify.RequestHandler[][] | restify.RequestHandler[]) { - return original.call(this, path, ...instrumentation._handlerPatcher({ type: types.LayerType.REQUEST_HANDLER, path, methodName }, handler)); + return function ( + this: Server, + path: any, + ...handler: types.NestedRequestHandlers + ) { + return original.call( + this, + path, + ...instrumentation._handlerPatcher( + { type: types.LayerType.REQUEST_HANDLER, path, methodName }, + handler + ) + ); }; } // will return the same type as `handler`, but all functions recusively patched - private _handlerPatcher (metadata: types.Metadata, handler: restify.RequestHandler | restify.RequestHandler[] | restify.RequestHandler[][]): any { + private _handlerPatcher( + metadata: types.Metadata, + handler: restify.RequestHandler | types.NestedRequestHandlers + ): any { if (Array.isArray(handler)) { - return (handler as restify.RequestHandler[]).map((handler: any) => this._handlerPatcher(metadata, handler)); + return handler.map(handler => this._handlerPatcher(metadata, handler)); } if (typeof handler === 'function') { - return (req: types.Request, res: restify.Response, next: restify.Next) => { + return ( + req: types.Request, + res: restify.Response, + next: restify.Next + ) => { if (this._isDisabled) { return handler(req, res, next); } // const parentSpan = api.getSpan(api?.context?.active()); - const route = (typeof req.getRoute === 'function' ? req.getRoute()?.path : req.route?.path); + const route = + typeof req.getRoute === 'function' + ? req.getRoute()?.path + : req.route?.path; const spanName = route || metadata.methodName || metadata.type; const attributes = { [types.CustomAttributeNames.VERSION]: this._moduleVersion || 'n/a', [types.CustomAttributeNames.TYPE]: metadata.type, [types.CustomAttributeNames.METHOD]: metadata.methodName, [HttpAttribute.HTTP_ROUTE]: route, - } - const span = this.tracer.startSpan(spanName, { - attributes, - }, api.context.active()); // TODO: <- with this I intend to find and attach all consecutive handlers to HTTP span + }; + const span = this.tracer.startSpan( + spanName, + { + attributes, + }, + api.context.active() + ); // TODO: <- with this I intend to find and attach all consecutive handlers to HTTP span // .. but instead all spans are attached to the previous handler's span. const endSpan = once(span.end.bind(span)); - const patchedNext = (err: any) => { + const patchedNext = (err?: any) => { endSpan(); next(err); }; @@ -157,7 +195,7 @@ export class RestifyInstrumentation extends InstrumentationBase< req, res, patchedNext - ); + ); }; } diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/types.ts b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts index 2537045ee4..dd2c20ad9c 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/types.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts @@ -1,3 +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. + */ import * as restify from 'restify'; export enum CustomAttributeNames { @@ -12,13 +27,17 @@ export enum LayerType { } declare interface RequestWithRoute extends restify.Request { - route: { path: string }, - getRoute: (() => { path: string }), + route: { path: string }; + getRoute: () => { path: string }; } export declare type Request = RequestWithRoute; export declare type Metadata = { - path?: string, - methodName?: string, - type: LayerType, + path?: string; + methodName?: string; + type: LayerType; }; + +export type NestedRequestHandlers = Array< + NestedRequestHandlers | restify.RequestHandler +>; diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index 1c7567e9af..648db35af7 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -26,7 +26,7 @@ import { import RestifyInstrumentation from '../src'; const plugin = new RestifyInstrumentation(); -import { strict as assert } from 'assert'; +import * as assert from 'assert'; import * as http from 'http'; import { AddressInfo } from 'net'; @@ -119,37 +119,37 @@ describe('Restify Instrumentation', () => { await context.with(setSpan(context.active(), rootSpan), async () => { await httpRequest.get(`http://localhost:${port}/route/foo`); rootSpan.end(); - assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 4); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 4); { // span from pre - const span = memoryExporter - .getFinishedSpans()[0]; - assert.notEqual(span, undefined); - assert.equal(span.attributes['http.route'], undefined); - assert.equal(span.attributes['restify.method'], 'pre'); - assert.equal(span.attributes['restify.type'], 'middleware'); - assert.equal(span.attributes['restify.version'], 'n/a'); + const span = memoryExporter.getFinishedSpans()[0]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], undefined); + assert.strictEqual(span.attributes['restify.method'], 'pre'); + assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); } { // span from use - const span = memoryExporter - .getFinishedSpans()[1]; - assert.notEqual(span, undefined); - assert.equal(span.attributes['http.route'], '/route/:param'); - assert.equal(span.attributes['restify.method'], 'use'); - assert.equal(span.attributes['restify.type'], 'middleware'); - assert.equal(span.attributes['restify.version'], 'n/a'); + const span = memoryExporter.getFinishedSpans()[1]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], '/route/:param'); + assert.strictEqual(span.attributes['restify.method'], 'use'); + assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); } { // span from get - const span = memoryExporter - .getFinishedSpans()[2]; - assert.notEqual(span, undefined); - assert.equal(span.attributes['http.route'], '/route/:param'); - assert.equal(span.attributes['restify.method'], 'get'); - assert.equal(span.attributes['restify.type'], 'request_handler'); - assert.equal(span.attributes['restify.version'], 'n/a'); + const span = memoryExporter.getFinishedSpans()[2]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], '/route/:param'); + assert.strictEqual(span.attributes['restify.method'], 'get'); + assert.strictEqual( + span.attributes['restify.type'], + 'request_handler' + ); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); } }); }); @@ -160,19 +160,21 @@ describe('Restify Instrumentation', () => { await context.with(setSpan(context.active(), rootSpan), async () => { const res = await httpRequest.get(`http://localhost:${port}/not-found`); rootSpan.end(); - assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 2); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 2); { // span from pre - const span = memoryExporter - .getFinishedSpans()[0]; - assert.notEqual(span, undefined); - assert.equal(span.attributes['http.route'], undefined); - assert.equal(span.attributes['restify.method'], 'pre'); - assert.equal(span.attributes['restify.type'], 'middleware'); - assert.equal(span.attributes['restify.version'], 'n/a'); + const span = memoryExporter.getFinishedSpans()[0]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], undefined); + assert.strictEqual(span.attributes['restify.method'], 'pre'); + assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); } - assert.strictEqual(res, '{"code":"ResourceNotFound","message":"/not-found does not exist"}'); + assert.strictEqual( + res, + '{"code":"ResourceNotFound","message":"/not-found does not exist"}' + ); }); }); @@ -189,9 +191,12 @@ describe('Restify Instrumentation', () => { const rootSpan = tracer.startSpan('rootSpan'); await context.with(setSpan(context.active(), rootSpan), async () => { - assert.strictEqual(await httpRequest.get(`http://localhost:${port}/route/foo`), '{"route":"foo"}'); + assert.strictEqual( + await httpRequest.get(`http://localhost:${port}/route/foo`), + '{"route":"foo"}' + ); rootSpan.end(); - assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 1); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 1); assert.notStrictEqual(memoryExporter.getFinishedSpans()[0], undefined); }); }); From c76052734a6503dc030e21fdb8ee5d2c7c4d9fe3 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Mon, 12 Apr 2021 12:50:39 +0300 Subject: [PATCH 13/29] style: make _moduleVersion optional --- .../src/instrumentation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index ccc3bbefc7..a42ca097ca 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -42,7 +42,7 @@ export class RestifyInstrumentation extends InstrumentationBase< super(`@opentelemetry/instrumentation-${MODULE_NAME}`, VERSION); } - private _moduleVersion: string | undefined; + private _moduleVersion?: string; private _isDisabled = false; init() { From 4ca8036324726506ef8fe8056360b709935317f1 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 13 Apr 2021 10:04:32 +0300 Subject: [PATCH 14/29] feat: use more descriptive span name --- examples/restify/server.js | 20 +++-- .../src/instrumentation.ts | 7 +- .../src/types.ts | 1 + .../test/restify.test.ts | 77 +++++++++++++++---- 4 files changed, 85 insertions(+), 20 deletions(-) diff --git a/examples/restify/server.js b/examples/restify/server.js index 212d65b807..950c8dd7ad 100644 --- a/examples/restify/server.js +++ b/examples/restify/server.js @@ -15,15 +15,23 @@ server.pre((req, res, next) => { next(); }); -server.use([(req, res, next) => { - // noop to showcase use with an array - next(); -}, (req, res, next) => { +// `setDefaultName` shows up in spans as the name +const setDefaultName = (req, res, next) => { req.defaultName = 'Stranger'; next(); -}]); +}; + +server.use([(req, res, next) => { + /* + noop to showcase use with an array. + as this is an anonymous fn, the name is not known and cannot be displayed in traces. + */ + next(); +}, setDefaultName]); -server.get('/hello/:name', (req, res, next) => { +// named function to be used in traces +// eslint-disable-next-line prefer-arrow-callback +server.get('/hello/:name', function hello(req, res, next) { console.log('Handling hello'); res.send(`Hello, ${req.params.name || req.defaultName}\n`); return next(); diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index a42ca097ca..44f31ab3cb 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -157,8 +157,13 @@ export class RestifyInstrumentation extends InstrumentationBase< typeof req.getRoute === 'function' ? req.getRoute()?.path : req.route?.path; - const spanName = route || metadata.methodName || metadata.type; + const fnName = handler.name || undefined; + const spanName = (metadata.type === types.LayerType.REQUEST_HANDLER ? + `request handler - ${route}` : + `middleware - ${fnName || 'anonymous'}` + ); const attributes = { + [types.CustomAttributeNames.NAME]: fnName, [types.CustomAttributeNames.VERSION]: this._moduleVersion || 'n/a', [types.CustomAttributeNames.TYPE]: metadata.type, [types.CustomAttributeNames.METHOD]: metadata.methodName, diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/types.ts b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts index dd2c20ad9c..200df3de4d 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/types.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts @@ -17,6 +17,7 @@ import * as restify from 'restify'; export enum CustomAttributeNames { TYPE = 'restify.type', + NAME = 'restify.name', METHOD = 'restify.method', VERSION = 'restify.version', } diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index 648db35af7..0869f841cd 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -49,29 +49,32 @@ const httpRequest = { }, }; +const useHandler: restify.RequestHandler = (req, res, next) => { + // only run if route was found + next(); +}; +const getHandler: restify.RequestHandler = (req, res, next) => { + res.send({ route: req?.params?.param }); +}; +const throwError: restify.RequestHandler = (req, res, next) => { + throw new Error('NOK'); +}; + const createServer = async (setupRoutes?: Function) => { const server = restify.createServer(); if (typeof setupRoutes === 'function') { setupRoutes(server); } else { + // to force an anonymous fn for testing server.pre((req, res, next) => { - // this will be run before routing - next(); - }); - - server.use((req, res, next) => { - // this will be run only if route was found + // run before routing next(); }); - server.get('/route/:param', (req, res, next) => { - res.send({ route: req?.params?.param }); - }); - - server.get('/failing', (req, res, next) => { - throw new Error('NOK'); - }); + server.use(useHandler); + server.get('/route/:param', getHandler); + server.get('/failing', throwError); } await new Promise(resolve => server.listen(0, resolve)); @@ -128,6 +131,7 @@ describe('Restify Instrumentation', () => { assert.strictEqual(span.attributes['http.route'], undefined); assert.strictEqual(span.attributes['restify.method'], 'pre'); assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.name'], undefined); assert.strictEqual(span.attributes['restify.version'], 'n/a'); } { @@ -137,6 +141,7 @@ describe('Restify Instrumentation', () => { assert.strictEqual(span.attributes['http.route'], '/route/:param'); assert.strictEqual(span.attributes['restify.method'], 'use'); assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.name'], 'useHandler'); assert.strictEqual(span.attributes['restify.version'], 'n/a'); } { @@ -149,6 +154,7 @@ describe('Restify Instrumentation', () => { span.attributes['restify.type'], 'request_handler' ); + assert.strictEqual(span.attributes['restify.name'], 'getHandler'); assert.strictEqual(span.attributes['restify.version'], 'n/a'); } }); @@ -169,6 +175,7 @@ describe('Restify Instrumentation', () => { assert.strictEqual(span.attributes['http.route'], undefined); assert.strictEqual(span.attributes['restify.method'], 'pre'); assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.name'], undefined); assert.strictEqual(span.attributes['restify.version'], 'n/a'); } assert.strictEqual( @@ -178,6 +185,50 @@ describe('Restify Instrumentation', () => { }); }); + it('should create a span for an endpoint that threw', async () => { + const rootSpan = tracer.startSpan('clientSpan'); + + await context.with(setSpan(context.active(), rootSpan), async () => { + await httpRequest.get(`http://localhost:${port}/failing`); + rootSpan.end(); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 4); + + { + // span from pre + const span = memoryExporter.getFinishedSpans()[0]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], undefined); + assert.strictEqual(span.attributes['restify.method'], 'pre'); + assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.name'], undefined); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); + } + { + // span from use + const span = memoryExporter.getFinishedSpans()[1]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], '/failing'); + assert.strictEqual(span.attributes['restify.method'], 'use'); + assert.strictEqual(span.attributes['restify.type'], 'middleware'); + assert.strictEqual(span.attributes['restify.name'], 'useHandler'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); + } + { + // span from get + const span = memoryExporter.getFinishedSpans()[2]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], '/failing'); + assert.strictEqual(span.attributes['restify.method'], 'get'); + assert.strictEqual( + span.attributes['restify.type'], + 'request_handler' + ); + assert.strictEqual(span.attributes['restify.name'], 'throwError'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); + } + }); + }); + it('should create spans even if there is no parent', async () => { const res = await httpRequest.get(`http://localhost:${port}/route/bar`); assert.strictEqual(memoryExporter.getFinishedSpans().length, 3); From e9ab22efc1f25c851accdaea062e42b3ed3cc738 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 13 Apr 2021 11:33:40 +0300 Subject: [PATCH 15/29] feat: rename HTTP span --- .../src/constants.ts | 29 ++++++++++ .../src/instrumentation.ts | 56 ++++++++++++------- .../src/types.ts | 11 ++++ .../test/restify.test.ts | 26 +++++++++ 4 files changed, 102 insertions(+), 20 deletions(-) create mode 100644 plugins/node/opentelemetry-instrumentation-restify/src/constants.ts diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/constants.ts b/plugins/node/opentelemetry-instrumentation-restify/src/constants.ts new file mode 100644 index 0000000000..1ae10fa6ae --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/src/constants.ts @@ -0,0 +1,29 @@ +/* + * 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 RESTIFY_MW_METHODS = ['use', 'pre']; +export const RESTIFY_METHODS = [ + 'del', + 'get', + 'head', + 'opts', + 'post', + 'put', + 'patch', +]; + +export const MODULE_NAME = 'restify'; +export const SUPPORTED_VERSIONS = ['>=4.0.0']; +export const REQ_SPAN = Symbol('REQ_SPAN'); diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 44f31ab3cb..50d2d9661c 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -20,6 +20,7 @@ import { Server } from 'restify'; import * as types from './types'; import { VERSION } from './version'; import once = require('lodash.once'); +import * as c from './constants'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, @@ -29,17 +30,12 @@ import { import { HttpAttribute } from '@opentelemetry/semantic-conventions'; const { diag } = api; -const RESTIFY_MW_METHODS = ['use', 'pre']; -const RESTIFY_METHODS = ['del', 'get', 'head', 'opts', 'post', 'put', 'patch']; - -const MODULE_NAME = 'restify'; -const SUPPORTED_VERSIONS = ['>=4.0.0']; export class RestifyInstrumentation extends InstrumentationBase< typeof restify > { constructor() { - super(`@opentelemetry/instrumentation-${MODULE_NAME}`, VERSION); + super(`@opentelemetry/instrumentation-${c.MODULE_NAME}`, VERSION); } private _moduleVersion?: string; @@ -47,8 +43,8 @@ export class RestifyInstrumentation extends InstrumentationBase< init() { const module = new InstrumentationNodeModuleDefinition( - MODULE_NAME, - SUPPORTED_VERSIONS, + c.MODULE_NAME, + c.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { this._moduleVersion = moduleVersion; return moduleExports; @@ -58,12 +54,12 @@ export class RestifyInstrumentation extends InstrumentationBase< module.files.push( new InstrumentationNodeModuleFile( 'restify/lib/server.js', - SUPPORTED_VERSIONS, + c.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + diag.debug(`Applying patch for ${c.MODULE_NAME}@${moduleVersion}`); this._isDisabled = false; const Server: any = moduleExports; - for (const name of RESTIFY_METHODS) { + for (const name of c.RESTIFY_METHODS) { if (isWrapped(Server.prototype[name])) { this._unwrap(Server.prototype, name); } @@ -73,7 +69,7 @@ export class RestifyInstrumentation extends InstrumentationBase< this._methodPatcher.bind(this) ); } - for (const name of RESTIFY_MW_METHODS) { + for (const name of c.RESTIFY_MW_METHODS) { if (isWrapped(Server.prototype[name])) { this._unwrap(Server.prototype, name); } @@ -86,14 +82,14 @@ export class RestifyInstrumentation extends InstrumentationBase< return moduleExports; }, (moduleExports, moduleVersion) => { - diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + diag.debug(`Removing patch for ${c.MODULE_NAME}@${moduleVersion}`); this._isDisabled = true; if (moduleExports) { const Server: any = moduleExports; - for (const name of RESTIFY_METHODS) { + for (const name of c.RESTIFY_METHODS) { this._unwrap(Server.prototype, name as keyof Server); } - for (const name of RESTIFY_MW_METHODS) { + for (const name of c.RESTIFY_MW_METHODS) { this._unwrap(Server.prototype, name as keyof Server); } } @@ -152,16 +148,36 @@ export class RestifyInstrumentation extends InstrumentationBase< if (this._isDisabled) { return handler(req, res, next); } - // const parentSpan = api.getSpan(api?.context?.active()); const route = typeof req.getRoute === 'function' ? req.getRoute()?.path : req.route?.path; + + // replace HTTP instrumentations name with one that contains a route + // in first handlers, we might not now the route yet, in which case the HTTP + // span has to be stored and fixed in later handler. + // https://github.com/open-telemetry/opentelemetry-specification/blob/a44d863edcdef63b0adce7b47df001933b7a158a/specification/trace/semantic_conventions/http.md#name + if (req[c.REQ_SPAN] === undefined) { + req[c.REQ_SPAN] = api.getSpan( + api.context.active() + ) as types.InstrumentationSpan; + } + if ( + route && + req[c.REQ_SPAN] && + req[c.REQ_SPAN]?.name?.startsWith('HTTP ') + ) { + (req[c.REQ_SPAN] as types.InstrumentationSpan).updateName( + `${req.method} ${route}` + ); + req[c.REQ_SPAN] = false; + } + const fnName = handler.name || undefined; - const spanName = (metadata.type === types.LayerType.REQUEST_HANDLER ? - `request handler - ${route}` : - `middleware - ${fnName || 'anonymous'}` - ); + const spanName = + metadata.type === types.LayerType.REQUEST_HANDLER + ? `request handler - ${route}` + : `middleware - ${fnName || 'anonymous'}`; const attributes = { [types.CustomAttributeNames.NAME]: fnName, [types.CustomAttributeNames.VERSION]: this._moduleVersion || 'n/a', diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/types.ts b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts index 200df3de4d..3af3984cd1 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/types.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/types.ts @@ -13,7 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Span } from '@opentelemetry/api'; import * as restify from 'restify'; +import { REQ_SPAN } from './constants'; export enum CustomAttributeNames { TYPE = 'restify.type', @@ -28,6 +30,8 @@ export enum LayerType { } declare interface RequestWithRoute extends restify.Request { + // undefined /* uninitialized */ | false /* renamed */ | InstrumentationSpan /* not yet renamed */ + [REQ_SPAN]?: any; route: { path: string }; getRoute: () => { path: string }; } @@ -42,3 +46,10 @@ export declare type Metadata = { export type NestedRequestHandlers = Array< NestedRequestHandlers | restify.RequestHandler >; + +/** + * extends opentelemetry/api Span object to instrument the root span name of http instrumentation + */ +export interface InstrumentationSpan extends Span { + name?: string; +} diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index 0869f841cd..6b2e8ca01f 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -24,6 +24,7 @@ import { } from '@opentelemetry/tracing'; import RestifyInstrumentation from '../src'; +import * as types from '../src/types'; const plugin = new RestifyInstrumentation(); import * as assert from 'assert'; @@ -229,6 +230,31 @@ describe('Restify Instrumentation', () => { }); }); + it('should rename HTTP span', async () => { + const httpSpan: types.InstrumentationSpan = tracer.startSpan('HTTP GET'); + + const testLocalServer = await createServer((server: restify.Server) => { + server.pre((req, res, next) => { + // to simulate HTTP instrumentation + context.with(setSpan(context.active(), httpSpan), next); + }); + server.get('/route/:param', getHandler); + }); + const testLocalPort = testLocalServer.address().port; + + try { + const res = await httpRequest.get( + `http://localhost:${testLocalPort}/route/hello` + ); + httpSpan.end(); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 3); + assert.strictEqual(httpSpan.name, 'GET /route/:param'); + assert.strictEqual(res, '{"route":"hello"}'); + } finally { + testLocalServer.close(); + } + }); + it('should create spans even if there is no parent', async () => { const res = await httpRequest.get(`http://localhost:${port}/route/bar`); assert.strictEqual(memoryExporter.getFinishedSpans().length, 3); From 0dc22aa330e35f050a24138db56fde80692d433a Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 13 Apr 2021 11:47:33 +0300 Subject: [PATCH 16/29] feat: remove creating additional span on the client side --- examples/restify/client.js | 30 +++++++++++++----------------- examples/restify/tracer.js | 3 +-- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/examples/restify/client.js b/examples/restify/client.js index aecba9643a..52dffcf4bf 100644 --- a/examples/restify/client.js +++ b/examples/restify/client.js @@ -1,7 +1,7 @@ 'use strict'; -const api = require('@opentelemetry/api'); -const tracer = require('./tracer')('example-http-client'); +// required to initialize the service name for the auto-instrumentation +require('./tracer')('example-restify-client'); // eslint-disable-next-line import/order const http = require('http'); @@ -10,21 +10,17 @@ function makeRequest(path) { // span corresponds to outgoing requests. Here, we have manually created // the span, which is created to track work that happens outside of the // request lifecycle entirely. - const span = tracer.startSpan(`makeRequest to ${path}`); - api.context.with(api.setSpan(api.context.active(), span), () => { - http.get({ - host: 'localhost', - headers: { - accept: 'text/plain', - }, - port: 8080, - path, - }, (response) => { - response.on('data', (chunk) => console.log(path, '::', chunk.toString('utf8'))); - response.on('end', () => { - console.log(path, 'status', response.statusCode); - span.end(); - }); + http.get({ + host: 'localhost', + headers: { + accept: 'text/plain', + }, + port: 8080, + path, + }, (response) => { + response.on('data', (chunk) => console.log(path, '::', chunk.toString('utf8'))); + response.on('end', () => { + console.log(path, 'status', response.statusCode); }); }); diff --git a/examples/restify/tracer.js b/examples/restify/tracer.js index 9885540c10..feb7e2d5e9 100644 --- a/examples/restify/tracer.js +++ b/examples/restify/tracer.js @@ -11,7 +11,7 @@ const { SimpleSpanProcessor, ConsoleSpanExporter } = require('@opentelemetry/tra const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); -const { RestifyInstrumentation: Instrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify/build/src'); +const { RestifyInstrumentation: Instrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify'); const { HttpInstrumentation } = require('../../../opentelemetry-js/packages/opentelemetry-instrumentation-http'); const Exporter = ((exporterParam) => { @@ -31,7 +31,6 @@ module.exports = (serviceName) => { const provider = new NodeTracerProvider(); registerInstrumentations({ tracerProvider: provider, - // when boostraping with lerna for testing purposes instrumentations: [ HttpInstrumentation, Instrumentation, From 6c380a26c9217ed9369bc200a05d73261abfd514 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 13 Apr 2021 11:50:29 +0300 Subject: [PATCH 17/29] docs: remove TODO --- .../src/instrumentation.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 50d2d9661c..0f74076e6e 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -191,8 +191,7 @@ export class RestifyInstrumentation extends InstrumentationBase< attributes, }, api.context.active() - ); // TODO: <- with this I intend to find and attach all consecutive handlers to HTTP span - // .. but instead all spans are attached to the previous handler's span. + ); const endSpan = once(span.end.bind(span)); const patchedNext = (err?: any) => { endSpan(); From 3b8072b77fccc4f43bd0a5e9c91184adf35b6519 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 13 Apr 2021 11:54:53 +0300 Subject: [PATCH 18/29] feat: update version --- .../node/opentelemetry-instrumentation-restify/src/constants.ts | 1 - .../node/opentelemetry-instrumentation-restify/src/version.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/constants.ts b/plugins/node/opentelemetry-instrumentation-restify/src/constants.ts index 1ae10fa6ae..2ca6d52182 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/constants.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/constants.ts @@ -23,7 +23,6 @@ export const RESTIFY_METHODS = [ 'put', 'patch', ]; - export const MODULE_NAME = 'restify'; export const SUPPORTED_VERSIONS = ['>=4.0.0']; export const REQ_SPAN = Symbol('REQ_SPAN'); diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/version.ts b/plugins/node/opentelemetry-instrumentation-restify/src/version.ts index bc552fd543..1e4172026f 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/version.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/version.ts @@ -15,4 +15,4 @@ */ // this is autogenerated file, see scripts/version-update.js -export const VERSION = '0.14.0'; +export const VERSION = '0.15.0'; From fa55dabc9a8957d9485dff950adcca07821566e1 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Tue, 13 Apr 2021 11:58:49 +0300 Subject: [PATCH 19/29] test: test more verbose API --- .../test/restify.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index 6b2e8ca01f..6f923466f1 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -255,6 +255,41 @@ describe('Restify Instrumentation', () => { } }); + it('should work with verbose API', async () => { + const testLocalServer = await createServer((server: restify.Server) => { + server.get( + { + path: '/route/:param', + }, + getHandler + ); + }); + const testLocalPort = testLocalServer.address().port; + + try { + const res = await httpRequest.get( + `http://localhost:${testLocalPort}/route/hello` + ); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 1); + { + // span from get + const span = memoryExporter.getFinishedSpans()[0]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], '/route/:param'); + assert.strictEqual(span.attributes['restify.method'], 'get'); + assert.strictEqual( + span.attributes['restify.type'], + 'request_handler' + ); + assert.strictEqual(span.attributes['restify.name'], 'getHandler'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); + } + assert.strictEqual(res, '{"route":"hello"}'); + } finally { + testLocalServer.close(); + } + }); + it('should create spans even if there is no parent', async () => { const res = await httpRequest.get(`http://localhost:${port}/route/bar`); assert.strictEqual(memoryExporter.getFinishedSpans().length, 3); From ac8d41b4b7a52c20440732f0d49d593126b4f213 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Wed, 14 Apr 2021 11:26:40 +0300 Subject: [PATCH 20/29] fix: update version --- plugins/node/opentelemetry-instrumentation-restify/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 670346bdf8..9c66136521 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-restify", - "version": "0.14.0", + "version": "0.15.0", "description": "OpenTelemetry restify automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", From 520d54e4e9c88970c04c1adaf2528acb7f57a159 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Wed, 14 Apr 2021 11:31:31 +0300 Subject: [PATCH 21/29] fix: update the example in README --- .../opentelemetry-instrumentation-restify/README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/README.md b/plugins/node/opentelemetry-instrumentation-restify/README.md index 209e7b3d17..c4a438a9bc 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/README.md +++ b/plugins/node/opentelemetry-instrumentation-restify/README.md @@ -21,12 +21,20 @@ npm install --save @opentelemetry/instrumentation-restify ## Usage ```js +const { RestifyInstrumentation } = require('@opentelemetry/instrumentation-restify'); +const { ConsoleSpanExporter, SimpleSpanProcessor } = require('@opentelemetry/tracing'); const { NodeTracerProvider } = require('@opentelemetry/node'); -const RestifyInstrumentation = require('@opentelemetry/instrumentation-restify'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const provider = new NodeTracerProvider(); + +provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); provider.register(); -new RestifyInstrumentation(); + +registerInstrumentations({ + instrumentations: [new RestifyInstrumentation()], + tracerProvider: provider, +}); ``` See [examples/restify](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/restify) for a short example. From b5be54cf5dee1666a5d88ccdc0a0ecb80c7767b2 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Wed, 14 Apr 2021 11:39:02 +0300 Subject: [PATCH 22/29] fix: reference @opentelemetry/instrumentation-http correctly --- examples/restify/tracer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/restify/tracer.js b/examples/restify/tracer.js index feb7e2d5e9..f66a3c9fae 100644 --- a/examples/restify/tracer.js +++ b/examples/restify/tracer.js @@ -11,8 +11,8 @@ const { SimpleSpanProcessor, ConsoleSpanExporter } = require('@opentelemetry/tra const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); +const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); const { RestifyInstrumentation: Instrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify'); -const { HttpInstrumentation } = require('../../../opentelemetry-js/packages/opentelemetry-instrumentation-http'); const Exporter = ((exporterParam) => { if (typeof exporterParam === 'string') { From 14772ba2c4693bbdd419e501e87ec751e8f313f4 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 15 Apr 2021 08:34:50 +0300 Subject: [PATCH 23/29] feat: remove lodash.once --- .../node/opentelemetry-instrumentation-restify/package.json | 3 +-- .../src/instrumentation.ts | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 9c66136521..4f6e163300 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -64,7 +64,6 @@ "@opentelemetry/api": "^0.18.0", "@opentelemetry/core": "^0.18.0", "@opentelemetry/instrumentation": "^0.18.0", - "@opentelemetry/semantic-conventions": "^0.18.0", - "lodash.once": "^4.1.1" + "@opentelemetry/semantic-conventions": "^0.18.0" } } diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 0f74076e6e..698b28469d 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -19,7 +19,6 @@ import * as restify from 'restify'; import { Server } from 'restify'; import * as types from './types'; import { VERSION } from './version'; -import once = require('lodash.once'); import * as c from './constants'; import { InstrumentationBase, @@ -192,9 +191,8 @@ export class RestifyInstrumentation extends InstrumentationBase< }, api.context.active() ); - const endSpan = once(span.end.bind(span)); const patchedNext = (err?: any) => { - endSpan(); + span.end(); next(err); }; patchedNext.ifError = next.ifError; @@ -208,7 +206,7 @@ export class RestifyInstrumentation extends InstrumentationBase< span.recordException(err); throw err; } finally { - endSpan(); + span.end(); } }, this, From c8914d13395469c21ba065c7758e4c3e5ea40dde Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 15 Apr 2021 08:36:48 +0300 Subject: [PATCH 24/29] style: rename constants to be more verbose --- .../src/instrumentation.ts | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 698b28469d..5f2830a78e 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -19,7 +19,7 @@ import * as restify from 'restify'; import { Server } from 'restify'; import * as types from './types'; import { VERSION } from './version'; -import * as c from './constants'; +import * as constants from './constants'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, @@ -34,7 +34,7 @@ export class RestifyInstrumentation extends InstrumentationBase< typeof restify > { constructor() { - super(`@opentelemetry/instrumentation-${c.MODULE_NAME}`, VERSION); + super(`@opentelemetry/instrumentation-${constants.MODULE_NAME}`, VERSION); } private _moduleVersion?: string; @@ -42,8 +42,8 @@ export class RestifyInstrumentation extends InstrumentationBase< init() { const module = new InstrumentationNodeModuleDefinition( - c.MODULE_NAME, - c.SUPPORTED_VERSIONS, + constants.MODULE_NAME, + constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { this._moduleVersion = moduleVersion; return moduleExports; @@ -53,12 +53,12 @@ export class RestifyInstrumentation extends InstrumentationBase< module.files.push( new InstrumentationNodeModuleFile( 'restify/lib/server.js', - c.SUPPORTED_VERSIONS, + constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for ${c.MODULE_NAME}@${moduleVersion}`); + diag.debug(`Applying patch for ${constants.MODULE_NAME}@${moduleVersion}`); this._isDisabled = false; const Server: any = moduleExports; - for (const name of c.RESTIFY_METHODS) { + for (const name of constants.RESTIFY_METHODS) { if (isWrapped(Server.prototype[name])) { this._unwrap(Server.prototype, name); } @@ -68,7 +68,7 @@ export class RestifyInstrumentation extends InstrumentationBase< this._methodPatcher.bind(this) ); } - for (const name of c.RESTIFY_MW_METHODS) { + for (const name of constants.RESTIFY_MW_METHODS) { if (isWrapped(Server.prototype[name])) { this._unwrap(Server.prototype, name); } @@ -81,14 +81,14 @@ export class RestifyInstrumentation extends InstrumentationBase< return moduleExports; }, (moduleExports, moduleVersion) => { - diag.debug(`Removing patch for ${c.MODULE_NAME}@${moduleVersion}`); + diag.debug(`Removing patch for ${constants.MODULE_NAME}@${moduleVersion}`); this._isDisabled = true; if (moduleExports) { const Server: any = moduleExports; - for (const name of c.RESTIFY_METHODS) { + for (const name of constants.RESTIFY_METHODS) { this._unwrap(Server.prototype, name as keyof Server); } - for (const name of c.RESTIFY_MW_METHODS) { + for (const name of constants.RESTIFY_MW_METHODS) { this._unwrap(Server.prototype, name as keyof Server); } } @@ -156,20 +156,20 @@ export class RestifyInstrumentation extends InstrumentationBase< // in first handlers, we might not now the route yet, in which case the HTTP // span has to be stored and fixed in later handler. // https://github.com/open-telemetry/opentelemetry-specification/blob/a44d863edcdef63b0adce7b47df001933b7a158a/specification/trace/semantic_conventions/http.md#name - if (req[c.REQ_SPAN] === undefined) { - req[c.REQ_SPAN] = api.getSpan( + if (req[constants.REQ_SPAN] === undefined) { + req[constants.REQ_SPAN] = api.getSpan( api.context.active() ) as types.InstrumentationSpan; } if ( route && - req[c.REQ_SPAN] && - req[c.REQ_SPAN]?.name?.startsWith('HTTP ') + req[constants.REQ_SPAN] && + req[constants.REQ_SPAN]?.name?.startsWith('HTTP ') ) { - (req[c.REQ_SPAN] as types.InstrumentationSpan).updateName( + (req[constants.REQ_SPAN] as types.InstrumentationSpan).updateName( `${req.method} ${route}` ); - req[c.REQ_SPAN] = false; + req[constants.REQ_SPAN] = false; } const fnName = handler.name || undefined; From 88f60527c5fb0168468a9f91a231d69b77d20fb2 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 15 Apr 2021 09:42:31 +0300 Subject: [PATCH 25/29] feat: handle cases with promises --- .../src/instrumentation.ts | 25 ++- .../test/restify.test.ts | 143 ++++++++++++++++++ 2 files changed, 165 insertions(+), 3 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 5f2830a78e..957771886e 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -27,6 +27,7 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { HttpAttribute } from '@opentelemetry/semantic-conventions'; +import { types as checkType } from 'util'; const { diag } = api; @@ -197,16 +198,34 @@ export class RestifyInstrumentation extends InstrumentationBase< }; patchedNext.ifError = next.ifError; + const wrapPromise = (promise: Promise) => { + return promise + .catch((err) => { + span.recordException(err); + throw err; + }) + .finally(() => { + span.end(); + }); + } + return api.context.with( api.setSpan(api.context.active(), span), (req: types.Request, res: restify.Response, next: restify.Next) => { + if (checkType.isAsyncFunction(handler)) { + return wrapPromise(handler(req, res, next)); + } try { - return handler(req, res, next); + const result = handler(req, res, next); + if (checkType.isPromise(result)) { + return wrapPromise(result); + } + span.end(); + return result; } catch (err) { span.recordException(err); - throw err; - } finally { span.end(); + throw err; } }, this, diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index 6f923466f1..afe6834d5a 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -49,6 +49,16 @@ const httpRequest = { }); }, }; +const noop = (value: unknown) => {}; +const defer = (): { promise: Promise, resolve: Function, reject: Function } => { + let resolve = noop; + let reject = noop; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { promise, resolve, reject }; +}; const useHandler: restify.RequestHandler = (req, res, next) => { // only run if route was found @@ -290,6 +300,139 @@ describe('Restify Instrumentation', () => { } }); + it('should work with async handlers', async () => { + const { + promise: work, + resolve: resolveWork, + } = defer(); + const { + promise: started, + resolve: resolveStarted, + } = defer(); + // status to assert the correctness of the test + let status = 'uninit'; + const asyncHandler: restify.RequestHandler = async (req, res, next) => { + status = 'started'; + resolveStarted(); + await work; + status = 'done'; + return getHandler(req, res, next); + }; + const testLocalServer = await createServer((server: restify.Server) => { + server.get( + '/route/:param', + asyncHandler + ); + }); + const testLocalPort = testLocalServer.address().port; + + try { + const requestPromise = httpRequest.get( + `http://localhost:${testLocalPort}/route/hello` + ).then((res) => { + // assert request results + assert.strictEqual(res, '{"route":"hello"}'); + }); + + // assert pre request state + assert.strictEqual(status, 'uninit'); + await started; + + // assert started state + assert.strictEqual(status, 'started'); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); + + resolveWork(); + await requestPromise; + + // assert done state + assert.strictEqual(status, 'done'); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 1); + { + // span from get + const span = memoryExporter.getFinishedSpans()[0]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], '/route/:param'); + assert.strictEqual(span.attributes['restify.method'], 'get'); + assert.strictEqual( + span.attributes['restify.type'], + 'request_handler' + ); + assert.strictEqual(span.attributes['restify.name'], 'asyncHandler'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); + } + } finally { + testLocalServer.close(); + } + }); + + it('should work with promise-returning handlers', async () => { + const { + promise: work, + resolve: resolveWork, + } = defer(); + const { + promise: started, + resolve: resolveStarted, + } = defer(); + // status to assert the correctness of the test + let status = 'uninit'; + const promiseReturningHandler: restify.RequestHandler = (req, res, next) => { + status = 'started'; + resolveStarted(); + return work.then(() => { + status = 'done'; + return getHandler(req, res, next) + }); + }; + const testLocalServer = await createServer((server: restify.Server) => { + server.get( + '/route/:param', + promiseReturningHandler + ); + }); + const testLocalPort = testLocalServer.address().port; + + try { + const requestPromise = httpRequest.get( + `http://localhost:${testLocalPort}/route/hello` + ).then((res) => { + // assert request results + assert.strictEqual(res, '{"route":"hello"}'); + }); + + // assert pre request state + assert.strictEqual(status, 'uninit'); + await started; + + // assert started state + assert.strictEqual(status, 'started'); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); + + resolveWork(); + await requestPromise; + + // assert done state + assert.strictEqual(status, 'done'); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 1); + { + // span from get + const span = memoryExporter.getFinishedSpans()[0]; + assert.notStrictEqual(span, undefined); + assert.strictEqual(span.attributes['http.route'], '/route/:param'); + assert.strictEqual(span.attributes['restify.method'], 'get'); + assert.strictEqual( + span.attributes['restify.type'], + 'request_handler' + ); + assert.strictEqual(span.attributes['restify.name'], 'promiseReturningHandler'); + assert.strictEqual(span.attributes['restify.version'], 'n/a'); + } + } finally { + testLocalServer.close(); + } + }); + it('should create spans even if there is no parent', async () => { const res = await httpRequest.get(`http://localhost:${port}/route/bar`); assert.strictEqual(memoryExporter.getFinishedSpans().length, 3); From df87efd7d28fd650708c190e056af0587f1c3096 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 15 Apr 2021 10:11:25 +0300 Subject: [PATCH 26/29] feat: support async and promise-returning handlers --- .../src/instrumentation.ts | 26 ++++--- .../src/utils.ts | 38 ++++++++++ .../test/restify.test.ts | 73 +++++++++---------- 3 files changed, 87 insertions(+), 50 deletions(-) create mode 100644 plugins/node/opentelemetry-instrumentation-restify/src/utils.ts diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 957771886e..0eb2ff97ae 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -27,7 +27,7 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { HttpAttribute } from '@opentelemetry/semantic-conventions'; -import { types as checkType } from 'util'; +import { isPromise, isAsyncFunction } from './utils'; const { diag } = api; @@ -56,7 +56,9 @@ export class RestifyInstrumentation extends InstrumentationBase< 'restify/lib/server.js', constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for ${constants.MODULE_NAME}@${moduleVersion}`); + diag.debug( + `Applying patch for ${constants.MODULE_NAME}@${moduleVersion}` + ); this._isDisabled = false; const Server: any = moduleExports; for (const name of constants.RESTIFY_METHODS) { @@ -82,7 +84,9 @@ export class RestifyInstrumentation extends InstrumentationBase< return moduleExports; }, (moduleExports, moduleVersion) => { - diag.debug(`Removing patch for ${constants.MODULE_NAME}@${moduleVersion}`); + diag.debug( + `Removing patch for ${constants.MODULE_NAME}@${moduleVersion}` + ); this._isDisabled = true; if (moduleExports) { const Server: any = moduleExports; @@ -200,24 +204,26 @@ export class RestifyInstrumentation extends InstrumentationBase< const wrapPromise = (promise: Promise) => { return promise - .catch((err) => { - span.recordException(err); - throw err; + .then(value => { + span.end(); + return value; }) - .finally(() => { + .catch(err => { + span.recordException(err); span.end(); + throw err; }); - } + }; return api.context.with( api.setSpan(api.context.active(), span), (req: types.Request, res: restify.Response, next: restify.Next) => { - if (checkType.isAsyncFunction(handler)) { + if (isAsyncFunction(handler)) { return wrapPromise(handler(req, res, next)); } try { const result = handler(req, res, next); - if (checkType.isPromise(result)) { + if (isPromise(result)) { return wrapPromise(result); } span.end(); diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/utils.ts b/plugins/node/opentelemetry-instrumentation-restify/src/utils.ts new file mode 100644 index 0000000000..d749799e1d --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-restify/src/utils.ts @@ -0,0 +1,38 @@ +/* + * 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. + */ + +// util.types.isPromise is supported from 10.0.0 +export const isPromise = (value: any): value is Promise => { + if ( + typeof value.then === 'function' && + typeof value.catch === 'function' && + value.toString() === '[object Promise]' + ) { + return true; + } + return false; +}; + +// util.types.isAsyncFunction is supported from 10.0.0 +export const isAsyncFunction = (value: unknown) => { + if ( + typeof value === 'function' && + value.constructor?.name === 'AsyncFunction' + ) { + return true; + } + return false; +}; diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index afe6834d5a..86fc9964c8 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -50,7 +50,11 @@ const httpRequest = { }, }; const noop = (value: unknown) => {}; -const defer = (): { promise: Promise, resolve: Function, reject: Function } => { +const defer = (): { + promise: Promise; + resolve: Function; + reject: Function; +} => { let resolve = noop; let reject = noop; const promise = new Promise((res, rej) => { @@ -301,14 +305,8 @@ describe('Restify Instrumentation', () => { }); it('should work with async handlers', async () => { - const { - promise: work, - resolve: resolveWork, - } = defer(); - const { - promise: started, - resolve: resolveStarted, - } = defer(); + const { promise: work, resolve: resolveWork } = defer(); + const { promise: started, resolve: resolveStarted } = defer(); // status to assert the correctness of the test let status = 'uninit'; const asyncHandler: restify.RequestHandler = async (req, res, next) => { @@ -319,20 +317,17 @@ describe('Restify Instrumentation', () => { return getHandler(req, res, next); }; const testLocalServer = await createServer((server: restify.Server) => { - server.get( - '/route/:param', - asyncHandler - ); + server.get('/route/:param', asyncHandler); }); const testLocalPort = testLocalServer.address().port; try { - const requestPromise = httpRequest.get( - `http://localhost:${testLocalPort}/route/hello` - ).then((res) => { - // assert request results - assert.strictEqual(res, '{"route":"hello"}'); - }); + const requestPromise = httpRequest + .get(`http://localhost:${testLocalPort}/route/hello`) + .then(res => { + // assert request results + assert.strictEqual(res, '{"route":"hello"}'); + }); // assert pre request state assert.strictEqual(status, 'uninit'); @@ -367,39 +362,34 @@ describe('Restify Instrumentation', () => { }); it('should work with promise-returning handlers', async () => { - const { - promise: work, - resolve: resolveWork, - } = defer(); - const { - promise: started, - resolve: resolveStarted, - } = defer(); + const { promise: work, resolve: resolveWork } = defer(); + const { promise: started, resolve: resolveStarted } = defer(); // status to assert the correctness of the test let status = 'uninit'; - const promiseReturningHandler: restify.RequestHandler = (req, res, next) => { + const promiseReturningHandler: restify.RequestHandler = ( + req, + res, + next + ) => { status = 'started'; resolveStarted(); return work.then(() => { status = 'done'; - return getHandler(req, res, next) + return getHandler(req, res, next); }); }; const testLocalServer = await createServer((server: restify.Server) => { - server.get( - '/route/:param', - promiseReturningHandler - ); + server.get('/route/:param', promiseReturningHandler); }); const testLocalPort = testLocalServer.address().port; try { - const requestPromise = httpRequest.get( - `http://localhost:${testLocalPort}/route/hello` - ).then((res) => { - // assert request results - assert.strictEqual(res, '{"route":"hello"}'); - }); + const requestPromise = httpRequest + .get(`http://localhost:${testLocalPort}/route/hello`) + .then(res => { + // assert request results + assert.strictEqual(res, '{"route":"hello"}'); + }); // assert pre request state assert.strictEqual(status, 'uninit'); @@ -425,7 +415,10 @@ describe('Restify Instrumentation', () => { span.attributes['restify.type'], 'request_handler' ); - assert.strictEqual(span.attributes['restify.name'], 'promiseReturningHandler'); + assert.strictEqual( + span.attributes['restify.name'], + 'promiseReturningHandler' + ); assert.strictEqual(span.attributes['restify.version'], 'n/a'); } } finally { From 4b584345959d77ad6872afdd388f67a113954d4e Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 15 Apr 2021 10:28:32 +0300 Subject: [PATCH 27/29] style: use RestifyInstrumentation as the import name --- examples/restify/tracer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/restify/tracer.js b/examples/restify/tracer.js index f66a3c9fae..5805c48b1a 100644 --- a/examples/restify/tracer.js +++ b/examples/restify/tracer.js @@ -12,7 +12,7 @@ const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); -const { RestifyInstrumentation: Instrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify'); +const { RestifyInstrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify'); const Exporter = ((exporterParam) => { if (typeof exporterParam === 'string') { @@ -33,7 +33,7 @@ module.exports = (serviceName) => { tracerProvider: provider, instrumentations: [ HttpInstrumentation, - Instrumentation, + RestifyInstrumentation, ], }); From c4dee5c66025054f81b7ad02454b9eb651a928d0 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 15 Apr 2021 10:30:04 +0300 Subject: [PATCH 28/29] feat: let the example be broken until the publish for consistency --- examples/restify/tracer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/restify/tracer.js b/examples/restify/tracer.js index 5805c48b1a..6e6cc5f4eb 100644 --- a/examples/restify/tracer.js +++ b/examples/restify/tracer.js @@ -12,7 +12,7 @@ const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); -const { RestifyInstrumentation } = require('../../plugins/node/opentelemetry-instrumentation-restify'); +const { RestifyInstrumentation } = require('@opentelemetry/instrumentation-restify'); const Exporter = ((exporterParam) => { if (typeof exporterParam === 'string') { From f8bcb5c3e183543e191aaa03ab591f5d8fbd5e64 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Thu, 15 Apr 2021 18:49:46 +0300 Subject: [PATCH 29/29] fix: remove lodash.once types --- plugins/node/opentelemetry-instrumentation-restify/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 4f6e163300..611c12bd2d 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -44,7 +44,6 @@ "@opentelemetry/context-async-hooks": "0.18.0", "@opentelemetry/node": "0.18.0", "@opentelemetry/tracing": "0.18.0", - "@types/lodash.once": "^4.1.6", "@types/mocha": "7.0.2", "@types/node": "14.0.27", "@types/restify": "^4.3.7",