From 32d7962dbd6354c9418f30d8f091551d0e759676 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Mon, 20 Sep 2021 20:45:12 -0700 Subject: [PATCH 01/17] chore: updating submodule for opentelemetry-proto --- .gitmodules | 3 +++ .../packages/opentelemetry-exporter-metrics-otlp-grpc/protos | 1 + 2 files changed, 4 insertions(+) create mode 160000 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos diff --git a/.gitmodules b/.gitmodules index f66e08a1b8..88e6c6e9be 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "packages/opentelemetry-exporter-otlp-proto/protos"] path = packages/opentelemetry-exporter-otlp-proto/protos url = https://github.com/open-telemetry/opentelemetry-proto.git +[submodule "experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos"] + path = experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos + url = https://github.com/open-telemetry/opentelemetry-proto.git diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos new file mode 160000 index 0000000000..59c488bfb8 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos @@ -0,0 +1 @@ +Subproject commit 59c488bfb8fb6d0458ad6425758b70259ff4a2bd From f9972c876962e909ca885a7a4808fadafc55d669 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Mon, 20 Sep 2021 21:17:38 -0700 Subject: [PATCH 02/17] chore: initialized exporter-metrics-otlp-grpc package --- .../.eslintignore | 1 + .../.eslintrc.js | 8 + .../.npmignore | 4 + .../LICENSE | 201 ++++++++++++++++++ .../README.md | 165 ++++++++++++++ .../package.json | 79 +++++++ .../submodule.md | 45 ++++ .../tsconfig.json | 16 ++ .../README.md | 2 +- .../README.md | 2 +- .../README.md | 2 +- 11 files changed, 522 insertions(+), 3 deletions(-) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintignore create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.npmignore create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/LICENSE create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/submodule.md create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintignore b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintignore @@ -0,0 +1 @@ +build diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js new file mode 100644 index 0000000000..fc4d038120 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + "env": { + "mocha": true, + "commonjs": true, + "node": true, + }, + ...require('../../eslint.config.js') +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.npmignore b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.npmignore new file mode 100644 index 0000000000..9505ba9450 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.npmignore @@ -0,0 +1,4 @@ +/bin +/coverage +/doc +/test diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/LICENSE b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/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/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md new file mode 100644 index 0000000000..522f86880a --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md @@ -0,0 +1,165 @@ +# OpenTelemetry Collector Metrics Exporter for node with grpc + +[![NPM Published Version][npm-img]][npm-url] +[![dependencies][dependencies-image]][dependencies-url] +[![devDependencies][devDependencies-image]][devDependencies-url] +[![Apache License][license-image]][license-image] + +This module provides exporter for web and node to be used with [opentelemetry-collector][opentelemetry-collector-url] - last tested with version **0.25.0**. + +## Installation + +```bash +npm install --save @opentelemetry/exporter-metrics-otlp-grpc +``` + +## Service Name + +The OpenTelemetry Collector Exporter does not have a service name configuration. +In order to set the service name, use the `service.name` resource attribute as prescribed in the [OpenTelemetry Resource Semantic Conventions][semconv-resource-service-name]. + +## Traces in Node - GRPC + +The OTLPTraceExporter in Node expects the URL to only be the hostname. It will not work with `/v1/traces`. + +```js +const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); + +const collectorOptions = { + // url is optional and can be omitted - default is grpc://localhost:4317 + url: 'grpc://:', +}; + +const provider = new BasicTracerProvider(); +const exporter = new OTLPTraceExporter(collectorOptions); +provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + +provider.register(); +['SIGINT', 'SIGTERM'].forEach(signal => { + process.on(signal, () => provider.shutdown().catch(console.error)); +}); +``` + +By default, plaintext connection is used. In order to use TLS in Node.js, provide `credentials` option like so: + +```js +const fs = require('fs'); +const grpc = require('@grpc/grpc-js'); + +const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); + +const collectorOptions = { + // url is optional and can be omitted - default is grpc://localhost:4317 + url: 'grpc://:', + credentials: grpc.credentials.createSsl(), +}; + +const provider = new BasicTracerProvider(); +const exporter = new OTLPTraceExporter(collectorOptions); +provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + +provider.register(); +['SIGINT', 'SIGTERM'].forEach(signal => { + process.on(signal, () => provider.shutdown().catch(console.error)); +}); +``` + +To use mutual authentication, pass to the `createSsl()` constructor: + +```js + credentials: grpc.credentials.createSsl( + fs.readFileSync('./ca.crt'), + fs.readFileSync('./client.key'), + fs.readFileSync('./client.crt') + ), +``` + +To generate credentials for mutual authentication, you can refer to the script used to generate certificates for tests [here](./test/certs/regenerate.sh) + +The exporter can be configured to send custom metadata with each request as in the example below: + +```js +const grpc = require('@grpc/grpc-js'); + +const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); + +const metadata = new grpc.Metadata(); +// For instance, an API key or access token might go here. +metadata.set('k', 'v'); + +const collectorOptions = { + // url is optional and can be omitted - default is grpc://localhost:4317 + url: 'grpc://:', + metadata, // // an optional grpc.Metadata object to be sent with each request +}; + +const provider = new BasicTracerProvider(); +const exporter = new OTLPTraceExporter(collectorOptions); +provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + +provider.register(); +['SIGINT', 'SIGTERM'].forEach(signal => { + process.on(signal, () => provider.shutdown().catch(console.error)); +}); +``` + +Note, that this will only work if TLS is also configured on the server. + +## Metrics in Node - GRPC + +The OTLPTraceExporter in Node expects the URL to only be the hostname. It will not work with `/v1/metrics`. All options that work with trace also work with metrics. + +```js +const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); +const { OTLPMetricExporter } = require('@opentelemetry/exporter-otlp-grpc'); +const collectorOptions = { + // url is optional and can be omitted - default is grpc://localhost:4317 + url: 'grpc://:', +}; +const exporter = new OTLPMetricExporter(collectorOptions); + +// Register the exporter +const provider = new MeterProvider({ + exporter, + interval: 60000, +}) +['SIGINT', 'SIGTERM'].forEach(signal => { + process.on(signal, () => provider.shutdown().catch(console.error)); +}); + +// Now, start recording data +const meter = provider.getMeter('example-meter'); +const counter = meter.createCounter('metric_name'); +counter.add(10, { 'key': 'value' }); +``` + +## Running opentelemetry-collector locally to see the metrics + +1. Go to examples/otlp-exporter-node +2. run `npm run docker:start` +3. Open page at `http://localhost:9411/zipkin/` to observe the metrics + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-grpc +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-grpc +[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-grpc&type=dev +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-grpc&type=dev +[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-metrics-otlp-grpc +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-metrics-otlp-grpc.svg +[opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector +[semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json new file mode 100644 index 0000000000..caafacae99 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -0,0 +1,79 @@ +{ + "name": "@opentelemetry/exporter-metrics-otlp-grpc", + "version": "0.25.0", + "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "compile": "tsc --build", + "clean": "tsc --build --clean", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "postcompile": "npm run submodule && npm run protos:copy", + "protos:copy": "cpx protos/opentelemetry/**/*.* build/protos/opentelemetry", + "submodule": "git submodule sync --recursive && git submodule update --init --recursive", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "version": "node ../../scripts/version-update.js", + "watch": "npm run protos:copy && tsc -w", + "precompile": "lerna run version --scope $(npm pkg get name) --include-filtered-dependencies", + "prewatch": "npm run precompile" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "grpc", + "tracing", + "profiling", + "metrics", + "stats" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "build/protos/**/*.proto", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@babel/core": "7.15.0", + "@opentelemetry/api": "^1.0.2", + "@opentelemetry/api-metrics": "0.25.0", + "@types/mocha": "8.2.3", + "@types/node": "14.17.11", + "@types/sinon": "10.0.2", + "codecov": "3.8.3", + "cpx": "1.5.0", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "3.0.2", + "sinon": "11.1.2", + "ts-loader": "8.3.0", + "ts-mocha": "8.0.0", + "typescript": "4.3.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + }, + "dependencies": { + "@grpc/grpc-js": "^1.3.7", + "@grpc/proto-loader": "^0.6.4", + "@opentelemetry/core": "0.25.0", + "@opentelemetry/exporter-otlp-http": "0.25.0", + "@opentelemetry/exporter-otlp-grpc": "0.25.0", + "@opentelemetry/sdk-metrics-base": "0.25.0", + "@opentelemetry/resources": "0.25.0", + "@opentelemetry/sdk-trace-base": "0.25.0" + } +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/submodule.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/submodule.md new file mode 100644 index 0000000000..4985e69dad --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/submodule.md @@ -0,0 +1,45 @@ +# Important + +**Submodule is always pointing to certain revision number. So updating the submodule repo will not have impact on your code. +Knowing this if you want to change the submodule to point to a different version (when for example proto has changed) here is how to do it:** + +## Updating submodule to point to certain revision number + +1. Make sure you are in the same folder as this instruction + +2. Update your submodules by running this command + + ```shell script + git submodule sync --recursive + git submodule update --init --recursive + ``` + +3. Find the commit SHA which you want to update to and copy it (the long one) + +4. Enter a submodule directory from this directory + + ```shell script + cd protos + ``` + +5. Updates files in the submodule tree to given commit: + + ```shell script + git checkout -q + ``` + +6. Return to the main directory: + + ```shell script + cd ../ + ``` + +7. Please run `git status` you should see something like `Head detached at`. This is correct, go to next step + +8. Now thing which is very important. You have to commit this to apply these changes + + ```shell script + git commit -am "chore: updating submodule for opentelemetry-proto" + ``` + +9. If you look now at git log you will notice that the folder `protos` has been changed and it will show what was the previous sha and what is current one. diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json new file mode 100644 index 0000000000..948abef3ce --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ], + "references": [ + { + "path": "../opentelemetry-api-metrics" + } + ] +} diff --git a/packages/opentelemetry-exporter-otlp-grpc/README.md b/packages/opentelemetry-exporter-otlp-grpc/README.md index 1ef2a34732..41a52ada2a 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/README.md +++ b/packages/opentelemetry-exporter-otlp-grpc/README.md @@ -160,6 +160,6 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-grpc&type=dev [devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-grpc&type=dev [npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-grpc -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-collector-grpc.svg +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-otlp-grpc.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service diff --git a/packages/opentelemetry-exporter-otlp-http/README.md b/packages/opentelemetry-exporter-otlp-http/README.md index 7aff40f464..0e17fb68cf 100644 --- a/packages/opentelemetry-exporter-otlp-http/README.md +++ b/packages/opentelemetry-exporter-otlp-http/README.md @@ -182,7 +182,7 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-http [npm-url-grpc]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-grpc [npm-url-proto]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-proto -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-collector.svg +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-otlp-http.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [opentelemetry-spec-protocol-exporter]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service diff --git a/packages/opentelemetry-exporter-otlp-proto/README.md b/packages/opentelemetry-exporter-otlp-proto/README.md index 55b14756ab..dfe135e6dc 100644 --- a/packages/opentelemetry-exporter-otlp-proto/README.md +++ b/packages/opentelemetry-exporter-otlp-proto/README.md @@ -85,6 +85,6 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-proto&type=dev [devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-proto&type=dev [npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-proto -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-collector-proto.svg +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-collector-otlp-proto.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service From 9685772ad3db00fad0bf0b8a57d45980041a8695 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Mon, 20 Sep 2021 22:19:40 -0700 Subject: [PATCH 03/17] feat\!: populated exporter-metrics-otlp-grpc package --- .../.eslintrc.js | 2 +- .../package.json | 3 +- .../src/OTLPMetricExporter.ts | 15 +- .../src/index.ts | 17 ++ .../test/OTLPMetricExporter.test.ts | 4 +- .../test/metricsHelper.ts | 251 ++++++++++++++++++ .../src/index.ts | 4 +- .../test/OTLPExporterNodeBase.test.ts | 2 +- .../test/OTLPTraceExporter.test.ts | 2 +- .../test/{helper.ts => traceHelper.ts} | 143 ---------- 10 files changed, 286 insertions(+), 157 deletions(-) rename {packages/opentelemetry-exporter-otlp-grpc => experimental/packages/opentelemetry-exporter-metrics-otlp-grpc}/src/OTLPMetricExporter.ts (87%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/index.ts rename {packages/opentelemetry-exporter-otlp-grpc => experimental/packages/opentelemetry-exporter-metrics-otlp-grpc}/test/OTLPMetricExporter.test.ts (98%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts rename packages/opentelemetry-exporter-otlp-grpc/test/{helper.ts => traceHelper.ts} (69%) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js index fc4d038120..3ed0fbeba3 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../eslint.config.js') + ...require('../../../eslint.config.js') } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index caafacae99..d622300d75 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -73,7 +73,6 @@ "@opentelemetry/exporter-otlp-http": "0.25.0", "@opentelemetry/exporter-otlp-grpc": "0.25.0", "@opentelemetry/sdk-metrics-base": "0.25.0", - "@opentelemetry/resources": "0.25.0", - "@opentelemetry/sdk-trace-base": "0.25.0" + "@opentelemetry/resources": "0.25.0" } } diff --git a/packages/opentelemetry-exporter-otlp-grpc/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts similarity index 87% rename from packages/opentelemetry-exporter-otlp-grpc/src/OTLPMetricExporter.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts index a914c299cd..5fcc6f4410 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts @@ -17,12 +17,15 @@ import { otlpTypes, toOTLPExportMetricServiceRequest, -} from '@opentelemetry/exporter-otlp-http'; +} from '../../../../packages/opentelemetry-exporter-otlp-http'; import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import { OTLPExporterConfigNode, ServiceClientType } from './types'; -import { OTLPExporterNodeBase } from './OTLPExporterNodeBase'; +import { + OTLPExporterConfigNode, + OTLPExporterNodeBase, + ServiceClientType, + validateAndNormalizeUrl +} from '../../../../packages/opentelemetry-exporter-otlp-grpc'; import { baggageUtils, getEnv } from '@opentelemetry/core'; -import { validateAndNormalizeUrl } from './util'; import { Metadata } from '@grpc/grpc-js'; const DEFAULT_COLLECTOR_URL = 'localhost:4317'; @@ -58,7 +61,7 @@ export class OTLPMetricExporter ); } - getDefaultUrl(config: OTLPExporterConfigNode) { + getDefaultUrl(config: OTLPExporterConfigNode): string { return typeof config.url === 'string' ? validateAndNormalizeUrl(config.url) : getEnv().OTEL_EXPORTER_OTLP_METRICS_ENDPOINT.length > 0 @@ -68,7 +71,7 @@ export class OTLPMetricExporter : DEFAULT_COLLECTOR_URL; } - getServiceClientType() { + getServiceClientType(): ServiceClientType { return ServiceClientType.METRICS; } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/index.ts new file mode 100644 index 0000000000..7b73804ce4 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/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 './OTLPMetricExporter'; diff --git a/packages/opentelemetry-exporter-otlp-grpc/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts similarity index 98% rename from packages/opentelemetry-exporter-otlp-grpc/test/OTLPMetricExporter.test.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts index 86b8e1cef3..f24d2ec967 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts @@ -21,7 +21,7 @@ import { ValueRecorder, } from '@opentelemetry/api-metrics'; import { diag } from '@opentelemetry/api'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '../../../../packages/opentelemetry-exporter-otlp-http'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as fs from 'fs'; @@ -38,7 +38,7 @@ import { mockCounter, mockObserver, mockValueRecorder, -} from './helper'; +} from './metricsHelper'; const metricsServiceProtoPath = 'opentelemetry/proto/collector/metrics/v1/metrics_service.proto'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts new file mode 100644 index 0000000000..fa6c756461 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts @@ -0,0 +1,251 @@ +/* + * 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 { + Counter, + ObserverResult, + ValueObserver, + ValueRecorder, + ValueType, +} from '@opentelemetry/api-metrics'; +import { otlpTypes } from '../../../../packages/opentelemetry-exporter-otlp-http'; +import * as metrics from '@opentelemetry/sdk-metrics-base'; +import { Resource } from '@opentelemetry/resources'; +import * as assert from 'assert'; +import * as grpc from '@grpc/grpc-js'; +import { VERSION } from '@opentelemetry/core'; + +const meterProvider = new metrics.MeterProvider({ + interval: 30000, + resource: new Resource({ + service: 'ui', + version: 1, + cost: 112.12, + }), +}); + +const meter = meterProvider.getMeter('default', '0.0.1'); + +export function mockCounter(): metrics.Metric & Counter { + const name = 'int-counter'; + const metric = + meter['_metrics'].get(name) || + meter.createCounter(name, { + description: 'sample counter description', + valueType: ValueType.INT, + }); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockObserver( + callback: (observerResult: ObserverResult) => void +): metrics.Metric & ValueObserver { + const name = 'double-observer'; + const metric = + meter['_metrics'].get(name) || + meter.createValueObserver( + name, + { + description: 'sample observer description', + valueType: ValueType.DOUBLE, + }, + callback + ); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockValueRecorder(): metrics.Metric & + ValueRecorder { + const name = 'int-recorder'; + const metric = + meter['_metrics'].get(name) || + meter.createValueRecorder(name, { + description: 'sample recorder description', + valueType: ValueType.INT, + boundaries: [0, 100], + }); + metric.clear(); + metric.bind({}); + return metric; +} + +export function ensureExportedAttributesAreCorrect( + attributes: otlpTypes.opentelemetryProto.common.v1.KeyValue[] +) { + assert.deepStrictEqual( + attributes, + [ + { + key: 'component', + value: { + stringValue: 'document-load', + value: 'stringValue', + }, + }, + ], + 'exported attributes are incorrect' + ); +} + +export function ensureExportedCounterIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time?: number +) { + assert.deepStrictEqual(metric, { + name: 'int-counter', + description: 'sample counter description', + unit: '1', + data: 'intSum', + intSum: { + dataPoints: [ + { + labels: [], + exemplars: [], + value: '1', + startTimeUnixNano: '1592602232694000128', + timeUnixNano: String(time), + }, + ], + isMonotonic: true, + aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', + }, + }); +} + +export function ensureExportedObserverIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time?: number +) { + assert.deepStrictEqual(metric, { + name: 'double-observer', + description: 'sample observer description', + unit: '1', + data: 'doubleGauge', + doubleGauge: { + dataPoints: [ + { + labels: [], + exemplars: [], + value: 6, + startTimeUnixNano: '1592602232694000128', + timeUnixNano: String(time), + }, + ], + }, + }); +} + +export function ensureExportedValueRecorderIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time?: number, + explicitBounds: number[] = [Infinity], + bucketCounts: string[] = ['2', '0'] +) { + assert.deepStrictEqual(metric, { + name: 'int-recorder', + description: 'sample recorder description', + unit: '1', + data: 'intHistogram', + intHistogram: { + dataPoints: [ + { + labels: [], + exemplars: [], + sum: '21', + count: '2', + startTimeUnixNano: '1592602232694000128', + timeUnixNano: String(time), + bucketCounts, + explicitBounds, + }, + ], + aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', + }, + }); +} + +export function ensureResourceIsCorrect( + resource: otlpTypes.opentelemetryProto.resource.v1.Resource +) { + assert.deepStrictEqual(resource, { + attributes: [ + { + 'key': 'service.name', + 'value': { + 'stringValue': `unknown_service:${process.argv0}`, + 'value': 'stringValue' + } + }, + { + 'key': 'telemetry.sdk.language', + 'value': { + 'stringValue': 'nodejs', + 'value': 'stringValue' + } + }, + { + 'key': 'telemetry.sdk.name', + 'value': { + 'stringValue': 'opentelemetry', + 'value': 'stringValue' + } + }, + { + 'key': 'telemetry.sdk.version', + 'value': { + 'stringValue': VERSION, + 'value': 'stringValue' + } + }, + { + key: 'service', + value: { + stringValue: 'ui', + value: 'stringValue', + }, + }, + { + key: 'version', + value: { + intValue: '1', + value: 'intValue', + }, + }, + { + key: 'cost', + value: { + doubleValue: 112.12, + value: 'doubleValue', + }, + }, + ], + droppedAttributesCount: 0, + }); +} + +export function ensureMetadataIsCorrect( + actual: grpc.Metadata, + expected: grpc.Metadata +) { + //ignore user agent + expected.remove('user-agent'); + actual.remove('user-agent'); + assert.deepStrictEqual(actual.getMap(), expected.getMap()); +} diff --git a/packages/opentelemetry-exporter-otlp-grpc/src/index.ts b/packages/opentelemetry-exporter-otlp-grpc/src/index.ts index d54490a7ea..77d369ceb9 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/src/index.ts +++ b/packages/opentelemetry-exporter-otlp-grpc/src/index.ts @@ -14,5 +14,7 @@ * limitations under the License. */ +export * from './OTLPExporterNodeBase'; export * from './OTLPTraceExporter'; -export * from './OTLPMetricExporter'; +export { ServiceClientType } from './types'; +export { validateAndNormalizeUrl } from './util'; diff --git a/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts b/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts index f52f212f37..5df6e652a5 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts +++ b/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts @@ -20,7 +20,7 @@ import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import { OTLPExporterNodeBase } from '../src/OTLPExporterNodeBase'; import { OTLPExporterConfigNode, ServiceClientType } from '../src/types'; -import { mockedReadableSpan } from './helper'; +import { mockedReadableSpan } from './traceHelper'; class MockCollectorExporter extends OTLPExporterNodeBase< ReadableSpan, diff --git a/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts b/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts index 2014308967..1af8a25fbb 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts +++ b/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts @@ -34,7 +34,7 @@ import { ensureMetadataIsCorrect, ensureResourceIsCorrect, mockedReadableSpan, -} from './helper'; +} from './traceHelper'; const traceServiceProtoPath = 'opentelemetry/proto/collector/trace/v1/trace_service.proto'; diff --git a/packages/opentelemetry-exporter-otlp-grpc/test/helper.ts b/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts similarity index 69% rename from packages/opentelemetry-exporter-otlp-grpc/test/helper.ts rename to packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts index e77f0f1742..751f2ccdcc 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/test/helper.ts +++ b/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts @@ -15,32 +15,13 @@ */ import { SpanStatusCode, TraceFlags } from '@opentelemetry/api'; -import { - Counter, - ObserverResult, - ValueObserver, - ValueRecorder, - ValueType, -} from '@opentelemetry/api-metrics'; import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; -import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import * as grpc from '@grpc/grpc-js'; import { VERSION } from '@opentelemetry/core'; -const meterProvider = new metrics.MeterProvider({ - interval: 30000, - resource: new Resource({ - service: 'ui', - version: 1, - cost: 112.12, - }), -}); - -const meter = meterProvider.getMeter('default', '0.0.1'); - const traceIdArr = [ 31, 16, @@ -62,53 +43,6 @@ const traceIdArr = [ const spanIdArr = [94, 16, 114, 97, 246, 79, 165, 62]; const parentIdArr = [120, 168, 145, 80, 152, 134, 67, 136]; -export function mockCounter(): metrics.Metric & Counter { - const name = 'int-counter'; - const metric = - meter['_metrics'].get(name) || - meter.createCounter(name, { - description: 'sample counter description', - valueType: ValueType.INT, - }); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockObserver( - callback: (observerResult: ObserverResult) => void -): metrics.Metric & ValueObserver { - const name = 'double-observer'; - const metric = - meter['_metrics'].get(name) || - meter.createValueObserver( - name, - { - description: 'sample observer description', - valueType: ValueType.DOUBLE, - }, - callback - ); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockValueRecorder(): metrics.Metric & - ValueRecorder { - const name = 'int-recorder'; - const metric = - meter['_metrics'].get(name) || - meter.createValueRecorder(name, { - description: 'sample recorder description', - valueType: ValueType.INT, - boundaries: [0, 100], - }); - metric.clear(); - metric.bind({}); - return metric; -} - export const mockedReadableSpan: ReadableSpan = { name: 'documentFetch', kind: 0, @@ -327,83 +261,6 @@ export function ensureExportedSpanIsCorrect( ); } -export function ensureExportedCounterIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time?: number -) { - assert.deepStrictEqual(metric, { - name: 'int-counter', - description: 'sample counter description', - unit: '1', - data: 'intSum', - intSum: { - dataPoints: [ - { - labels: [], - exemplars: [], - value: '1', - startTimeUnixNano: '1592602232694000128', - timeUnixNano: String(time), - }, - ], - isMonotonic: true, - aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', - }, - }); -} - -export function ensureExportedObserverIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time?: number -) { - assert.deepStrictEqual(metric, { - name: 'double-observer', - description: 'sample observer description', - unit: '1', - data: 'doubleGauge', - doubleGauge: { - dataPoints: [ - { - labels: [], - exemplars: [], - value: 6, - startTimeUnixNano: '1592602232694000128', - timeUnixNano: String(time), - }, - ], - }, - }); -} - -export function ensureExportedValueRecorderIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time?: number, - explicitBounds: number[] = [Infinity], - bucketCounts: string[] = ['2', '0'] -) { - assert.deepStrictEqual(metric, { - name: 'int-recorder', - description: 'sample recorder description', - unit: '1', - data: 'intHistogram', - intHistogram: { - dataPoints: [ - { - labels: [], - exemplars: [], - sum: '21', - count: '2', - startTimeUnixNano: '1592602232694000128', - timeUnixNano: String(time), - bucketCounts, - explicitBounds, - }, - ], - aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', - }, - }); -} - export function ensureResourceIsCorrect( resource: otlpTypes.opentelemetryProto.resource.v1.Resource ) { From 007970c1a3765025bb883b9c1a687fc07ab67a21 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Mon, 20 Sep 2021 23:04:58 -0700 Subject: [PATCH 04/17] chore: bootstrapped exporter-metrics-otlp-http package --- .../test/certs/ca.crt | 33 +++ .../test/certs/ca.key | 54 +++++ .../test/certs/client.crt | 31 +++ .../test/certs/client.csr | 28 +++ .../test/certs/client.key | 51 +++++ .../test/certs/regenerate.sh | 22 ++ .../test/certs/server.crt | 31 +++ .../test/certs/server.csr | 28 +++ .../test/certs/server.key | 51 +++++ .../.eslintignore | 1 + .../.eslintrc.js | 9 + .../.npmignore | 4 + .../LICENSE | 201 ++++++++++++++++++ .../README.md | 131 ++++++++++++ .../karma.conf.js | 26 +++ .../package.json | 95 +++++++++ .../tsconfig.esm.json | 11 + .../tsconfig.json | 11 + 18 files changed, 818 insertions(+) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key create mode 100755 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintignore create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/.npmignore create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/LICENSE create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/karma.conf.js create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.esm.json create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt new file mode 100644 index 0000000000..b6db7d0dd2 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFozCCA4ugAwIBAgIUCdllngMpqYtsqRCpqdXxPZiSbGEwDQYJKoZIhvcNAQEL +BQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQHDBFPcGVuVGVs +ZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9vdDENMAsGA1UECwwEVGVzdDELMAkGA1UE +AwwCY2EwHhcNMjEwNjA3MjAyNzMyWhcNMjIwNjA3MjAyNzMyWjBhMQswCQYDVQQG +EwJDTDELMAkGA1UECAwCUk0xGjAYBgNVBAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0w +CwYDVQQKDARSb290MQ0wCwYDVQQLDARUZXN0MQswCQYDVQQDDAJjYTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKS4d8790qpxSOMAMNSxlvFxZvxZKih5 +BjKDefa3sPL8iSOZ12mSZyWqPifjU+fnb3PDLWJPEFYQiwpyMctlXoXo5qiDm1D5 +mLZPTc7/qbiyu33YZHW+iE23GiOQBfvgKHTqh2+ejWs9h/txlWlQuKm0NEDPnA2P +kHiIjudSkWCT1w0WOnlJXd/9CWq6gW0nCTeOmwGYaY7T/i1W500qQyv5j1xHrJCu +m9amRzZEc1I4L2XF8Lnz2vDuEEs2W1vjcO++sXODlSC78dIyGnDWxGuK+V7dhccB +jj/Q5V96CMUoY7RGl18hwn/MSkzmWghsQFkfYWw1Xvez8/IWh7AlEtB/hDn2Dqw7 +lr6lvn1cOUmhHAgYV+v/0gWFN482qi3OaR0z2cCdmfSxRlxhtrq0jH7B3dW5YXcf +ke9e4gh7P980HWeHPwanBlV7BAsPxJY7N+je1LsjHVkwv2OnpkAzGQqJycOzPAzn +tib/lxmhBYVV4eWhCKvLrDqkgp5J3Cp99wIovW6TEfg2PJG4jZI9PKztPQb/OHZp +995oEAG8lmgcCA6kpvwVvle/m3wXj4eKQ1U0mQLGfJja2ripSBk7aAlr7qxWbvjv +4kxe5dJPMRmVB3PRZvnNilfM78Pbn+du0X8TiSwXeG5Og8uSvGwBzQNeW0EZ//b0 +fHNgQlyp4OL9AgMBAAGjUzBRMB0GA1UdDgQWBBSsdECnQyhXkgqyNWFlhkSGlUJd +MzAfBgNVHSMEGDAWgBSsdECnQyhXkgqyNWFlhkSGlUJdMzAPBgNVHRMBAf8EBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQAAfgD6lqyOyEOfGMAhtb5OVLpn5hG6WLfd +wyjIYzMNW5DScV9hrgB1ycfA9OIqBECWY3zP76X41KVI0siu7qg3bkaPM2qh7sbO +LXYCkDHNYF69Tlf0JR+Wpr740DIqoITcZRLy+/FMFWij9tNAsY1EcLrSYuiEd8/L +OanlD9AaA3fL1pOsfiNM7Ec6nUFl537+yNFGxU+Q9T7EMb/ypz/FwN3/zBbO0xdk +ZqPh/jDETKorBH87QnFRidmK5DiXRwh323+l+cWEEe79ssGzLBcLr+rzOvDH0qbo +fLBWkRbBtAcRGJAgM0F9dLG4/hQisELobNSCZ4aITHmr1J6MFiVxaaEvIXQ94zgj +xVtAv2Fp4lvpJWMjk/iKc8IR56VkvK6bui7BYEFc+DmtJLw0ryFZDD1wEzbQ5Gzl +W7JBC3vR8zQPo7kVl99BKAsNLhC+tCGdbLLOJROyFWHai/bkcRPHOLOMY1/lM/Wf +rlIcc46pSIOzlsxnlrDzoQihjtg3SrNBkPaRaJE12WFHYELHBX+65HRGlkaXnxaY +HOqPN6NiHVB0i5C4+l0M7JdOx2kEYVQiprm4kBiM3BNMdRpThn4Vt12TnEyq/Cyz +khz4FAMw/ytbEWMxFvEQJdOK1vjmPHAMDSFXiixeklVUD5Th/9so4kRTu97j8fq/ +T0JDHso8+A== +-----END CERTIFICATE----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key new file mode 100644 index 0000000000..3a12f603d4 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,723F7ADBF5E86DF0 + +laGpuVd6ib17eYFGAvuWCFodT4OxvWQVpvjXVEqfqoJw3x//SbS/J9GQXULJHanh +FZGagPYhv3cQjW5n8hSxFADCq09he3sN+IV6FOzQ5JzJZEQtb5jqfc23n0o2y1Sx +Xw2TOBuzzLB9NFnkTgZt0hUJW9wrqYhDLXXmwwdJb78OsFmgzlBCVrcXtZKiLK7F +4gKvMKSD/pS4INKmwHlAdNqssMyk0Snon7odLD9yTrTYVqIabytj7ZQi8Mxg/EZC +mkffRhMS591DYU86CE38of6UbSc7AXdfvpYZ+G3phIUwE+BxaDOL1RX/h04LcDjE +43R8ccI1akW3EGO0FvTr1jn4EsDv/kuYLVmC7fhuYroSBGLIdt89aEuRxBkLsn/Y +WJv/VviXlmO13wAi/kPrwPQk8GpBO73Yw367+iaHNsWihZ8qBYBjiqQyR59Tymwy +yLtTA8yhFCDwMwWLbB5NGVFuMmLGKUHvFvcXnEdK0RGJr5uu8cV/FAGpGMld3g84 +VY7srpocRLecTqQ5cfm8TZfcilIbTtpexqN97RicDdI+KjmYBVmWMOwrzzALFuKA +jVIgx6K32XOVE72gAsSWvTUpb8R6XAuc0WHHeqNr9w7NEC0+Y73YmKamqgCQSSAM +y9yeK6DaoroinOxRjGy8ygi6rg47+L0qEkiKzRICAqynfSMbJCidvRHf1lTuNmP1 +uLweRroiSXAcmCSnU0SelhcKM7DxzNIk5qlnnpI2WOp1lYmYjZH50ktD1FQ7nX06 +RlXUnhDZ6uWwyBWd+gP3/u8F6167tyFd4JXKVoEVklofyVbyzMZ+juSdcddjrtEz +qh+EESi0Z9YcV0yO0L5oV9Pd9hhR2j4hcRgoYZydjSRcZ5w619urHu5kmKLaExbE +Uy9RQl5GT3LRaFMyiMJv4MaN6lmbWfUi/ho5Isif8H/KHa72BzOe5HL9QCPBWD3r +GJyNH6Yjt6CpovhK2/LbwpAXfApX3WxGaskrgxEccBWu9jPwyvmkip65f0PEub+2 +vgK/3It7wqpR/FbJ56qmM2FIzTXAC2FqZ8yKlgRjGId3HqqsYo0BSmEtGFbiI8A0 +Snt+txyVPdl1gMDOAdvcpJrn5cB1ehmd/YcyvWaNN+9haA3BgAeS68KPm9Ilgu+I +r7FVPccKDUPXZJv7GIG7XJG0nPDjThNXsFr1zA6gLkFBAGy2ahKfXIBG9a0Adhqy +/weY23Tsq2pmz5f6xPtWoAm/bOEhz+DWV2Okb4uV+5PYTVBm1hT8GuiKqzTh6anB +1ZaJukt4HAyxqHM92Htqw5jEoMpChUT9iJyG9XrIyOTE9ygnVm4m55kEOBLeKeVS +r3g09bxqPtpj9IQeAlnCig8VA7JAvedmoVw+OzG+ywvgG2zGY+vraNey3ZvDow8w +maHXJlJKyE/uGHiHTPnL/k1yqUrbbgKHOddZfYCij0LsZ20OcMp4znm+UeIFGu32 +n7UhNqlmA9XEzKuQNNBR3VuaRu6poBNjjQkj3hCA2rJ2EAcWbPXrELUw7zjMR1+i +eawlOSv2OOuOhONan+hJB+W4W85E6b+isW/WFE0QTKGnhChGjNpZ/CPdv0P8hhUb +fYeTABv11gaIMvvLcDnPAE7jiTUk+SKVUj0JyaHKHjc53Ioy0ZKjnWJLlIJc/lzy +wVxfSM4GVu+PVAPTHqu92z7+2tGFZHYdstkKokA4FCAm7GJujI04CCemNzdbiqRs +sIxJk6/90XpMF5/nISErobs7LsbWL4jRfZUgKluklbAwFs14OICxcnyeNAsZawlc +LGykIfP1Qpim+yqKQuUAzOFHC00+kb2DzLm3f2n7vfaaf/4EwpWT9kuRPM9cziD0 +irc3vwCMtOrWQ8lp2TByOQ56Xh7ozsxvIw/RTISWp/0NkYvVfc53YPSEV/IUVy6H +bBQ18A+sb0Nj/3sJ8Qd3wnCt5W267CQwVDeoU+RJsrcqSaKpdg6lNJjZGzlLXzkq +n4wRv9y1wqXye0R6OgN9ly66UCkCH+kO8pMTJH49v7DA69BfwOgxQw2ey0/lsKqW +yoUctxN6J6t4GKyoslMB5KjT2FJY1DPcTxRiZwqbZwpDN5Lbw2JwbjX7RwYgJSsU +uuXb8pSr0T8kPC5QL3DzH3K6E4l9vaOqp6+VCBZ/lgtisNYkEIfepUYwg1cDo45X +J84XJjeju/MPxJ3sViBzyMhChUya8DdoovBeLnnFYDClUD1kV/L9hsQumc/uKF+t +a8xtoW7NdCSlwzr5YzRsrqybQGyWxMT7yGA4rh5nykaHp5YjoT3hT9evhOCbLpaC +HpoQqXRXx4Nc322AgiFmnemc3WrUu33PQdULue0FZFwf/GtDHUEbszHiCnlnUTrX +SIi/QJCUpV23UeU37lKTbDu85La81CAkN7I9DFsUZ7D0Kl+h3du4UL/ez5adPm/k +vu1TlONUUF8QTSWokeyrfr3GsjytpLBt/yni+VtT4DMXoPqJ5OjQanTbA5vIi/LG +rj5AYDZru1tR58FZBmErY6tgJ7Z9LgWL8vmNtDJha5NElEGqeQoBo2czvSUSnblS +Bdb0O1sqMGxpfjAPiwU3ErzkARMcYlTO4t2IAxPH+3arIGhcF/DCWtHnSCkJokj7 +S9ckrTYvNK7ROz3BTA8D48UF/XX/C/gBkdhFZcqgOI+VlCtexi6pUqakKicy96hw +QbBwh06/zl95YyCEqd2cUY18zrfwkc7L/1oLaeW6n50IVvt0MffI0k0r42zgBK0T +g0EAswdX6/0PrZ7bfJiRHf+HeqT30EPvXch7wLv7Vx68wMFaYKcPzFqQ4nBH3rOF +5Nhj0EpV+C0W/XMewfJEADbwE5XiTYY+2eYMU8kBa49+vjwXM7fkYLZOFfAZmVRQ +84JRgL8HG4gXmVo2YcbviRdNuw4y2LCyfhJ9NwuWW6Ly0uKiGRaVKP1JAEmIJmcX +SnG3rM0bJsRnDtBBURioN0whl64LS3BwsPWL3OOsjesBIBNkoDA10OukTzjnLc6A +RYAfgPrG1eSsjitMFYdSBX8wvrQDCpxyItIamMf8IlsgBMt/WlFeGOJ9wxxa26lb +PxLNlhSpj3PU6rA4NDKvxkr2IEJ0MEcDnFnQkyBPlWY6a6jSQ+WSQkzBLU9soZ/2 +-----END RSA PRIVATE KEY----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt new file mode 100644 index 0000000000..cbd324625f --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV +BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAyNzMzWhcN +MjIwNjA3MjAyNzMzWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD +bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMBc1F9O8OcCu8xspnN1MNwccUZCx+lsh1F50T5D0INmxz3rXxin +TkM+QjFsJ09iF8MmgouI+yxmTayMlW733dUc/XQ9cV9GRwWVlF1RnoYp7mXVwMnz +o80s7CGWc+geliqeLUgzGIoq4bGTp1eEeB2KGJ/w8E2bTLs5a6B0pHhQuVXZ+Pq0 +E0Uzl2wPc+WwjeZyGRU4PbWzX6bN+R05Pfxq8PXhJ6Jnt0j8pNoF/XU6mOIYQyQb +THEKR8qB2SXo5+D1JOlRiofWtK4wsRH/wNm7j7tq75UezhOeqp6YU6MwGnea1loa +65K+DDG/rFyvxSlDS/53gjyKGSqYod8pevvytKjtUmw6xX5i5nFnf+wrKmMH6EDe +Hm63LReBv/CqCErYt4kV3NkdIuHmv7ZIdRfhDPdK8Q/kzAlRTX25wK/xWn5CqpSK +KCUwukEzccV266KU4sG63/4byv6zE62z8472P6u+OGSZlDxznL0BBg9iiHFYiopw +shBfFcszPCSOs1SO8XZH+6J5ypKBzBP7aAsyJflPHWGTUBACY9ZCU/7iwIF7YFPb +a/temVMLkg75oYGVow0Dlp55jQvrzMr7IaSBCxFUJEKf5u6GSNotJWmQdHYta5SH +Kj/rryFQV5qp9mBfia5DWnjHijFZTo+c/KLrgkmzfgbT4qVpnuxKahXNAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAA2nZTbaa9z/LTNJijf0clu4ULPG4RrqHgQ1q/Wh +NbrNemrxTJ+ZAwCR1gTv4oZe9NBd+V1pDXDQBid8mBTbttVrQCHdjgHFpQKNeyiK +nd2OI4awYiTvGbgDCMHAW/yf+XKCocuSkyNRnmfe8PihFD9wx6+kl6XCJuIkF3Vw +MGKEIrW2WLAARtBZeKV2yhtuVhkNm2TNFPfNrNtk2gdGO8TkX0orOllAENopR+GV +uffuLiIi9KWj9XP9T+6bdZbG2eMJX8wUNIIma54/3XN3RMi2iV9ZxW+F0j6d9ryo +j8pJJfpiW4qh6Eqi6HyvrzgdndKhkVYiIwbX5S60mqL+KcaPghX2goWexMW94QlQ +Re3/IvOAzGpu5fLn//y2tAaO9hDUsyoIJtXcFJKLbfM+mK/Bac2niEyBpr9Rzqur +N43Ga2pOsM4P/4YcAO6tvs5htvh2ala6UDXeEZV9Z1Bc5bOHAWNp13BfWE01iLNC +5rIu0XuVo1aa0FeVdJL6IpVeEwnkzDDt/9LKgp2K8w71VAtUSOg23AEYJu+GFr4D +y+0bahUiNETrFaiCsXQYa9HHFrqhA/PGOGpyq6GrBkJxWpzuL3rQQicpHzVIQEmb +3aCcIBdA2RQwQk7Z3YI2EuFMkHAElCXXZBulvxY6kl1n+2UwWRlocDMYZdkzI3+X +Tw8x +-----END CERTIFICATE----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr new file mode 100644 index 0000000000..e5de7b1912 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH +DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp +ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDAXNRfTvDnArvMbKZzdTDcHHFGQsfpbIdRedE+Q9CDZsc9618Yp05D +PkIxbCdPYhfDJoKLiPssZk2sjJVu993VHP10PXFfRkcFlZRdUZ6GKe5l1cDJ86PN +LOwhlnPoHpYqni1IMxiKKuGxk6dXhHgdihif8PBNm0y7OWugdKR4ULlV2fj6tBNF +M5dsD3PlsI3mchkVOD21s1+mzfkdOT38avD14SeiZ7dI/KTaBf11OpjiGEMkG0xx +CkfKgdkl6Ofg9STpUYqH1rSuMLER/8DZu4+7au+VHs4TnqqemFOjMBp3mtZaGuuS +vgwxv6xcr8UpQ0v+d4I8ihkqmKHfKXr78rSo7VJsOsV+YuZxZ3/sKypjB+hA3h5u +ty0Xgb/wqghK2LeJFdzZHSLh5r+2SHUX4Qz3SvEP5MwJUU19ucCv8Vp+QqqUiigl +MLpBM3HFduuilOLBut/+G8r+sxOts/OO9j+rvjhkmZQ8c5y9AQYPYohxWIqKcLIQ +XxXLMzwkjrNUjvF2R/uiecqSgcwT+2gLMiX5Tx1hk1AQAmPWQlP+4sCBe2BT22v7 +XplTC5IO+aGBlaMNA5aeeY0L68zK+yGkgQsRVCRCn+buhkjaLSVpkHR2LWuUhyo/ +668hUFeaqfZgX4muQ1p4x4oxWU6PnPyi64JJs34G0+KlaZ7sSmoVzQIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBAAtbvw2rrtnO5EeOF1Z+mJc9o3036liNbmCQTaC7 +Pf2yqo3Zk44L80R99sX5rDoq79MKEr//ED5C410EiCvzX42w330p7dasuoYRAwLw +YB0UwWnrKhm4SU20SC8zpnCUBL6K9lmXF2PJtkoMgFAnB8tIEc+DAr4hBIqh45vD +VgZ06GHH94/G6tIW3qNvi1mmvUYV0i6D3xBhcNAu6R/zopEYM3png24ZE2IlzZCX +x8hbYuMAqeQXSHQM9sKhXeb60GT8ns7d3P17S/TfpkTI7zRMkPhzsHC/Vp97xN/n +ojEEBY3MZJBPZj/q/buDfbp5x6H7/YxYdOKQKaGVWECGabISBcsg8NxaY++GKc+u +10C8O9KILRCJKGh8ze7chXx5n5+BPEoVVwhLn58eV7sOODvb4kZySUJHvFBb0ZM/ +7626K3443e5ZRkGXydvDIwPZgoiJ3L1L9+olL1cJ5rsRE6L5k6vPuJOeZITm4au2 +pE0THMHx/RjCMA1Lb/0BiDqbBHSh8hh+mHU7YXTq1Fxi2dSas0wAxcTBRs8TULsV +o57TmJqF+byiqwQvugyN7tndvWg9c+LDJHqitA5QC1GDXEi/bdjd7YeHRiL+ciVM +ZXXU9GT1O78O+84wbIDebahn8cifdGa7Kft7GftS3pCIyAjU9+eMXyT1JG3nssLr +4/ht +-----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key new file mode 100644 index 0000000000..9219944ca4 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEAwFzUX07w5wK7zGymc3Uw3BxxRkLH6WyHUXnRPkPQg2bHPetf +GKdOQz5CMWwnT2IXwyaCi4j7LGZNrIyVbvfd1Rz9dD1xX0ZHBZWUXVGehinuZdXA +yfOjzSzsIZZz6B6WKp4tSDMYiirhsZOnV4R4HYoYn/DwTZtMuzlroHSkeFC5Vdn4 ++rQTRTOXbA9z5bCN5nIZFTg9tbNfps35HTk9/Grw9eEnome3SPyk2gX9dTqY4hhD +JBtMcQpHyoHZJejn4PUk6VGKh9a0rjCxEf/A2buPu2rvlR7OE56qnphTozAad5rW +Whrrkr4MMb+sXK/FKUNL/neCPIoZKpih3yl6+/K0qO1SbDrFfmLmcWd/7CsqYwfo +QN4ebrctF4G/8KoISti3iRXc2R0i4ea/tkh1F+EM90rxD+TMCVFNfbnAr/FafkKq +lIooJTC6QTNxxXbropTiwbrf/hvK/rMTrbPzjvY/q744ZJmUPHOcvQEGD2KIcViK +inCyEF8VyzM8JI6zVI7xdkf7onnKkoHME/toCzIl+U8dYZNQEAJj1kJT/uLAgXtg +U9tr+16ZUwuSDvmhgZWjDQOWnnmNC+vMyvshpIELEVQkQp/m7oZI2i0laZB0di1r +lIcqP+uvIVBXmqn2YF+JrkNaeMeKMVlOj5z8ouuCSbN+BtPipWme7EpqFc0CAwEA +AQKCAgBSCERY0KVTHotPxhXFrvhDJa34tInkNXAPgs+Eqg7FupLFCRbowJBThL1d +ri2lYMOZaVbKgoP6jzYYm2sug22KcG51n641XxbyfrNiiGf99uu/acRpWwlDeiDI +wgxztHd9fS76Vy/j3B2bSMhYPhmrHzUZH/qaXdv/C6GmL5fj5yjiP64524lMPZAZ +eQ2Hqh8ZYxbnQbCvR+tGixftKngQqNpRQM9SJsC202bJwzwvPensoUQgpbOXkTbE +WVNtI0GfYWt4RFm7TAiJMCKS9mobcCz/U78P7K8dFtDUCUnBkcX3s4QtsMU9Muao +YID0ldCSpCxIPFbB0nKhA64kKOBUylTnAjwfTKp6F/PPl/RLxT3xxHG8oTW9OWyD +3CjnG+EjLYnOypPKxVj8azs/K18AxyIOk+8imtqde9IHLV7OZC+jtKjTwqcVn0bi +rselH/S0NTdp1ksY2mfYQ1lkUMyfiohPMLSf6HJFZkpjWRICltLjpMbiNDuW7XdM +bUpE57yqXt1NSRqu1S8PaKI2qQQYotajdo2w4Ew511zwmtQwYI+TxaYvQI+Yl1tS +hU1sGJaCcojfKx0T/27SfKaKrjzGqebt4ag+LarZGvjVf4C7DiA6aw4zOGn8PMJl +1tr2GXx9hE9osrEgJP7VHw+6RlltDMjBqVvLa6oBDivBdBukAQKCAQEA/dG93DkQ +CeSdmWjGc1MTngLpERt/EAs2KJ+gGw37yRN/By3/Z52lVwfyzSfVxEZEWHzAj3rx +DGPsXTr7rEtyXISZdtloP0/nHQn1Tv0YoOpjKi8QsfirgghRwUYyXAcnFqEQsa24 +5BmsX4I7XE4+D2q+YdogmHVS69xMQWXpO13tS1RqE6VQ+XNTDAUgswKkB9PuwGP6 +21GASqrR9Gk/ZxBYJrp5Z6Qut3DkJSndZhraj5sInfi65DXPqSkw40ZsEmfrk/qs +fub+KTpyDknuKIOj66dFA7k1bbCm13mdjAzK/uoU7O4JfURijPxpo9GVjolqKeWr +M6LP5ITKa3J6QQKCAQEAwgPrCb4Tv1pizF4y2g1gB7KRpd4mpX5VG043BPh+hqyg +AoPkbt+iV2II9ye8/RwjiNSaoT+dRRrWXQyCIaDOnBJQLwgqPs0HPhzN++I6YL3n +In0uQLvNgyXCyf89xOFyixf5+PpXnItA5T5ciFi9yccY7zEG/91gC+GB1XQEkVmP +m8Vi6HUF14/jGEIjgeUTkFTXZdxS6kpP7p6sXyq6T2Q0a9KeVqBBP9XeBZZ03VSl +/PNyY4aq7x5HslfpMNAS44oNKQFSN+06NkYhjMFfDrrrb03VlwhbJas1sDjYi+rD +3ZeaMpwvxkUg//ApgiEXfffAaUQLGO09+jsl3azAjQKCAQBnpp5c72SQVa7SNgpM +kBGDxnZ9CPiDicCNKFqOkdBPlcmbGfqhyqv5dYJ+qxTNuVAxvog4T6FeSPP+QpcC +DjFefLva3/+FU1Dy990Ya50CIZVrZZrwwrbvPAx+2/a2xCj/Qbj6hhHp/F37BsjM +8hq/2vxyI0yKVecN8IGnd0Gef8XmrEtBSJJfu+ufDf0DfUGU/MQUBwArTgYQ998T +a2N76B3HewEXBOIbAVv5nTYPe0njuRD0yd0wUpVB5FNVjK2Xep6maIjGrff+yCJJ +mYFLRC7NjhpN4fVinPAVMFHZHmRLYzY2ZyKy6BlCr9VIE896TL1w7JxUUtmI3X14 +EWDBAoIBAQCn9TphKcLwse+72oSNTmzm3QjHngS42iAVTmXFENaAAitXYhS8gy+I +FF+Mj0NFnzmH9/2RQIAG1g/jZ7O0JwEWDaiKvrfLvDTb6ZXMy/Eb1OqmadZDxhFI +ysTRl/xCV6WQkoYdq6Ny6v6YNp9mjeRnLMwCLeBQWrYOMv/x6MkXh4ASKxPQB5ay +IWdIleElT0nbdgcusEi7eO+vtH+mt1eo6SeUfDYE6iDygVP+ZFzxSpmT3LEXRfru +nLkWxJIkZs0jXFy+Nd2WevEdESN0Nebz2o98wNX6NQqrFoeY8e1NW0SKrfaYf6vA +KhJCXwegFsO+kl9pAbXVs3QnD1Ndj3L1AoIBADUYFjD5y071ayhiunkwVekq4+wj +nbmqyaV5lWPU5XPBga6E3Tiah4Kt6C/LMSx3Q46jeEHTZOnCOr0KSk4BKf+WQaXN +4ueRdCWRIjdwxa37qCsg+MDf0iyHmnWp2y6IShhAwMC6konSqUkcez1ssqsChKt6 +dCxLeZEHuiFT6305E/xHZm/tWu9wbhhZecUElP+CyJ62GYtePzHKO+ZsdXywaiD4 +mZkq8ko6GIWkI7clasfdhjFqZ5GYA9Cv0OVQ6+MbFJnRPhCvz+iuAhAqXVE+nPhb +fSQOenyBtwtA3vRYYQR/2Z3xpydKzUiw1JcWf/etRwdtwpRfjEBTlzcQaHs= +-----END RSA PRIVATE KEY----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh new file mode 100755 index 0000000000..e1f1af5b54 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env sh +# +# Usage: regenerate.sh +# +# regenerate.sh regenerates certificates that are used to test gRPC with TLS +# Make sure you run it in test/certs directory. +# It also serves as a documentation on how existing certificates were generated. + +rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key + +openssl genrsa -nodes -des3 -out ca.key 4096 +openssl req -nodes -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" + +openssl genrsa -nodes -des3 -out server.key 4096 +openssl req -nodes -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" +openssl x509 -req -nodes -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt +openssl rsa -nodes -in server.key -out server.key + +openssl genrsa -nodes -des3 -out client.key 4096 +openssl req -nodes -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" +openssl x509 -nodes -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt +openssl rsa -nodes -in client.key -out client.key diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt new file mode 100644 index 0000000000..09094e4526 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV +BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAyNzMyWhcN +MjIwNjA3MjAyNzMyWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT +ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBANaRv7jpdEedG0CQ/LoJEXuE32eZXzar45u05wq5CzqnUlYdHyx8 +cgCJJ44KThFXiOzgELFiiwjxmPo1CDLqGp8vEDHntvhxLhw/mFy/aa7YrCv1/1eX +0+cEvNUyoikjHKXECI7sV1ZVMrimGKXQNqRfub1JbJ+IzL+kp6MRtdA6GzxsU0Dg +Wwf7IQxtCQ4Tw3onJ3P3NZAkgz6zCVhOVkR7DuqGulzTQDa//mWwKQJie5wscURj +vLsJ0prS16Tc/5yXijwRjwx8ZEoDrJ5KszoMQwKIoLN7wHBo2r8/8RQsOGTVMJ1I +9kOkH3s9clswxCrnpzdNNmyIwTWaQ6CqpQpp0unGimF3VokanHhOhcpkWfzDArmU +jL4PIFBQBJvHIEKbuhZ4pUYL/6RtgEg2f3xVPe8s0hn/DzwJTgXqEX+TY7WvIKmH +0sMGZ9TZzWe9W64LM2/427+6pfgQOAJDHNLSYpmaa14R+630IMocdY6sj2hoZ9TK +8Ridqn+q+5kIpG/pP7bbzbzsotdzjNb6h7GBlsuyycoOfiP+C6Zs/yUZAAZEsSm0 +e4dXFCccurkXRL7cZJHC/agQhkkvcEP1TpmaygjbucME+h6H0G0St8yzBQwEJdkn +wNmfEhIdjmiX6u/fvPO6VJ5HBxgA5gONJlk+4EbiZTfl2rYauBFhloHzAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBACIJLqVoH8oh8W0/0IF3sxH8LFsGByi0CUPo1JEB +1t3+FqyC7eFC9rDW12LfOKgiZl273OBpCHT8bx3OkoGZ4KwZsbsznyJv/X5OVYFH +5y5Lo8QNGWWMzXoK2JLlYJXZHMaJr5tTFOGqoIvC9C8ibLSAbL0MhtB9L5SvSxAm +mUOKZ/en7ZBepRex/s/rfCWYYTw2Ah02HZc8+H/J/aF3tvChI7Gx0anaSQxS48Ru +3eCaiaBEfoSGQvN9Jc+k1QJgJ4vZ8yi7ndl8pwW97YXo8Sg305ritqpnon+vemsV +rYoqHN+WV2/D0nqNu1AX8PldDvUYTfBtLfS7T5goN7abEIJCaTNmzU2ji0SqI9vJ +j4t9E9KcCKMshbciDrD7RPEPk3vogEDD3uygFwcPwUQfpCUFbRJOnTSH1oB/aUC4 +x9DnYSHBdDvaBmu0pBpoddJ+0pbw02P7YL9kPz5OnOAN06JP4McIYz5ytKoSt/m8 +Z7cUnvn7TRVNLuiapwpB0gtRmb9JY1q3pd63+X0SCaBEtUH+PWcRcS7eDsgMwEym +0CyANhCQYJjcKugIWLYtN/0/p2bIKcRmcH3iJiN2zZtP1AF6G7a4mp+21OynvFOc +3+ojTDGJxxD3uPtKEhJXRgYMOmfAEn3rgtoln1kkNYcd7f2EIulckwB2yeM1IMud +0le7 +-----END CERTIFICATE----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr new file mode 100644 index 0000000000..bb61322340 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH +DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy +dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDWkb+46XRHnRtAkPy6CRF7hN9nmV82q+ObtOcKuQs6p1JWHR8sfHIA +iSeOCk4RV4js4BCxYosI8Zj6NQgy6hqfLxAx57b4cS4cP5hcv2mu2Kwr9f9Xl9Pn +BLzVMqIpIxylxAiO7FdWVTK4phil0DakX7m9SWyfiMy/pKejEbXQOhs8bFNA4FsH ++yEMbQkOE8N6Jydz9zWQJIM+swlYTlZEew7qhrpc00A2v/5lsCkCYnucLHFEY7y7 +CdKa0tek3P+cl4o8EY8MfGRKA6yeSrM6DEMCiKCze8BwaNq/P/EULDhk1TCdSPZD +pB97PXJbMMQq56c3TTZsiME1mkOgqqUKadLpxophd1aJGpx4ToXKZFn8wwK5lIy+ +DyBQUASbxyBCm7oWeKVGC/+kbYBINn98VT3vLNIZ/w88CU4F6hF/k2O1ryCph9LD +BmfU2c1nvVuuCzNv+Nu/uqX4EDgCQxzS0mKZmmteEfut9CDKHHWOrI9oaGfUyvEY +nap/qvuZCKRv6T+228287KLXc4zW+oexgZbLssnKDn4j/gumbP8lGQAGRLEptHuH +VxQnHLq5F0S+3GSRwv2oEIZJL3BD9U6ZmsoI27nDBPoeh9BtErfMswUMBCXZJ8DZ +nxISHY5ol+rv37zzulSeRwcYAOYDjSZZPuBG4mU35dq2GrgRYZaB8wIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBALQRbWtd7VIT7PI0g2TJY2nyFDZ+iNLlsqtlTQ+3 +9tDUNf911AyXGFBH2OaIg49UEl3Dn3ErAH6nZluZhRNjZRUYfE2dSEVYoeAA3SmE +FElARM1CX4dQUDnV++RLLRIKKGfcnwU+vSEWN4QfXs9qjI2UK80CBr6kPEt+bMfR +wUIax5HT1XLECoLph1rNza0h3WNk5ndEJMAt51U0JNAi6PwDF04ZfnX5E2RtiEjV ++3DPW1HYlX2hepkXVJPB568bbpmWLrmJsHjVZy4vmDoQi2bzS/QPsepgQ3aXxNel +vTxh0Or5SdIRRfNnP/Ov/aYjBxzkcKY83ADh7h1aqMOlUyFenHoMfTWnMYkeNY+1 +dOoLUS/ZNA6IH54UO7uY0uOcwCfRPYZzDxZI0IkjogX0aizixSs5duQx0ux3sUOo +a4zxMNPd89ppbCMZDS7biC7cOAsdDYXKcE5ijpc5CQXVo4/dA2xyfisRT7WUq9ay +vmQoYfMCAkGv47BVYhzASyPIXuFP2/HDbtnBvZ2aeSuMAwhHzj3vX9js2HGy7t2V +kj36LymQv+YBp9mV9/crSqy0DNFAYOWOuig0mQX/SPedGa4jf9v4OhANi+kzgxtQ +hBTcA0OtJyrVxesVGGK0YwaQIIZ8jwhsK3ljlZpOfVUflHl2/etME1DXtU37U9xA +fuw0 +-----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key new file mode 100644 index 0000000000..ddac188c23 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEA1pG/uOl0R50bQJD8ugkRe4TfZ5lfNqvjm7TnCrkLOqdSVh0f +LHxyAIknjgpOEVeI7OAQsWKLCPGY+jUIMuoany8QMee2+HEuHD+YXL9prtisK/X/ +V5fT5wS81TKiKSMcpcQIjuxXVlUyuKYYpdA2pF+5vUlsn4jMv6SnoxG10DobPGxT +QOBbB/shDG0JDhPDeicnc/c1kCSDPrMJWE5WRHsO6oa6XNNANr/+ZbApAmJ7nCxx +RGO8uwnSmtLXpNz/nJeKPBGPDHxkSgOsnkqzOgxDAoigs3vAcGjavz/xFCw4ZNUw +nUj2Q6Qfez1yWzDEKuenN002bIjBNZpDoKqlCmnS6caKYXdWiRqceE6FymRZ/MMC +uZSMvg8gUFAEm8cgQpu6FnilRgv/pG2ASDZ/fFU97yzSGf8PPAlOBeoRf5Njta8g +qYfSwwZn1NnNZ71brgszb/jbv7ql+BA4AkMc0tJimZprXhH7rfQgyhx1jqyPaGhn +1MrxGJ2qf6r7mQikb+k/ttvNvOyi13OM1vqHsYGWy7LJyg5+I/4Lpmz/JRkABkSx +KbR7h1cUJxy6uRdEvtxkkcL9qBCGSS9wQ/VOmZrKCNu5wwT6HofQbRK3zLMFDAQl +2SfA2Z8SEh2OaJfq79+887pUnkcHGADmA40mWT7gRuJlN+Xathq4EWGWgfMCAwEA +AQKCAgAOCE4fi7T9Efs8R78fc4RfLZtmrRMbAjbKchRCEUP4vASYeSMWx7S08ENT ++LyOSck8pJKy5xzsotA8XMeCfOjszCkk+mBu8wfu9QHD3wjMVIM+BMKEOfuzug2X +a85LHm67MIzWvAIiNUQx6zrlbS6FpXUCOhEOheXOCrij436edY5ebz8qmQGbDgNl +SqQy9XvtOy5LWTl5icnDifXsfoMJy3p4QANkGrSyX/AFOnYUH9ixp/5oWJV5LfVG +Bs/vijx1QzvZHdTbHi9437CkUYJTI4YmXkUUN92n/FOB+m6LwTCW95JMVv80AUHF +z4jxCclqfOfkp/oNMwxfsw0FLuPIIcy0StssnTAXoOXDKzJm+nkVAqvIs+io6IuH +if+Ehng3N2uZFTD3LdJHDYQnLUJHR53WOdj5lUaqH0KHBFaz1bRyCjgNRbxR7psU +3CfbIhePFR3vw75LDFeEtDLOQuxTDuE+8M97RAta7oiPZjjiiY8qep+Z5MEdMpp9 +7L9ziqFntebz/H9y0QCxEIy99RbBc39WXt55sGknSs7cK6dWnAhNi8T2eFmgBMmX +t2JVYQ8ZDS92HsN40BRHEyUEpd8Dl9cDGDNQKGu0PpcwKA8S2liOVH45g99TelDv +hgc/vt15BFfdFz5zaWN3F5CEN7YaGr57OPTdeZJBxvZGIcg2QQKCAQEA/q7U/WCH +0yWNSE87JtrFfacRMAXtkX2b+AHZZM9F6iyOJnUYAuK5cUzbLCb3C0OQTwwluviy +md9oLddcI7ZPE1i2qhU1vhlvSRIpfJ+VoW2DNUKmkpAizlnEvvbSBkoNn1U8c2RK +WbyavfsFpZ8pVrkqAxjlHgO0zCOMvke2sUZrBietGMpGr08SnbZwFntQ/R9KVrT3 +oa9Aku5cDr1l2hm2GLuTG0ocnrlxV2NJ+gaCRcMAlboBfsIoE7bfn/Vt1Ea/UqrQ +Ym9ETc9fIjLC+FvIXBdY67mqjigyZI8DUee644eVONRblAv0j7JnpqxZl1mGyqiP +YiEvN4lFCkNhcQKCAQEA163Pw9HXOwaG7ofFCqpKu3OEvCc9/nA0S6eZHLh4RJkN +9FMt9Rmczb1doqK+Jnz+qoDCLTVNOARC1sQOTqzji1/yUUEAC5Hs8yZlSYuE0oqW +jA3hyc0PFm7H8OF5e2J68ZIX3PAi61ZuPuX7ApZSE2+ByHRLwcW7hJ1BkugwlPOP +nrlQZQiFJRtCykL1p3CwqLwzsv8qpu8o8hf50oT8kMs4olABE8CBoa4ufDrWe3ew +kN3Q1bmzf2x/RrlI7JptbT202zi8p86LuYAdJ+AC1dBJcoGKBjittrKS+Ps6YYjj +Z+haI6JEYZPHKJgWNmAWTQ+m66bFhFaI2G2wBqtnowKCAQAh7/An114iD8X01cH/ +GnXomYObz55pncBT2wM6ALjDTK6gh0fs0oN9io1GI+cVlCo9rlO0x4EdKfz65tC7 +XYbKAC9PGMZxj3gZ15a5qZZJzYsHZNtHend44dNq0v8HoYSRL81/XuTdcll4aWPG +PyBGEyR7By04w6uq7C3MCUhZ9RU727ugKwwiPjov0+i5xjLzl+DTDwhUfkLvkV2p +BSn2VyjBwPUIVObda76js3JfI9DmNOb2DLQ4TO0EO4EvEohRGiBShrp/8225pKF7 +sCH08F4Rj3bk6nfEu6yDY99AYc2wlheXXAzb/H/ZSh+vwRWrKl3g0XdRzzQ4hU0y +4emxAoIBAH2IhBJE09JeNTEmwxA3F/JNBWgCKzoqErYqIZsu34mF0DJyK6CqPLMf +Uh20PZrnS87vzJVFneFJ0aFxUaaHSJW5za9vdthFIjZQFcods7xbv85a0h2EBhEX +f7Z7dhrTsh1i3BLTjm+NyfNAJr5VwgXf9Bk5X1K0hTVl1mHsVUKNFP3cfKehsuVr +HY/eM1823wwHJsw7apbpQtrOC7F1iA+6yQboLAhUFt+FIzdZg7cvbgyTntaXFJvJ +CbefZouYQrK/pMGoH15IgNkCcXXhE6Vhay6DqVN/r9RT0emrSEq2wy2adsSg0M4+ +lj/RbbRObwyBXLVyRyqEt3fJOBhZsaMCggEBAIxcTLc4JPH/TxlFKTusALlR4CRG +XHDlTdMR4kWfsmWxWxocwcyGIshNpylox+MLzHw1JI4o5AyVrP8GD9Lzea2l649Y +vBLZjSan+ucJGkWnZPUG8sqo/Wg1mm2ZotQGfXmTaoOg9nN37YZvyDr3qgpQghZ2 +LhFNCaccJcoUZfW+snM9Q3Isiz6DmKfc92eq3goHfhmTInYq+b30Z9nO7nDV9oll +eeurRN0aCnfvRTAMoy17gt5/h9jg7w9kcbP6wyxixlBvTKQqxkBA1wfa2kBQ6TOK +JSldpu7eAHZ8IHEraQ70Drd/Qr77Witm59F5TX0Vxut7/A1dEjWuP9SY4do= +-----END RSA PRIVATE KEY----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintignore b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintignore @@ -0,0 +1 @@ +build diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js new file mode 100644 index 0000000000..e41d9a9299 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js @@ -0,0 +1,9 @@ +module.exports = { + "env": { + "mocha": true, + "commonjs": true, + "node": true, + "browser": true + }, + ...require('../../../eslint.config.js') +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.npmignore b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.npmignore new file mode 100644 index 0000000000..9505ba9450 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.npmignore @@ -0,0 +1,4 @@ +/bin +/coverage +/doc +/test diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/LICENSE b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/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/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md new file mode 100644 index 0000000000..1a9da205cb --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md @@ -0,0 +1,131 @@ +# OpenTelemetry Collector Metrics Exporter for web and node + +[![NPM Published Version][npm-img]][npm-url] +[![dependencies][dependencies-image]][dependencies-url] +[![devDependencies][devDependencies-image]][devDependencies-url] +[![Apache License][license-image]][license-image] + +This module provides exporter for web and node to be used with [opentelemetry-collector][opentelemetry-collector-url] - last tested with version **0.25.0**. + +## Installation + +```bash +npm install --save @opentelemetry/exporter-metrics-otlp-http +``` + +## Service Name + +The OpenTelemetry Collector Metrics Exporter does not have a service name configuration. +In order to set the service name, use the `service.name` resource attribute as prescribed in the [OpenTelemetry Resource Semantic Conventions][semconv-resource-service-name]. +To see sample code and documentation for the traces exporter, visit the [Collector Trace Exporter for web and node][trace-exporter-url]. + +## Metrics in Web + +The OTLPMetricExporter in Web expects the endpoint to end in `/v1/metrics`. + +```js +import { MeterProvider } from '@opentelemetry/sdk-metrics-base'; +import { OTLPMetricExporter } from '@opentelemetry/exporter-otlp-http'; +const collectorOptions = { + url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics + headers: {}, // an optional object containing custom headers to be sent with each request + concurrencyLimit: 1, // an optional limit on pending requests +}; +const exporter = new OTLPMetricExporter(collectorOptions); + +// Register the exporter +const meter = new MeterProvider({ + exporter, + interval: 60000, +}).getMeter('example-meter'); + +// Now, start recording data +const counter = meter.createCounter('metric_name'); +counter.add(10, { 'key': 'value' }); + +``` + +## Metrics in Node + +```js +const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); +const { OTLPMetricExporter } = require('@opentelemetry/exporter-otlp-http'); +const collectorOptions = { + url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics + concurrencyLimit: 1, // an optional limit on pending requests +}; +const exporter = new OTLPMetricExporter(collectorOptions); + +// Register the exporter +const meter = new MeterProvider({ + exporter, + interval: 60000, +}).getMeter('example-meter'); + +// Now, start recording data +const counter = meter.createCounter('metric_name'); +counter.add(10, { 'key': 'value' }); + +``` + +## GRPC + +For exporting metrics with GRPC please check [exporter-metrics-otlp-grpc][npm-url-grpc] + +## PROTOBUF + +For exporting metrics with PROTOBUF please check [exporter-metrics-otlp-proto][npm-url-proto] + +## Configuration options as environment variables + +Instead of providing options to `OTLPMetricExporter` and `OTLPTraceExporter` explicitly, environment variables may be provided instead. + +```sh +OTEL_EXPORTER_OTLP_ENDPOINT=https://localhost:4317 +# this will automatically append the version and signal path +# e.g. https://localhost:4317/v1/traces for `OTLPTraceExporter` and https://localhost:4317/v1/metrics for `OTLPMetricExporter` +``` + +If the trace and metric exporter endpoints have different providers, the env var for per-signal endpoints are available to use + +```sh +OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://trace-service:4317/v1/traces +OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://metric-service:4317/v1/metrics +# version and signal needs to be explicit +``` + +> The per-signal endpoints take precedence and overrides `OTEL_EXPORTER_OTLP_ENDPOINT` + +For more details, see [OpenTelemetry Specification on Protocol Exporter][opentelemetry-spec-protocol-exporter]. + +## Running opentelemetry-collector locally to see the metrics + +1. Go to examples/otlp-exporter-node +2. run `npm run docker:start` +3. Open page at `http://localhost:9411/zipkin/` to observe the metrics + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-http +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-http +[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-http&type=dev +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-http&type=dev +[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-metrics-otlp-http +[npm-url-grpc]: https://www.npmjs.com/package/@opentelemetry/exporter-metrics-otlp-grpc +[npm-url-proto]: https://www.npmjs.com/package/@opentelemetry/exporter-metrics-otlp-proto +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-metrics-otlp-http.svg +[opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector +[opentelemetry-spec-protocol-exporter]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options +[semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service +[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-otlp-http diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/karma.conf.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/karma.conf.js new file mode 100644 index 0000000000..4c60b54edb --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/karma.conf.js @@ -0,0 +1,26 @@ +/*! + * 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 + * + * 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. + */ + +const karmaWebpackConfig = require('../../../karma.webpack'); +const karmaBaseConfig = require('../../../karma.base'); + +module.exports = (config) => { + config.set(Object.assign({}, karmaBaseConfig, { + webpack: karmaWebpackConfig, + files: ['test/browser/index-webpack.ts'], + preprocessors: { 'test/browser/index-webpack.ts': ['webpack'] } + })) +}; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json new file mode 100644 index 0000000000..3429637107 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -0,0 +1,95 @@ +{ + "name": "@opentelemetry/exporter-metrics-otlp-http", + "version": "0.25.0", + "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "scripts": { + "compile": "tsc --build tsconfig.json tsconfig.esm.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", + "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "tdd": "npm run test -- --watch-extensions ts --watch", + "tdd:browser": "karma start", + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", + "test:browser": "nyc karma start --single-run", + "version": "node ../../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json", + "precompile": "lerna run version --scope $(npm pkg get name) --include-filtered-dependencies", + "prewatch": "npm run precompile" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "tracing", + "profiling", + "metrics", + "stats" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@babel/core": "7.15.0", + "@opentelemetry/api": "^1.0.2", + "@types/mocha": "8.2.3", + "@types/node": "14.17.11", + "@types/sinon": "10.0.2", + "@types/webpack-env": "1.16.2", + "babel-loader": "8.2.2", + "codecov": "3.8.3", + "cpx": "1.5.0", + "istanbul-instrumenter-loader": "3.0.1", + "karma": "5.2.3", + "karma-chrome-launcher": "3.1.0", + "karma-coverage-istanbul-reporter": "3.0.3", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.32", + "karma-webpack": "4.0.2", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "3.0.2", + "sinon": "11.1.2", + "ts-loader": "8.3.0", + "ts-mocha": "8.0.0", + "typescript": "4.3.5", + "webpack": "4.46.0", + "webpack-cli": "4.8.0", + "webpack-merge": "5.8.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + }, + "dependencies": { + "@opentelemetry/api-metrics": "0.25.0", + "@opentelemetry/core": "0.25.0", + "@opentelemetry/resources": "0.25.0", + "@opentelemetry/sdk-metrics-base": "0.25.0", + "@opentelemetry/sdk-trace-base": "0.25.0" + } +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.esm.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.esm.json new file mode 100644 index 0000000000..379f547a46 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.esm.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.base.esm.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "build/esm", + "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" + }, + "include": [ + "src/**/*.ts" + ] +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json new file mode 100644 index 0000000000..ed9d0830bd --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] +} From 961827414d84fda2d9932f187d835072b22e66ca Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 21 Sep 2021 00:36:48 -0700 Subject: [PATCH 05/17] feat\!: migrated metric exporter logic to exporter-metrics-otlp-http --- .../package.json | 1 - .../package.json | 4 +- .../src/index.ts | 18 + .../platform/browser/OTLPMetricExporter.ts | 10 +- .../src/platform/browser/index.ts | 17 + .../src/platform/index.ts | 17 + .../src/platform/node/OTLPMetricExporter.ts | 10 +- .../src/platform/node/index.ts | 17 + .../src/transformMetrics.ts | 28 +- .../browser/CollectorMetricExporter.test.ts | 7 +- .../test/browser/index-webpack.ts | 23 + .../common/CollectorMetricExporter.test.ts | 8 +- .../test/common/transformMetrics.test.ts | 2 +- .../test/metricsHelper.ts | 448 ++++++++++++++++++ .../test/node/CollectorMetricExporter.test.ts | 5 +- .../test/node/nodeHelpers.ts | 36 ++ .../package.json | 2 - .../src/index.ts | 3 +- .../src/platform/browser/index.ts | 2 +- .../src/platform/index.ts | 1 + .../src/platform/node/index.ts | 1 - .../test/helper.ts | 353 -------------- 22 files changed, 612 insertions(+), 401 deletions(-) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/index.ts rename {packages/opentelemetry-exporter-otlp-http => experimental/packages/opentelemetry-exporter-metrics-otlp-http}/src/platform/browser/OTLPMetricExporter.ts (85%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/index.ts create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/index.ts rename {packages/opentelemetry-exporter-otlp-http => experimental/packages/opentelemetry-exporter-metrics-otlp-http}/src/platform/node/OTLPMetricExporter.ts (90%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/index.ts rename {packages/opentelemetry-exporter-otlp-http => experimental/packages/opentelemetry-exporter-metrics-otlp-http}/src/transformMetrics.ts (88%) rename {packages/opentelemetry-exporter-otlp-http => experimental/packages/opentelemetry-exporter-metrics-otlp-http}/test/browser/CollectorMetricExporter.test.ts (98%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/index-webpack.ts rename {packages/opentelemetry-exporter-otlp-http => experimental/packages/opentelemetry-exporter-metrics-otlp-http}/test/common/CollectorMetricExporter.test.ts (95%) rename {packages/opentelemetry-exporter-otlp-http => experimental/packages/opentelemetry-exporter-metrics-otlp-http}/test/common/transformMetrics.test.ts (99%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts rename {packages/opentelemetry-exporter-otlp-http => experimental/packages/opentelemetry-exporter-metrics-otlp-http}/test/node/CollectorMetricExporter.test.ts (98%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/nodeHelpers.ts diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index d622300d75..4e1eaf2d49 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -48,7 +48,6 @@ }, "devDependencies": { "@babel/core": "7.15.0", - "@opentelemetry/api": "^1.0.2", "@opentelemetry/api-metrics": "0.25.0", "@types/mocha": "8.2.3", "@types/node": "14.17.11", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 3429637107..56d44652e6 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -56,7 +56,6 @@ }, "devDependencies": { "@babel/core": "7.15.0", - "@opentelemetry/api": "^1.0.2", "@types/mocha": "8.2.3", "@types/node": "14.17.11", "@types/sinon": "10.0.2", @@ -89,7 +88,6 @@ "@opentelemetry/api-metrics": "0.25.0", "@opentelemetry/core": "0.25.0", "@opentelemetry/resources": "0.25.0", - "@opentelemetry/sdk-metrics-base": "0.25.0", - "@opentelemetry/sdk-trace-base": "0.25.0" + "@opentelemetry/sdk-metrics-base": "0.25.0" } } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/index.ts new file mode 100644 index 0000000000..f4e0549034 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/index.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. + */ + +export * from './platform'; +export { toOTLPExportMetricServiceRequest } from './transformMetrics'; diff --git a/packages/opentelemetry-exporter-otlp-http/src/platform/browser/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts similarity index 85% rename from packages/opentelemetry-exporter-otlp-http/src/platform/browser/OTLPMetricExporter.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts index 7d3840f4c3..7d83993cdf 100644 --- a/packages/opentelemetry-exporter-otlp-http/src/platform/browser/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts @@ -15,12 +15,10 @@ */ import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import { OTLPExporterConfigBase } from '../../types'; -import * as otlpTypes from '../../types'; -import { OTLPExporterBrowserBase } from './OTLPExporterBrowserBase'; +import { otlpTypes, appendResourcePathToUrlIfNotPresent } from '../../../../../../packages/opentelemetry-exporter-otlp-http'; +import { OTLPExporterBrowserBase } from '../../../../../../packages/opentelemetry-exporter-otlp-http/build/esm' import { toOTLPExportMetricServiceRequest } from '../../transformMetrics'; import { getEnv, baggageUtils } from '@opentelemetry/core'; -import { appendResourcePathToUrlIfNotPresent } from '../../util'; const DEFAULT_COLLECTOR_RESOURCE_PATH = '/v1/metrics'; const DEFAULT_COLLECTOR_URL=`http://localhost:55681${DEFAULT_COLLECTOR_RESOURCE_PATH}`; @@ -37,7 +35,7 @@ export class OTLPMetricExporter // Converts time to nanoseconds private readonly _startTime = new Date().getTime() * 1000000; - constructor(config: OTLPExporterConfigBase = {}) { + constructor(config: otlpTypes.OTLPExporterConfigBase = {}) { super(config); this._headers = Object.assign( this._headers, @@ -57,7 +55,7 @@ export class OTLPMetricExporter ); } - getDefaultUrl(config: OTLPExporterConfigBase): string { + getDefaultUrl(config: otlpTypes.OTLPExporterConfigBase): string { return typeof config.url === 'string' ? config.url : getEnv().OTEL_EXPORTER_OTLP_METRICS_ENDPOINT.length > 0 diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/index.ts new file mode 100644 index 0000000000..7b73804ce4 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/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 './OTLPMetricExporter'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/index.ts new file mode 100644 index 0000000000..cdaf8858ce --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/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 './node'; diff --git a/packages/opentelemetry-exporter-otlp-http/src/platform/node/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts similarity index 90% rename from packages/opentelemetry-exporter-otlp-http/src/platform/node/OTLPMetricExporter.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts index 5d3b645591..a126db7eb6 100644 --- a/packages/opentelemetry-exporter-otlp-http/src/platform/node/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts @@ -15,12 +15,14 @@ */ import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import * as otlpTypes from '../../types'; -import { OTLPExporterNodeConfigBase } from './types'; -import { OTLPExporterNodeBase } from './OTLPExporterNodeBase'; +import { + OTLPExporterNodeBase, + OTLPExporterNodeConfigBase, + otlpTypes, + appendResourcePathToUrlIfNotPresent +} from '../../../../../../packages/opentelemetry-exporter-otlp-http'; import { toOTLPExportMetricServiceRequest } from '../../transformMetrics'; import { getEnv, baggageUtils } from '@opentelemetry/core'; -import { appendResourcePathToUrlIfNotPresent } from '../../util'; const DEFAULT_COLLECTOR_RESOURCE_PATH = '/v1/metrics'; const DEFAULT_COLLECTOR_URL=`http://localhost:55681${DEFAULT_COLLECTOR_RESOURCE_PATH}`; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/index.ts new file mode 100644 index 0000000000..7b73804ce4 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/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 './OTLPMetricExporter'; diff --git a/packages/opentelemetry-exporter-otlp-http/src/transformMetrics.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts similarity index 88% rename from packages/opentelemetry-exporter-otlp-http/src/transformMetrics.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts index cc0f580883..560a215258 100644 --- a/packages/opentelemetry-exporter-otlp-http/src/transformMetrics.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts @@ -24,9 +24,7 @@ import { MetricRecord, } from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; -import { OTLPExporterBase } from './OTLPExporterBase'; -import { toCollectorResource } from './transform'; -import { OTLPExporterConfigBase, opentelemetryProto } from './types'; +import { OTLPExporterBase, otlpTypes, toCollectorResource } from '../../../../packages/opentelemetry-exporter-otlp-http'; /** * Converts labels @@ -34,7 +32,7 @@ import { OTLPExporterConfigBase, opentelemetryProto } from './types'; */ export function toCollectorLabels( labels: Labels -): opentelemetryProto.common.v1.StringKeyValue[] { +): otlpTypes.opentelemetryProto.common.v1.StringKeyValue[] { return Object.entries(labels).map(([key, value]) => { return { key, value: String(value) }; }); @@ -46,9 +44,9 @@ export function toCollectorLabels( */ export function toAggregationTemporality( metric: MetricRecord -): opentelemetryProto.metrics.v1.AggregationTemporality { +): otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality { if (metric.descriptor.metricKind === MetricKind.VALUE_OBSERVER) { - return opentelemetryProto.metrics.v1.AggregationTemporality + return otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality .AGGREGATION_TEMPORALITY_UNSPECIFIED; } @@ -63,7 +61,7 @@ export function toAggregationTemporality( export function toDataPoint( metric: MetricRecord, startTime: number -): opentelemetryProto.metrics.v1.DataPoint { +): otlpTypes.opentelemetryProto.metrics.v1.DataPoint { return { labels: toCollectorLabels(metric.labels), value: metric.aggregator.toPoint().value as number, @@ -82,7 +80,7 @@ export function toDataPoint( export function toHistogramPoint( metric: MetricRecord, startTime: number -): opentelemetryProto.metrics.v1.HistogramDataPoint { +): otlpTypes.opentelemetryProto.metrics.v1.HistogramDataPoint { const { value, timestamp } = metric.aggregator.toPoint() as { value: Histogram; timestamp: HrTime; @@ -106,8 +104,8 @@ export function toHistogramPoint( export function toCollectorMetric( metric: MetricRecord, startTime: number -): opentelemetryProto.metrics.v1.Metric { - const metricCollector: opentelemetryProto.metrics.v1.Metric = { +): otlpTypes.opentelemetryProto.metrics.v1.Metric { + const metricCollector: otlpTypes.opentelemetryProto.metrics.v1.Metric = { name: metric.descriptor.name, description: metric.descriptor.description, unit: metric.descriptor.unit, @@ -161,16 +159,16 @@ export function toCollectorMetric( * @param collectorMetricExporterBase */ export function toOTLPExportMetricServiceRequest< - T extends OTLPExporterConfigBase + T extends otlpTypes.OTLPExporterConfigBase >( metrics: MetricRecord[], startTime: number, collectorExporterBase: OTLPExporterBase< T, MetricRecord, - opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest + otlpTypes.opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest > -): opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest { +): otlpTypes.opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest { const groupedMetrics: Map< Resource, Map @@ -224,7 +222,7 @@ function toCollectorInstrumentationLibraryMetrics( instrumentationLibrary: core.InstrumentationLibrary, metrics: MetricRecord[], startTime: number -): opentelemetryProto.metrics.v1.InstrumentationLibraryMetrics { +): otlpTypes.opentelemetryProto.metrics.v1.InstrumentationLibraryMetrics { return { metrics: metrics.map(metric => toCollectorMetric(metric, startTime)), instrumentationLibrary, @@ -243,7 +241,7 @@ function toCollectorResourceMetrics( >, baseAttributes: SpanAttributes, startTime: number -): opentelemetryProto.metrics.v1.ResourceMetrics[] { +): otlpTypes.opentelemetryProto.metrics.v1.ResourceMetrics[] { return Array.from(groupedMetrics, ([resource, libMetrics]) => { return { resource: toCollectorResource(resource, baseAttributes), diff --git a/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts similarity index 98% rename from packages/opentelemetry-exporter-otlp-http/test/browser/CollectorMetricExporter.test.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts index 34463695c8..95328f04db 100644 --- a/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts @@ -31,8 +31,7 @@ import { import * as assert from 'assert'; import * as sinon from 'sinon'; import { OTLPMetricExporter } from '../../src/platform/browser/index'; -import * as otlpTypes from '../../src/types'; -import { OTLPExporterConfigBase } from '../../src/types'; +import { otlpTypes } from '../../../../../packages/opentelemetry-exporter-otlp-http'; import { ensureCounterIsCorrect, ensureExportMetricsServiceRequestIsSet, @@ -43,7 +42,7 @@ import { mockCounter, mockObserver, mockValueRecorder, -} from '../helper'; +} from '../metricsHelper'; describe('OTLPMetricExporter - web', () => { let collectorExporter: OTLPMetricExporter; @@ -321,7 +320,7 @@ describe('OTLPMetricExporter - web', () => { foo: 'bar', bar: 'baz', }; - let collectorExporterConfig: OTLPExporterConfigBase; + let collectorExporterConfig: otlpTypes.OTLPExporterConfigBase; beforeEach(() => { collectorExporterConfig = { diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/index-webpack.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/index-webpack.ts new file mode 100644 index 0000000000..99100a0f6e --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/index-webpack.ts @@ -0,0 +1,23 @@ +/* + * 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. + */ +const testsContext = require.context('../browser', true, /test$/); +testsContext.keys().forEach(testsContext); + +const testsContextCommon = require.context('../common', true, /test$/); +testsContextCommon.keys().forEach(testsContextCommon); + +const srcContext = require.context('.', true, /src$/); +srcContext.keys().forEach(srcContext); diff --git a/packages/opentelemetry-exporter-otlp-http/test/common/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts similarity index 95% rename from packages/opentelemetry-exporter-otlp-http/test/common/CollectorMetricExporter.test.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts index 119702c683..021c15a0bc 100644 --- a/packages/opentelemetry-exporter-otlp-http/test/common/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts @@ -24,12 +24,10 @@ import { } from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import { OTLPExporterBase } from '../../src/OTLPExporterBase'; -import * as otlpTypes from '../../src/types'; -import { OTLPExporterConfigBase } from '../../src/types'; -import { mockCounter, mockObserver } from '../helper'; +import { OTLPExporterBase, otlpTypes } from '../../../../../packages/opentelemetry-exporter-otlp-http'; +import { mockCounter, mockObserver } from '../metricsHelper'; -type CollectorExporterConfig = OTLPExporterConfigBase; +type CollectorExporterConfig = otlpTypes.OTLPExporterConfigBase; class OTLPMetricExporter extends OTLPExporterBase< CollectorExporterConfig, MetricRecord, diff --git a/packages/opentelemetry-exporter-otlp-http/test/common/transformMetrics.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/transformMetrics.test.ts similarity index 99% rename from packages/opentelemetry-exporter-otlp-http/test/common/transformMetrics.test.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/transformMetrics.test.ts index e94a6cf71d..7e051ff447 100644 --- a/packages/opentelemetry-exporter-otlp-http/test/common/transformMetrics.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/transformMetrics.test.ts @@ -48,7 +48,7 @@ import { mockValueRecorder, multiInstrumentationLibraryMetricsGet, multiResourceMetricsGet, -} from '../helper'; +} from '../metricsHelper'; describe('transformMetrics', () => { describe('toCollectorMetric', async () => { diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts new file mode 100644 index 0000000000..690fe9732c --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts @@ -0,0 +1,448 @@ +/* + * 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 { + Counter, + ObserverResult, + SumObserver, + UpDownSumObserver, + ValueObserver, + ValueRecorder, + ValueType, +} from '@opentelemetry/api-metrics'; +import { InstrumentationLibrary, VERSION } from '@opentelemetry/core'; +import * as metrics from '@opentelemetry/sdk-metrics-base'; +import { Resource } from '@opentelemetry/resources'; +import * as assert from 'assert'; +import { otlpTypes } from '../../../../packages/opentelemetry-exporter-otlp-http'; + +const meterProvider = new metrics.MeterProvider({ + interval: 30000, + resource: new Resource({ + service: 'ui', + version: 1, + cost: 112.12, + }), +}); + +const meter = meterProvider.getMeter('default', '0.0.1'); + +if (typeof Buffer === 'undefined') { + (window as any).Buffer = { + from: function (arr: []) { + return new Uint8Array(arr); + }, + }; +} + +export function mockCounter(): metrics.Metric & Counter { + const name = 'int-counter'; + const metric = + meter['_metrics'].get(name) || + meter.createCounter(name, { + description: 'sample counter description', + valueType: ValueType.INT, + }); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockDoubleCounter(): metrics.Metric & + Counter { + const name = 'double-counter'; + const metric = + meter['_metrics'].get(name) || + meter.createCounter(name, { + description: 'sample counter description', + valueType: ValueType.DOUBLE, + }); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockObserver( + callback: (observerResult: ObserverResult) => unknown, + name = 'double-observer' +): metrics.Metric & ValueObserver { + const metric = + meter['_metrics'].get(name) || + meter.createValueObserver( + name, + { + description: 'sample observer description', + valueType: ValueType.DOUBLE, + }, + callback + ); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockSumObserver( + callback: (observerResult: ObserverResult) => unknown, + name = 'double-sum-observer' +): metrics.Metric & SumObserver { + const metric = + meter['_metrics'].get(name) || + meter.createSumObserver( + name, + { + description: 'sample sum observer description', + valueType: ValueType.DOUBLE, + }, + callback + ); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockUpDownSumObserver( + callback: (observerResult: ObserverResult) => unknown, + name = 'double-up-down-sum-observer' +): metrics.Metric & UpDownSumObserver { + const metric = + meter['_metrics'].get(name) || + meter.createUpDownSumObserver( + name, + { + description: 'sample up down sum observer description', + valueType: ValueType.DOUBLE, + }, + callback + ); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockValueRecorder(): metrics.Metric & + ValueRecorder { + const name = 'int-recorder'; + const metric = + meter['_metrics'].get(name) || + meter.createValueRecorder(name, { + description: 'sample recorder description', + valueType: ValueType.INT, + boundaries: [0, 100], + }); + metric.clear(); + metric.bind({}); + return metric; +} + +export const mockedResources: Resource[] = [ + new Resource({ name: 'resource 1' }), + new Resource({ name: 'resource 2' }), +]; + +export const mockedInstrumentationLibraries: InstrumentationLibrary[] = [ + { + name: 'lib1', + version: '0.0.1', + }, + { + name: 'lib2', + version: '0.0.2', + }, +]; + +export const multiResourceMetricsGet = function ( + callback: (observerResult: ObserverResult) => unknown +): any[] { + return [ + { + ...mockCounter(), + resource: mockedResources[0], + instrumentationLibrary: mockedInstrumentationLibraries[0], + }, + { + ...mockObserver(callback), + resource: mockedResources[1], + instrumentationLibrary: mockedInstrumentationLibraries[0], + }, + { + ...mockCounter(), + resource: mockedResources[0], + instrumentationLibrary: mockedInstrumentationLibraries[0], + }, + ]; +}; + +export const multiInstrumentationLibraryMetricsGet = function ( + callback: (observerResult: ObserverResult) => unknown +): any[] { + return [ + { + ...mockCounter(), + resource: mockedResources[0], + instrumentationLibrary: mockedInstrumentationLibraries[0], + }, + { + ...mockObserver(callback), + resource: mockedResources[0], + instrumentationLibrary: mockedInstrumentationLibraries[1], + }, + { + ...mockCounter(), + resource: mockedResources[0], + instrumentationLibrary: mockedInstrumentationLibraries[0], + }, + ]; +}; + +export function ensureAttributesAreCorrect( + attributes: otlpTypes.opentelemetryProto.common.v1.KeyValue[] +) { + assert.deepStrictEqual( + attributes, + [ + { + key: 'component', + value: { + stringValue: 'document-load', + }, + }, + ], + 'attributes are incorrect' + ); +} + +export function ensureWebResourceIsCorrect( + resource: otlpTypes.opentelemetryProto.resource.v1.Resource +) { + assert.strictEqual(resource.attributes.length, 7); + assert.strictEqual(resource.attributes[0].key, 'service.name'); + assert.strictEqual(resource.attributes[0].value.stringValue, 'unknown_service'); + assert.strictEqual(resource.attributes[1].key, 'telemetry.sdk.language'); + assert.strictEqual(resource.attributes[1].value.stringValue, 'webjs'); + assert.strictEqual(resource.attributes[2].key, 'telemetry.sdk.name'); + assert.strictEqual(resource.attributes[2].value.stringValue, 'opentelemetry'); + assert.strictEqual(resource.attributes[3].key, 'telemetry.sdk.version'); + assert.strictEqual(resource.attributes[3].value.stringValue, VERSION); + assert.strictEqual(resource.attributes[4].key, 'service'); + assert.strictEqual(resource.attributes[4].value.stringValue, 'ui'); + assert.strictEqual(resource.attributes[5].key, 'version'); + assert.strictEqual(resource.attributes[5].value.intValue, 1); + assert.strictEqual(resource.attributes[6].key, 'cost'); + assert.strictEqual(resource.attributes[6].value.doubleValue, 112.12); + assert.strictEqual(resource.droppedAttributesCount, 0); +} + +export function ensureCounterIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time: number +) { + assert.deepStrictEqual(metric, { + name: 'int-counter', + description: 'sample counter description', + unit: '1', + intSum: { + dataPoints: [ + { + labels: [], + value: 1, + startTimeUnixNano: 1592602232694000000, + timeUnixNano: time, + }, + ], + isMonotonic: true, + aggregationTemporality: + otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality + .AGGREGATION_TEMPORALITY_CUMULATIVE, + }, + }); +} + +export function ensureDoubleCounterIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time: number +) { + assert.deepStrictEqual(metric, { + name: 'double-counter', + description: 'sample counter description', + unit: '1', + doubleSum: { + dataPoints: [ + { + labels: [], + value: 8, + startTimeUnixNano: 1592602232694000000, + timeUnixNano: time, + }, + ], + isMonotonic: true, + aggregationTemporality: + otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality + .AGGREGATION_TEMPORALITY_CUMULATIVE, + }, + }); +} + +export function ensureObserverIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time: number, + value: number, + name = 'double-observer' +) { + assert.deepStrictEqual(metric, { + name, + description: 'sample observer description', + unit: '1', + doubleGauge: { + dataPoints: [ + { + labels: [], + value, + startTimeUnixNano: 1592602232694000000, + timeUnixNano: time, + }, + ], + }, + }); +} + +export function ensureSumObserverIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time: number, + value: number, + name = 'double-sum-observer' +) { + assert.deepStrictEqual(metric, { + name, + description: 'sample sum observer description', + unit: '1', + doubleSum: { + isMonotonic: true, + dataPoints: [ + { + labels: [], + value, + startTimeUnixNano: 1592602232694000000, + timeUnixNano: time, + }, + ], + aggregationTemporality: + otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality + .AGGREGATION_TEMPORALITY_CUMULATIVE, + }, + }); +} + +export function ensureUpDownSumObserverIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time: number, + value: number, + name = 'double-up-down-sum-observer' +) { + assert.deepStrictEqual(metric, { + name, + description: 'sample up down sum observer description', + unit: '1', + doubleSum: { + isMonotonic: false, + dataPoints: [ + { + labels: [], + value, + startTimeUnixNano: 1592602232694000000, + timeUnixNano: time, + }, + ], + aggregationTemporality: + otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality + .AGGREGATION_TEMPORALITY_CUMULATIVE, + }, + }); +} + +export function ensureValueRecorderIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time: number, + explicitBounds: (number | null)[] = [Infinity], + bucketCounts: number[] = [2, 0] +) { + assert.deepStrictEqual(metric, { + name: 'int-recorder', + description: 'sample recorder description', + unit: '1', + intHistogram: { + dataPoints: [ + { + labels: [], + sum: 21, + count: 2, + startTimeUnixNano: 1592602232694000000, + timeUnixNano: time, + bucketCounts, + explicitBounds, + }, + ], + aggregationTemporality: + otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality + .AGGREGATION_TEMPORALITY_CUMULATIVE, + }, + }); +} + +export function ensureExportMetricsServiceRequestIsSet( + json: otlpTypes.opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest +) { + const resourceMetrics = json.resourceMetrics; + assert.strictEqual( + resourceMetrics.length, + 1, + 'resourceMetrics has incorrect length' + ); + + const resource = resourceMetrics[0].resource; + assert.strictEqual(!!resource, true, 'resource is missing'); + + const instrumentationLibraryMetrics = + resourceMetrics[0].instrumentationLibraryMetrics; + assert.strictEqual( + instrumentationLibraryMetrics && instrumentationLibraryMetrics.length, + 1, + 'instrumentationLibraryMetrics is missing' + ); + + const instrumentationLibrary = + instrumentationLibraryMetrics[0].instrumentationLibrary; + assert.strictEqual( + !!instrumentationLibrary, + true, + 'instrumentationLibrary is missing' + ); + + const metrics = resourceMetrics[0].instrumentationLibraryMetrics[0].metrics; + assert.strictEqual(metrics.length, 3, 'Metrics are missing'); +} + +export function ensureHeadersContain( + actual: { [key: string]: string }, + expected: { [key: string]: string } +) { + Object.entries(expected).forEach(([k, v]) => { + assert.strictEqual( + v, + actual[k], + `Expected ${actual} to contain ${k}: ${v}` + ); + }); +} diff --git a/packages/opentelemetry-exporter-otlp-http/test/node/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts similarity index 98% rename from packages/opentelemetry-exporter-otlp-http/test/node/CollectorMetricExporter.test.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts index 2fd9e04a36..4564374ff1 100644 --- a/packages/opentelemetry-exporter-otlp-http/test/node/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts @@ -32,10 +32,9 @@ import * as assert from 'assert'; import * as http from 'http'; import * as sinon from 'sinon'; import { - OTLPExporterNodeConfigBase, OTLPMetricExporter, } from '../../src/platform/node'; -import * as otlpTypes from '../../src/types'; +import { OTLPExporterNodeConfigBase, otlpTypes } from '../../../../../packages/opentelemetry-exporter-otlp-http'; import { ensureCounterIsCorrect, ensureExportMetricsServiceRequestIsSet, @@ -44,7 +43,7 @@ import { mockCounter, mockObserver, mockValueRecorder, -} from '../helper'; +} from '../metricsHelper'; import { MockedResponse } from './nodeHelpers'; const fakeRequest = { diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/nodeHelpers.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/nodeHelpers.ts new file mode 100644 index 0000000000..1219f2d976 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/nodeHelpers.ts @@ -0,0 +1,36 @@ +/* + * 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 { Stream } from 'stream'; + +export class MockedResponse extends Stream { + constructor(private _code: number, private _msg?: string) { + super(); + } + + send(data: string) { + this.emit('data', data); + this.emit('end'); + } + + get statusCode() { + return this._code; + } + + get statusMessage() { + return this._msg; + } +} diff --git a/packages/opentelemetry-exporter-otlp-http/package.json b/packages/opentelemetry-exporter-otlp-http/package.json index 3a03727c43..e91220d116 100644 --- a/packages/opentelemetry-exporter-otlp-http/package.json +++ b/packages/opentelemetry-exporter-otlp-http/package.json @@ -86,10 +86,8 @@ "@opentelemetry/api": "^1.0.2" }, "dependencies": { - "@opentelemetry/api-metrics": "0.25.0", "@opentelemetry/core": "0.25.0", "@opentelemetry/resources": "0.25.0", - "@opentelemetry/sdk-metrics-base": "0.25.0", "@opentelemetry/sdk-trace-base": "0.25.0" } } diff --git a/packages/opentelemetry-exporter-otlp-http/src/index.ts b/packages/opentelemetry-exporter-otlp-http/src/index.ts index 7b212c0399..bd025cd4d6 100644 --- a/packages/opentelemetry-exporter-otlp-http/src/index.ts +++ b/packages/opentelemetry-exporter-otlp-http/src/index.ts @@ -17,6 +17,5 @@ export * from './OTLPExporterBase'; export * from './platform'; export * as otlpTypes from './types'; -export { toOTLPExportTraceServiceRequest } from './transform'; -export { toOTLPExportMetricServiceRequest } from './transformMetrics'; +export { toCollectorResource, toOTLPExportTraceServiceRequest } from './transform'; export { appendResourcePathToUrlIfNotPresent } from './util'; diff --git a/packages/opentelemetry-exporter-otlp-http/src/platform/browser/index.ts b/packages/opentelemetry-exporter-otlp-http/src/platform/browser/index.ts index d54490a7ea..6a322e976a 100644 --- a/packages/opentelemetry-exporter-otlp-http/src/platform/browser/index.ts +++ b/packages/opentelemetry-exporter-otlp-http/src/platform/browser/index.ts @@ -15,4 +15,4 @@ */ export * from './OTLPTraceExporter'; -export * from './OTLPMetricExporter'; +export * from './OTLPExporterBrowserBase'; diff --git a/packages/opentelemetry-exporter-otlp-http/src/platform/index.ts b/packages/opentelemetry-exporter-otlp-http/src/platform/index.ts index cdaf8858ce..a33b81cffb 100644 --- a/packages/opentelemetry-exporter-otlp-http/src/platform/index.ts +++ b/packages/opentelemetry-exporter-otlp-http/src/platform/index.ts @@ -15,3 +15,4 @@ */ export * from './node'; +export { OTLPExporterBrowserBase } from './browser'; diff --git a/packages/opentelemetry-exporter-otlp-http/src/platform/node/index.ts b/packages/opentelemetry-exporter-otlp-http/src/platform/node/index.ts index cfd5b2286d..ab18e724e0 100644 --- a/packages/opentelemetry-exporter-otlp-http/src/platform/node/index.ts +++ b/packages/opentelemetry-exporter-otlp-http/src/platform/node/index.ts @@ -15,7 +15,6 @@ */ export * from './OTLPTraceExporter'; -export * from './OTLPMetricExporter'; export * from './OTLPExporterNodeBase'; export * from './util'; export * from './types'; diff --git a/packages/opentelemetry-exporter-otlp-http/test/helper.ts b/packages/opentelemetry-exporter-otlp-http/test/helper.ts index 8783906034..9975f05f3c 100644 --- a/packages/opentelemetry-exporter-otlp-http/test/helper.ts +++ b/packages/opentelemetry-exporter-otlp-http/test/helper.ts @@ -15,34 +15,13 @@ */ import { SpanStatusCode, TraceFlags } from '@opentelemetry/api'; -import { - Counter, - ObserverResult, - SumObserver, - UpDownSumObserver, - ValueObserver, - ValueRecorder, - ValueType, -} from '@opentelemetry/api-metrics'; import { hexToBase64, InstrumentationLibrary, VERSION } from '@opentelemetry/core'; -import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import * as otlpTypes from '../src/types'; import { opentelemetryProto } from '../src/types'; -const meterProvider = new metrics.MeterProvider({ - interval: 30000, - resource: new Resource({ - service: 'ui', - version: 1, - cost: 112.12, - }), -}); - -const meter = meterProvider.getMeter('default', '0.0.1'); - if (typeof Buffer === 'undefined') { (window as any).Buffer = { from: function (arr: []) { @@ -51,105 +30,6 @@ if (typeof Buffer === 'undefined') { }; } -export function mockCounter(): metrics.Metric & Counter { - const name = 'int-counter'; - const metric = - meter['_metrics'].get(name) || - meter.createCounter(name, { - description: 'sample counter description', - valueType: ValueType.INT, - }); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockDoubleCounter(): metrics.Metric & - Counter { - const name = 'double-counter'; - const metric = - meter['_metrics'].get(name) || - meter.createCounter(name, { - description: 'sample counter description', - valueType: ValueType.DOUBLE, - }); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockObserver( - callback: (observerResult: ObserverResult) => unknown, - name = 'double-observer' -): metrics.Metric & ValueObserver { - const metric = - meter['_metrics'].get(name) || - meter.createValueObserver( - name, - { - description: 'sample observer description', - valueType: ValueType.DOUBLE, - }, - callback - ); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockSumObserver( - callback: (observerResult: ObserverResult) => unknown, - name = 'double-sum-observer' -): metrics.Metric & SumObserver { - const metric = - meter['_metrics'].get(name) || - meter.createSumObserver( - name, - { - description: 'sample sum observer description', - valueType: ValueType.DOUBLE, - }, - callback - ); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockUpDownSumObserver( - callback: (observerResult: ObserverResult) => unknown, - name = 'double-up-down-sum-observer' -): metrics.Metric & UpDownSumObserver { - const metric = - meter['_metrics'].get(name) || - meter.createUpDownSumObserver( - name, - { - description: 'sample up down sum observer description', - valueType: ValueType.DOUBLE, - }, - callback - ); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockValueRecorder(): metrics.Metric & - ValueRecorder { - const name = 'int-recorder'; - const metric = - meter['_metrics'].get(name) || - meter.createValueRecorder(name, { - description: 'sample recorder description', - valueType: ValueType.INT, - boundaries: [0, 100], - }); - metric.clear(); - metric.bind({}); - return metric; -} - const traceIdHex = '1f1008dc8e270e85c40a0d7c3939b278'; const spanIdHex = '5e107261f64fa53e'; const parentIdHex = '78a8915098864388'; @@ -312,50 +192,6 @@ export const multiResourceTrace: ReadableSpan[] = [ }, ]; -export const multiResourceMetricsGet = function ( - callback: (observerResult: ObserverResult) => unknown -): any[] { - return [ - { - ...mockCounter(), - resource: mockedResources[0], - instrumentationLibrary: mockedInstrumentationLibraries[0], - }, - { - ...mockObserver(callback), - resource: mockedResources[1], - instrumentationLibrary: mockedInstrumentationLibraries[0], - }, - { - ...mockCounter(), - resource: mockedResources[0], - instrumentationLibrary: mockedInstrumentationLibraries[0], - }, - ]; -}; - -export const multiInstrumentationLibraryMetricsGet = function ( - callback: (observerResult: ObserverResult) => unknown -): any[] { - return [ - { - ...mockCounter(), - resource: mockedResources[0], - instrumentationLibrary: mockedInstrumentationLibraries[0], - }, - { - ...mockObserver(callback), - resource: mockedResources[0], - instrumentationLibrary: mockedInstrumentationLibraries[1], - }, - { - ...mockCounter(), - resource: mockedResources[0], - instrumentationLibrary: mockedInstrumentationLibraries[0], - }, - ]; -}; - export const multiInstrumentationLibraryTrace: ReadableSpan[] = [ { ...basicTrace[0], @@ -551,162 +387,6 @@ export function ensureWebResourceIsCorrect( assert.strictEqual(resource.droppedAttributesCount, 0); } -export function ensureCounterIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time: number -) { - assert.deepStrictEqual(metric, { - name: 'int-counter', - description: 'sample counter description', - unit: '1', - intSum: { - dataPoints: [ - { - labels: [], - value: 1, - startTimeUnixNano: 1592602232694000000, - timeUnixNano: time, - }, - ], - isMonotonic: true, - aggregationTemporality: - otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality - .AGGREGATION_TEMPORALITY_CUMULATIVE, - }, - }); -} - -export function ensureDoubleCounterIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time: number -) { - assert.deepStrictEqual(metric, { - name: 'double-counter', - description: 'sample counter description', - unit: '1', - doubleSum: { - dataPoints: [ - { - labels: [], - value: 8, - startTimeUnixNano: 1592602232694000000, - timeUnixNano: time, - }, - ], - isMonotonic: true, - aggregationTemporality: - otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality - .AGGREGATION_TEMPORALITY_CUMULATIVE, - }, - }); -} - -export function ensureObserverIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time: number, - value: number, - name = 'double-observer' -) { - assert.deepStrictEqual(metric, { - name, - description: 'sample observer description', - unit: '1', - doubleGauge: { - dataPoints: [ - { - labels: [], - value, - startTimeUnixNano: 1592602232694000000, - timeUnixNano: time, - }, - ], - }, - }); -} - -export function ensureSumObserverIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time: number, - value: number, - name = 'double-sum-observer' -) { - assert.deepStrictEqual(metric, { - name, - description: 'sample sum observer description', - unit: '1', - doubleSum: { - isMonotonic: true, - dataPoints: [ - { - labels: [], - value, - startTimeUnixNano: 1592602232694000000, - timeUnixNano: time, - }, - ], - aggregationTemporality: - otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality - .AGGREGATION_TEMPORALITY_CUMULATIVE, - }, - }); -} - -export function ensureUpDownSumObserverIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time: number, - value: number, - name = 'double-up-down-sum-observer' -) { - assert.deepStrictEqual(metric, { - name, - description: 'sample up down sum observer description', - unit: '1', - doubleSum: { - isMonotonic: false, - dataPoints: [ - { - labels: [], - value, - startTimeUnixNano: 1592602232694000000, - timeUnixNano: time, - }, - ], - aggregationTemporality: - otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality - .AGGREGATION_TEMPORALITY_CUMULATIVE, - }, - }); -} - -export function ensureValueRecorderIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time: number, - explicitBounds: (number | null)[] = [Infinity], - bucketCounts: number[] = [2, 0] -) { - assert.deepStrictEqual(metric, { - name: 'int-recorder', - description: 'sample recorder description', - unit: '1', - intHistogram: { - dataPoints: [ - { - labels: [], - sum: 21, - count: 2, - startTimeUnixNano: 1592602232694000000, - timeUnixNano: time, - bucketCounts, - explicitBounds, - }, - ], - aggregationTemporality: - otlpTypes.opentelemetryProto.metrics.v1.AggregationTemporality - .AGGREGATION_TEMPORALITY_CUMULATIVE, - }, - }); -} - export function ensureExportTraceServiceRequestIsSet( json: otlpTypes.opentelemetryProto.collector.trace.v1.ExportTraceServiceRequest ) { @@ -740,39 +420,6 @@ export function ensureExportTraceServiceRequestIsSet( assert.strictEqual(spans && spans.length, 1, 'spans are missing'); } -export function ensureExportMetricsServiceRequestIsSet( - json: otlpTypes.opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest -) { - const resourceMetrics = json.resourceMetrics; - assert.strictEqual( - resourceMetrics.length, - 1, - 'resourceMetrics has incorrect length' - ); - - const resource = resourceMetrics[0].resource; - assert.strictEqual(!!resource, true, 'resource is missing'); - - const instrumentationLibraryMetrics = - resourceMetrics[0].instrumentationLibraryMetrics; - assert.strictEqual( - instrumentationLibraryMetrics && instrumentationLibraryMetrics.length, - 1, - 'instrumentationLibraryMetrics is missing' - ); - - const instrumentationLibrary = - instrumentationLibraryMetrics[0].instrumentationLibrary; - assert.strictEqual( - !!instrumentationLibrary, - true, - 'instrumentationLibrary is missing' - ); - - const metrics = resourceMetrics[0].instrumentationLibraryMetrics[0].metrics; - assert.strictEqual(metrics.length, 3, 'Metrics are missing'); -} - export function ensureHeadersContain( actual: { [key: string]: string }, expected: { [key: string]: string } From d2ecae09d098d51483fdd325b23f999e901ec65e Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 21 Sep 2021 00:41:48 -0700 Subject: [PATCH 06/17] chore: updating submodule for opentelemetry-proto --- .gitmodules | 3 +++ .../packages/opentelemetry-exporter-metrics-otlp-proto/protos | 1 + 2 files changed, 4 insertions(+) create mode 160000 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos diff --git a/.gitmodules b/.gitmodules index 88e6c6e9be..46eb394ea5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos"] path = experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos url = https://github.com/open-telemetry/opentelemetry-proto.git +[submodule "experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos"] + path = experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos + url = https://github.com/open-telemetry/opentelemetry-proto.git diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos new file mode 160000 index 0000000000..59c488bfb8 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos @@ -0,0 +1 @@ +Subproject commit 59c488bfb8fb6d0458ad6425758b70259ff4a2bd From 07b43bf2e3fd474b82124888bbe9c403f3a2c9ea Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 21 Sep 2021 01:07:01 -0700 Subject: [PATCH 07/17] chore: bootstrapped exporter-metrics-otlp-proto package --- .../README.md | 94 +------- .../README.md | 4 +- .../.eslintignore | 1 + .../.eslintrc.js | 8 + .../.npmignore | 4 + .../LICENSE | 201 ++++++++++++++++++ .../README.md | 71 +++++++ .../package.json | 78 +++++++ .../submodule.md | 45 ++++ .../tsconfig.json | 16 ++ .../README.md | 30 +-- .../README.md | 51 +---- .../README.md | 24 +-- 13 files changed, 435 insertions(+), 192 deletions(-) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintignore create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.npmignore create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/LICENSE create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/submodule.md create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md index 522f86880a..e7d526328e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md @@ -17,96 +17,7 @@ npm install --save @opentelemetry/exporter-metrics-otlp-grpc The OpenTelemetry Collector Exporter does not have a service name configuration. In order to set the service name, use the `service.name` resource attribute as prescribed in the [OpenTelemetry Resource Semantic Conventions][semconv-resource-service-name]. - -## Traces in Node - GRPC - -The OTLPTraceExporter in Node expects the URL to only be the hostname. It will not work with `/v1/traces`. - -```js -const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); - -const collectorOptions = { - // url is optional and can be omitted - default is grpc://localhost:4317 - url: 'grpc://:', -}; - -const provider = new BasicTracerProvider(); -const exporter = new OTLPTraceExporter(collectorOptions); -provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); - -provider.register(); -['SIGINT', 'SIGTERM'].forEach(signal => { - process.on(signal, () => provider.shutdown().catch(console.error)); -}); -``` - -By default, plaintext connection is used. In order to use TLS in Node.js, provide `credentials` option like so: - -```js -const fs = require('fs'); -const grpc = require('@grpc/grpc-js'); - -const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); - -const collectorOptions = { - // url is optional and can be omitted - default is grpc://localhost:4317 - url: 'grpc://:', - credentials: grpc.credentials.createSsl(), -}; - -const provider = new BasicTracerProvider(); -const exporter = new OTLPTraceExporter(collectorOptions); -provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); - -provider.register(); -['SIGINT', 'SIGTERM'].forEach(signal => { - process.on(signal, () => provider.shutdown().catch(console.error)); -}); -``` - -To use mutual authentication, pass to the `createSsl()` constructor: - -```js - credentials: grpc.credentials.createSsl( - fs.readFileSync('./ca.crt'), - fs.readFileSync('./client.key'), - fs.readFileSync('./client.crt') - ), -``` - -To generate credentials for mutual authentication, you can refer to the script used to generate certificates for tests [here](./test/certs/regenerate.sh) - -The exporter can be configured to send custom metadata with each request as in the example below: - -```js -const grpc = require('@grpc/grpc-js'); - -const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); - -const metadata = new grpc.Metadata(); -// For instance, an API key or access token might go here. -metadata.set('k', 'v'); - -const collectorOptions = { - // url is optional and can be omitted - default is grpc://localhost:4317 - url: 'grpc://:', - metadata, // // an optional grpc.Metadata object to be sent with each request -}; - -const provider = new BasicTracerProvider(); -const exporter = new OTLPTraceExporter(collectorOptions); -provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); - -provider.register(); -['SIGINT', 'SIGTERM'].forEach(signal => { - process.on(signal, () => provider.shutdown().catch(console.error)); -}); -``` - -Note, that this will only work if TLS is also configured on the server. +To see sample code and documentation for the traces exporter, as well as instructions for using TLS, visit the [Collector Trace Exporter for web and node][trace-exporter-url]. ## Metrics in Node - GRPC @@ -114,7 +25,7 @@ The OTLPTraceExporter in Node expects the URL to only be the hostname. It will n ```js const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); -const { OTLPMetricExporter } = require('@opentelemetry/exporter-otlp-grpc'); +const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-grpc'); const collectorOptions = { // url is optional and can be omitted - default is grpc://localhost:4317 url: 'grpc://:', @@ -163,3 +74,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-metrics-otlp-grpc.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service +[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-otlp-grpc diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md index 1a9da205cb..7b2fad0de7 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md @@ -25,7 +25,7 @@ The OTLPMetricExporter in Web expects the endpoint to end in `/v1/metrics`. ```js import { MeterProvider } from '@opentelemetry/sdk-metrics-base'; -import { OTLPMetricExporter } from '@opentelemetry/exporter-otlp-http'; +import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http'; const collectorOptions = { url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics headers: {}, // an optional object containing custom headers to be sent with each request @@ -49,7 +49,7 @@ counter.add(10, { 'key': 'value' }); ```js const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); -const { OTLPMetricExporter } = require('@opentelemetry/exporter-otlp-http'); +const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-http'); const collectorOptions = { url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics concurrencyLimit: 1, // an optional limit on pending requests diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintignore b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintignore @@ -0,0 +1 @@ +build diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js new file mode 100644 index 0000000000..3ed0fbeba3 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + "env": { + "mocha": true, + "commonjs": true, + "node": true, + }, + ...require('../../../eslint.config.js') +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.npmignore b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.npmignore new file mode 100644 index 0000000000..9505ba9450 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.npmignore @@ -0,0 +1,4 @@ +/bin +/coverage +/doc +/test diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/LICENSE b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/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/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md new file mode 100644 index 0000000000..f7d6b7b07e --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md @@ -0,0 +1,71 @@ +# OpenTelemetry Collector Metrics Exporter for node with protobuf + +[![NPM Published Version][npm-img]][npm-url] +[![dependencies][dependencies-image]][dependencies-url] +[![devDependencies][devDependencies-image]][devDependencies-url] +[![Apache License][license-image]][license-image] + +This module provides exporter for node to be used with [opentelemetry-collector][opentelemetry-collector-url] - last tested with version **0.25.0**. + +## Installation + +```bash +npm install --save @opentelemetry/exporter-metrics-otlp-proto +``` + +## Service Name + +The OpenTelemetry Collector Exporter does not have a service name configuration. +In order to set the service name, use the `service.name` resource attribute as prescribed in the [OpenTelemetry Resource Semantic Conventions][semconv-resource-service-name]. +To see sample code and documentation for the traces exporter, visit the [Collector Trace Exporter for web and node][trace-exporter-url]. + +## Metrics in Node - PROTO over http + +```js +const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); +const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-proto'); +const collectorOptions = { + url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics +}; +const exporter = new OTLPMetricExporter(collectorOptions); + +// Register the exporter +const meter = new MeterProvider({ + exporter, + interval: 60000, +}).getMeter('example-meter'); + +// Now, start recording data +const counter = meter.createCounter('metric_name'); +counter.add(10, { 'key': 'value' }); + +``` + +## Running opentelemetry-collector locally to see the metrics + +1. Go to examples/otlp-exporter-node +2. run `npm run docker:start` +3. Open page at `http://localhost:9411/zipkin/` to observe the metrics + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-proto +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-proto +[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-proto&type=dev +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=experimental%2Fpackages%2Fopentelemetry-exporter-metrics-otlp-proto&type=dev +[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-metrics-otlp-proto +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-metrics-otlp-proto.svg +[opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector +[semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service +[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-otlp-http diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json new file mode 100644 index 0000000000..bf29d331d5 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -0,0 +1,78 @@ +{ + "name": "@opentelemetry/exporter-metrics-otlp-proto", + "version": "0.25.0", + "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "compile": "tsc --build", + "clean": "tsc --build --clean", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "postcompile": "npm run submodule && npm run protos:copy", + "protos:copy": "cpx protos/opentelemetry/**/*.* build/protos/opentelemetry", + "submodule": "git submodule sync --recursive && git submodule update --init --recursive", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "version": "node ../../../scripts/version-update.js", + "watch": "npm run protos:copy && tsc -w", + "precompile": "lerna run version --scope $(npm pkg get name) --include-filtered-dependencies", + "prewatch": "npm run precompile" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "protobuf", + "tracing", + "profiling", + "metrics", + "stats" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "build/protos/**/*.proto", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@babel/core": "7.15.0", + "@opentelemetry/api": "^1.0.2", + "@opentelemetry/api-metrics": "0.25.0", + "@types/mocha": "8.2.3", + "@types/node": "14.17.11", + "@types/sinon": "10.0.2", + "codecov": "3.8.3", + "cpx": "1.5.0", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "3.0.2", + "sinon": "11.1.2", + "ts-loader": "8.3.0", + "ts-mocha": "8.0.0", + "typescript": "4.3.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + }, + "dependencies": { + "@grpc/proto-loader": "^0.6.4", + "@opentelemetry/core": "0.25.0", + "@opentelemetry/exporter-otlp-http": "0.25.0", + "@opentelemetry/sdk-metrics-base": "0.25.0", + "@opentelemetry/resources": "0.25.0", + "@opentelemetry/sdk-trace-base": "0.25.0", + "protobufjs": "^6.9.0" + } +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/submodule.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/submodule.md new file mode 100644 index 0000000000..bbbca131ad --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/submodule.md @@ -0,0 +1,45 @@ +# Important + +**Submodule is always pointing to certain revision number. So updating the submodule repo will not have impact on your code. +Knowing this if you want to change the submodule to point to a different version (when for example proto has changed) here is how to do it:** + +## Updating submodule to point to certain revision number + +1. Make sure you are in the same folder as this instruction + +2. Update your submodules by running this command + + ```shell script + git submodule sync --recursive + git submodule update --init --recursive + ``` + +3. Find the SHA which you want to update to and copy it (the long one) + +4. Enter a submodule directory from this directory + + ```shell script + cd protos + ``` + +5. Updates files in the submodule tree to given commit: + + ```shell script + git checkout -q + ``` + +6. Return to the main directory: + + ```shell script + cd ../ + ``` + +7. Please run `git status` you should see something like `Head detached at`. This is correct, go to next step + +8. Now thing which is very important. You have to commit this to apply these changes + + ```shell script + git commit -am "chore: updating submodule for opentelemetry-proto" + ``` + +9. If you look now at git log you will notice that the folder `protos` has been changed and it will show what was the previous sha and what is current one. diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json new file mode 100644 index 0000000000..782772471a --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ], + "references": [ + { + "path": "../opentelemetry-sdk-metrics-base" + } + ] +} diff --git a/packages/opentelemetry-exporter-otlp-grpc/README.md b/packages/opentelemetry-exporter-otlp-grpc/README.md index 41a52ada2a..21b73a7c6b 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/README.md +++ b/packages/opentelemetry-exporter-otlp-grpc/README.md @@ -17,6 +17,7 @@ npm install --save @opentelemetry/exporter-otlp-grpc The OpenTelemetry Collector Exporter does not have a service name configuration. In order to set the service name, use the `service.name` resource attribute as prescribed in the [OpenTelemetry Resource Semantic Conventions][semconv-resource-service-name]. +To see documentation and sample code for the metric exporter, see the [exporter-metrics-otlp-grpc package][metrics-exporter-url] ## Traces in Node - GRPC @@ -108,34 +109,6 @@ provider.register(); Note, that this will only work if TLS is also configured on the server. -## Metrics in Node - GRPC - -The OTLPTraceExporter in Node expects the URL to only be the hostname. It will not work with `/v1/metrics`. All options that work with trace also work with metrics. - -```js -const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); -const { OTLPMetricExporter } = require('@opentelemetry/exporter-otlp-grpc'); -const collectorOptions = { - // url is optional and can be omitted - default is grpc://localhost:4317 - url: 'grpc://:', -}; -const exporter = new OTLPMetricExporter(collectorOptions); - -// Register the exporter -const provider = new MeterProvider({ - exporter, - interval: 60000, -}) -['SIGINT', 'SIGTERM'].forEach(signal => { - process.on(signal, () => provider.shutdown().catch(console.error)); -}); - -// Now, start recording data -const meter = provider.getMeter('example-meter'); -const counter = meter.createCounter('metric_name'); -counter.add(10, { 'key': 'value' }); -``` - ## Running opentelemetry-collector locally to see the traces 1. Go to examples/otlp-exporter-node @@ -163,3 +136,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-otlp-grpc.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service +[metrics-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-metrics-otlp-grpc diff --git a/packages/opentelemetry-exporter-otlp-http/README.md b/packages/opentelemetry-exporter-otlp-http/README.md index 0e17fb68cf..70a28f0c22 100644 --- a/packages/opentelemetry-exporter-otlp-http/README.md +++ b/packages/opentelemetry-exporter-otlp-http/README.md @@ -17,6 +17,7 @@ npm install --save @opentelemetry/exporter-otlp-http The OpenTelemetry Collector Exporter does not have a service name configuration. In order to set the service name, use the `service.name` resource attribute as prescribed in the [OpenTelemetry Resource Semantic Conventions][semconv-resource-service-name]. +To see documentation and sample code for the metric exporter, see the [exporter-metrics-otlp-http package][metrics-exporter-url] ## Traces in Web @@ -50,32 +51,6 @@ provider.register(); ``` -## Metrics in Web - -The OTLPMetricExporter in Web expects the endpoint to end in `/v1/metrics`. - -```js -import { MeterProvider } from '@opentelemetry/sdk-metrics-base'; -import { OTLPMetricExporter } from '@opentelemetry/exporter-otlp-http'; -const collectorOptions = { - url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics - headers: {}, // an optional object containing custom headers to be sent with each request - concurrencyLimit: 1, // an optional limit on pending requests -}; -const exporter = new OTLPMetricExporter(collectorOptions); - -// Register the exporter -const meter = new MeterProvider({ - exporter, - interval: 60000, -}).getMeter('example-meter'); - -// Now, start recording data -const counter = meter.createCounter('metric_name'); -counter.add(10, { 'key': 'value' }); - -``` - ## Traces in Node - JSON over http ```js @@ -103,29 +78,6 @@ provider.register(); ``` -## Metrics in Node - -```js -const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); -const { OTLPMetricExporter } = require('@opentelemetry/exporter-otlp-http'); -const collectorOptions = { - url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics - concurrencyLimit: 1, // an optional limit on pending requests -}; -const exporter = new OTLPMetricExporter(collectorOptions); - -// Register the exporter -const meter = new MeterProvider({ - exporter, - interval: 60000, -}).getMeter('example-meter'); - -// Now, start recording data -const counter = meter.createCounter('metric_name'); -counter.add(10, { 'key': 'value' }); - -``` - ## GRPC For GRPC please check [npm-url-grpc] @@ -186,3 +138,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [opentelemetry-spec-protocol-exporter]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service +[metrics-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-metrics-otlp-http diff --git a/packages/opentelemetry-exporter-otlp-proto/README.md b/packages/opentelemetry-exporter-otlp-proto/README.md index dfe135e6dc..965ddd08e3 100644 --- a/packages/opentelemetry-exporter-otlp-proto/README.md +++ b/packages/opentelemetry-exporter-otlp-proto/README.md @@ -17,6 +17,7 @@ npm install --save @opentelemetry/exporter-otlp-proto The OpenTelemetry Collector Exporter does not have a service name configuration. In order to set the service name, use the `service.name` resource attribute as prescribed in the [OpenTelemetry Resource Semantic Conventions][semconv-resource-service-name]. +To see documentation and sample code for the metric exporter, see the [exporter-metrics-otlp-proto package][metrics-exporter-url] ## Traces in Node - PROTO over http @@ -39,28 +40,6 @@ provider.register(); ``` -## Metrics in Node - PROTO over http - -```js -const { MeterProvider } = require('@opentelemetry/sdk-metrics-base'); -const { OTLPMetricExporter } = require('@opentelemetry/exporter-otlp-proto'); -const collectorOptions = { - url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics -}; -const exporter = new OTLPMetricExporter(collectorOptions); - -// Register the exporter -const meter = new MeterProvider({ - exporter, - interval: 60000, -}).getMeter('example-meter'); - -// Now, start recording data -const counter = meter.createCounter('metric_name'); -counter.add(10, { 'key': 'value' }); - -``` - ## Running opentelemetry-collector locally to see the traces 1. Go to examples/otlp-exporter-node @@ -88,3 +67,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-collector-otlp-proto.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service +[metrics-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-metrics-otlp-proto From 5ac7d7b1a47fea75c21c2ee5684e0253ed00d04f Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 21 Sep 2021 02:53:48 -0700 Subject: [PATCH 08/17] feat!: migrated proto logic to exporter-metrics-otlp-proto package --- .../package.json | 3 +- .../src/OTLPMetricExporter.ts | 8 +- .../test/OTLPMetricExporter.test.ts | 2 +- .../package.json | 1 + .../platform/browser/OTLPMetricExporter.ts | 4 +- .../src/platform/node/OTLPMetricExporter.ts | 2 +- .../src/transformMetrics.ts | 2 +- .../package.json | 3 +- .../src/OTLPMetricExporter.ts | 8 +- .../src/index.ts | 17 ++ .../test/OTLPMetricExporter.test.ts | 5 +- .../test/metricsHelper.ts | 223 ++++++++++++++++++ .../tsconfig.json | 5 +- experimental/tsconfig.json | 9 + .../src/index.ts | 2 +- .../package.json | 2 - .../src/index.ts | 4 +- .../test/OTLPTraceExporter.test.ts | 2 +- .../test/{helper.ts => traceHelper.ts} | 167 ------------- tsconfig.json | 3 + 20 files changed, 280 insertions(+), 192 deletions(-) rename {packages/opentelemetry-exporter-otlp-proto => experimental/packages/opentelemetry-exporter-metrics-otlp-proto}/src/OTLPMetricExporter.ts (87%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/index.ts rename {packages/opentelemetry-exporter-otlp-proto => experimental/packages/opentelemetry-exporter-metrics-otlp-proto}/test/OTLPMetricExporter.test.ts (98%) create mode 100644 experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts rename packages/opentelemetry-exporter-otlp-proto/test/{helper.ts => traceHelper.ts} (62%) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 4e1eaf2d49..b71ec01d7a 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -15,7 +15,7 @@ "submodule": "git submodule sync --recursive && git submodule update --init --recursive", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", - "version": "node ../../scripts/version-update.js", + "version": "node ../../../scripts/version-update.js", "watch": "npm run protos:copy && tsc -w", "precompile": "lerna run version --scope $(npm pkg get name) --include-filtered-dependencies", "prewatch": "npm run precompile" @@ -69,6 +69,7 @@ "@grpc/grpc-js": "^1.3.7", "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "0.25.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.25.0", "@opentelemetry/exporter-otlp-http": "0.25.0", "@opentelemetry/exporter-otlp-grpc": "0.25.0", "@opentelemetry/sdk-metrics-base": "0.25.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts index 5fcc6f4410..95ce2374f6 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts @@ -14,17 +14,15 @@ * limitations under the License. */ -import { - otlpTypes, - toOTLPExportMetricServiceRequest, -} from '../../../../packages/opentelemetry-exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { toOTLPExportMetricServiceRequest } from '@opentelemetry/exporter-metrics-otlp-http' import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; import { OTLPExporterConfigNode, OTLPExporterNodeBase, ServiceClientType, validateAndNormalizeUrl -} from '../../../../packages/opentelemetry-exporter-otlp-grpc'; +} from '@opentelemetry/exporter-otlp-grpc'; import { baggageUtils, getEnv } from '@opentelemetry/core'; import { Metadata } from '@grpc/grpc-js'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts index f24d2ec967..99957e98af 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts @@ -21,7 +21,7 @@ import { ValueRecorder, } from '@opentelemetry/api-metrics'; import { diag } from '@opentelemetry/api'; -import { otlpTypes } from '../../../../packages/opentelemetry-exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as fs from 'fs'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 56d44652e6..edbc1df057 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -87,6 +87,7 @@ "dependencies": { "@opentelemetry/api-metrics": "0.25.0", "@opentelemetry/core": "0.25.0", + "@opentelemetry/exporter-otlp-http": "0.25.0", "@opentelemetry/resources": "0.25.0", "@opentelemetry/sdk-metrics-base": "0.25.0" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts index 7d83993cdf..a32375f2a5 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts @@ -15,8 +15,8 @@ */ import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import { otlpTypes, appendResourcePathToUrlIfNotPresent } from '../../../../../../packages/opentelemetry-exporter-otlp-http'; -import { OTLPExporterBrowserBase } from '../../../../../../packages/opentelemetry-exporter-otlp-http/build/esm' +import { OTLPExporterBrowserBase, otlpTypes, appendResourcePathToUrlIfNotPresent } from '@opentelemetry/exporter-otlp-http'; +// import { } from '@opentelemetry/exporter-otlp-http' import { toOTLPExportMetricServiceRequest } from '../../transformMetrics'; import { getEnv, baggageUtils } from '@opentelemetry/core'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts index a126db7eb6..8c29c56717 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts @@ -20,7 +20,7 @@ import { OTLPExporterNodeConfigBase, otlpTypes, appendResourcePathToUrlIfNotPresent -} from '../../../../../../packages/opentelemetry-exporter-otlp-http'; +} from '@opentelemetry/exporter-otlp-http'; import { toOTLPExportMetricServiceRequest } from '../../transformMetrics'; import { getEnv, baggageUtils } from '@opentelemetry/core'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts index 560a215258..933dfdee34 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts @@ -24,7 +24,7 @@ import { MetricRecord, } from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; -import { OTLPExporterBase, otlpTypes, toCollectorResource } from '../../../../packages/opentelemetry-exporter-otlp-http'; +import { OTLPExporterBase, otlpTypes, toCollectorResource } from '@opentelemetry/exporter-otlp-http'; /** * Converts labels diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index bf29d331d5..4b83c23b55 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -48,7 +48,6 @@ }, "devDependencies": { "@babel/core": "7.15.0", - "@opentelemetry/api": "^1.0.2", "@opentelemetry/api-metrics": "0.25.0", "@types/mocha": "8.2.3", "@types/node": "14.17.11", @@ -70,9 +69,9 @@ "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "0.25.0", "@opentelemetry/exporter-otlp-http": "0.25.0", + "@opentelemetry/exporter-otlp-proto": "0.25.0", "@opentelemetry/sdk-metrics-base": "0.25.0", "@opentelemetry/resources": "0.25.0", - "@opentelemetry/sdk-trace-base": "0.25.0", "protobufjs": "^6.9.0" } } diff --git a/packages/opentelemetry-exporter-otlp-proto/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts similarity index 87% rename from packages/opentelemetry-exporter-otlp-proto/src/OTLPMetricExporter.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts index bd1bc75c17..b44d67f17f 100644 --- a/packages/opentelemetry-exporter-otlp-proto/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts @@ -16,13 +16,13 @@ import { otlpTypes, - toOTLPExportMetricServiceRequest, OTLPExporterNodeConfigBase, appendResourcePathToUrlIfNotPresent, -} from '@opentelemetry/exporter-otlp-http'; +} from '../../../../packages/opentelemetry-exporter-otlp-http'; +import { toOTLPExportMetricServiceRequest } from '../../opentelemetry-exporter-metrics-otlp-http'; import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import { ServiceClientType } from './types'; -import { OTLPExporterNodeBase } from './OTLPExporterNodeBase'; +import { ServiceClientType, OTLPExporterNodeBase } from '../../../../packages/opentelemetry-exporter-otlp-proto'; +// import { OTLPExporterNodeBase } from './OTLPExporterNodeBase'; import { getEnv, baggageUtils } from '@opentelemetry/core'; const DEFAULT_COLLECTOR_RESOURCE_PATH = '/v1/metrics'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/index.ts new file mode 100644 index 0000000000..7b73804ce4 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/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 './OTLPMetricExporter'; diff --git a/packages/opentelemetry-exporter-otlp-proto/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts similarity index 98% rename from packages/opentelemetry-exporter-otlp-proto/test/OTLPMetricExporter.test.ts rename to experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts index 17716f0887..0203fdaca7 100644 --- a/packages/opentelemetry-exporter-otlp-proto/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts @@ -25,12 +25,13 @@ import { OTLPExporterNodeConfigBase, otlpTypes, } from '@opentelemetry/exporter-otlp-http'; +import { getExportRequestProto } from '@opentelemetry/exporter-otlp-proto'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as http from 'http'; import * as sinon from 'sinon'; import { OTLPMetricExporter } from '../src'; -import { getExportRequestProto } from '../src/util'; + import { ensureExportedCounterIsCorrect, ensureExportedObserverIsCorrect, @@ -40,7 +41,7 @@ import { MockedResponse, mockObserver, mockValueRecorder, -} from './helper'; +} from './metricsHelper'; const fakeRequest = { end: function () {}, diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts new file mode 100644 index 0000000000..5ceac47704 --- /dev/null +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts @@ -0,0 +1,223 @@ +/* + * 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 { + Counter, + ObserverResult, + ValueObserver, + ValueRecorder, + ValueType, +} from '@opentelemetry/api-metrics'; +import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import * as metrics from '@opentelemetry/sdk-metrics-base'; +import { Resource } from '@opentelemetry/resources'; +import * as assert from 'assert'; +import { Stream } from 'stream'; + +const meterProvider = new metrics.MeterProvider({ + interval: 30000, + resource: new Resource({ + service: 'ui', + version: 1, + cost: 112.12, + }), +}); + +const meter = meterProvider.getMeter('default', '0.0.1'); + +export function mockCounter(): metrics.Metric & Counter { + const name = 'int-counter'; + const metric = + meter['_metrics'].get(name) || + meter.createCounter(name, { + description: 'sample counter description', + valueType: ValueType.INT, + }); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockObserver( + callback: (observerResult: ObserverResult) => void +): metrics.Metric & ValueObserver { + const name = 'double-observer'; + const metric = + meter['_metrics'].get(name) || + meter.createValueObserver( + name, + { + description: 'sample observer description', + valueType: ValueType.DOUBLE, + }, + callback + ); + metric.clear(); + metric.bind({}); + return metric; +} + +export function mockValueRecorder(): metrics.Metric & + ValueRecorder { + const name = 'int-recorder'; + const metric = + meter['_metrics'].get(name) || + meter.createValueRecorder(name, { + description: 'sample recorder description', + valueType: ValueType.INT, + boundaries: [0, 100], + }); + metric.clear(); + metric.bind({}); + return metric; +} + +export function ensureProtoAttributesAreCorrect( + attributes: otlpTypes.opentelemetryProto.common.v1.KeyValue[] +) { + assert.deepStrictEqual( + attributes, + [ + { + key: 'component', + value: { + stringValue: 'document-load', + }, + }, + ], + 'attributes are incorrect' + ); +} + +export function ensureExportedCounterIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time?: number +) { + assert.deepStrictEqual(metric, { + name: 'int-counter', + description: 'sample counter description', + unit: '1', + intSum: { + dataPoints: [ + { + value: '1', + startTimeUnixNano: '1592602232694000128', + timeUnixNano: String(time), + }, + ], + isMonotonic: true, + aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', + }, + }); +} + +export function ensureExportedObserverIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time?: number +) { + assert.deepStrictEqual(metric, { + name: 'double-observer', + description: 'sample observer description', + unit: '1', + doubleGauge: { + dataPoints: [ + { + value: 6, + startTimeUnixNano: '1592602232694000128', + timeUnixNano: String(time), + }, + ], + }, + }); +} + +export function ensureExportedValueRecorderIsCorrect( + metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, + time?: number, + explicitBounds: number[] = [Infinity], + bucketCounts: string[] = ['2', '0'] +) { + assert.deepStrictEqual(metric, { + name: 'int-recorder', + description: 'sample recorder description', + unit: '1', + intHistogram: { + dataPoints: [ + { + sum: '21', + count: '2', + startTimeUnixNano: '1592602232694000128', + timeUnixNano: time, + bucketCounts, + explicitBounds, + }, + ], + aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', + }, + }); +} + +export function ensureExportMetricsServiceRequestIsSet( + json: otlpTypes.opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest +) { + const resourceMetrics = json.resourceMetrics; + assert.strictEqual( + resourceMetrics.length, + 1, + 'resourceMetrics has incorrect length' + ); + + const resource = resourceMetrics[0].resource; + assert.strictEqual(!!resource, true, 'resource is missing'); + + const instrumentationLibraryMetrics = + resourceMetrics[0].instrumentationLibraryMetrics; + assert.strictEqual( + instrumentationLibraryMetrics && instrumentationLibraryMetrics.length, + 1, + 'instrumentationLibraryMetrics is missing' + ); + + const instrumentationLibrary = + instrumentationLibraryMetrics[0].instrumentationLibrary; + assert.strictEqual( + !!instrumentationLibrary, + true, + 'instrumentationLibrary is missing' + ); + + const metrics = resourceMetrics[0].instrumentationLibraryMetrics[0].metrics; + assert.strictEqual(metrics.length, 3, 'Metrics are missing'); +} + +export class MockedResponse extends Stream { + constructor(private _code: number, private _msg?: string) { + super(); + } + + send(data: string) { + this.emit('data', data); + this.emit('end'); + } + + get statusCode() { + return this._code; + } + + get statusMessage() { + return this._msg; + } +} diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json index 782772471a..03a463d637 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", "outDir": "build" @@ -11,6 +11,9 @@ "references": [ { "path": "../opentelemetry-sdk-metrics-base" + }, + { + "path": "../opentelemetry-exporter-metrics-otlp-http" } ] } diff --git a/experimental/tsconfig.json b/experimental/tsconfig.json index a4220672a8..ba7352bc75 100644 --- a/experimental/tsconfig.json +++ b/experimental/tsconfig.json @@ -20,6 +20,15 @@ { "path": "packages/opentelemetry-instrumentation" }, + { + "path": "packages/opentelemetry-exporter-metrics-otlp-http" + }, + { + "path": "packages/opentelemetry-exporter-metrics-otlp-grpc" + }, + { + "path": "packages/opentelemetry-exporter-metrics-otlp-proto" + }, { "path": "packages/opentelemetry-sdk-metrics-base" }, diff --git a/packages/opentelemetry-exporter-otlp-grpc/src/index.ts b/packages/opentelemetry-exporter-otlp-grpc/src/index.ts index 77d369ceb9..34975b3ed5 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/src/index.ts +++ b/packages/opentelemetry-exporter-otlp-grpc/src/index.ts @@ -16,5 +16,5 @@ export * from './OTLPExporterNodeBase'; export * from './OTLPTraceExporter'; -export { ServiceClientType } from './types'; +export { ServiceClientType, OTLPExporterConfigNode } from './types'; export { validateAndNormalizeUrl } from './util'; diff --git a/packages/opentelemetry-exporter-otlp-proto/package.json b/packages/opentelemetry-exporter-otlp-proto/package.json index b890fd32d9..92bc7dc3b2 100644 --- a/packages/opentelemetry-exporter-otlp-proto/package.json +++ b/packages/opentelemetry-exporter-otlp-proto/package.json @@ -49,7 +49,6 @@ "devDependencies": { "@babel/core": "7.15.0", "@opentelemetry/api": "^1.0.2", - "@opentelemetry/api-metrics": "0.25.0", "@types/mocha": "8.2.3", "@types/node": "14.17.11", "@types/sinon": "10.0.2", @@ -70,7 +69,6 @@ "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "0.25.0", "@opentelemetry/exporter-otlp-http": "0.25.0", - "@opentelemetry/sdk-metrics-base": "0.25.0", "@opentelemetry/resources": "0.25.0", "@opentelemetry/sdk-trace-base": "0.25.0", "protobufjs": "^6.9.0" diff --git a/packages/opentelemetry-exporter-otlp-proto/src/index.ts b/packages/opentelemetry-exporter-otlp-proto/src/index.ts index d54490a7ea..bf4ab432ce 100644 --- a/packages/opentelemetry-exporter-otlp-proto/src/index.ts +++ b/packages/opentelemetry-exporter-otlp-proto/src/index.ts @@ -15,4 +15,6 @@ */ export * from './OTLPTraceExporter'; -export * from './OTLPMetricExporter'; +export * from './OTLPExporterNodeBase'; +export * from './types'; +export * from './util'; diff --git a/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts b/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts index cf4676f9b5..2e6e232770 100644 --- a/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts +++ b/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts @@ -34,7 +34,7 @@ import { ensureProtoSpanIsCorrect, mockedReadableSpan, MockedResponse, -} from './helper'; +} from './traceHelper'; const fakeRequest = { end: function () { }, diff --git a/packages/opentelemetry-exporter-otlp-proto/test/helper.ts b/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts similarity index 62% rename from packages/opentelemetry-exporter-otlp-proto/test/helper.ts rename to packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts index f8b90b9fef..69af8afbfa 100644 --- a/packages/opentelemetry-exporter-otlp-proto/test/helper.ts +++ b/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts @@ -15,79 +15,13 @@ */ import { SpanStatusCode, TraceFlags } from '@opentelemetry/api'; -import { - Counter, - ObserverResult, - ValueObserver, - ValueRecorder, - ValueType, -} from '@opentelemetry/api-metrics'; import { hexToBase64 } from '@opentelemetry/core'; import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; -import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import { Stream } from 'stream'; -const meterProvider = new metrics.MeterProvider({ - interval: 30000, - resource: new Resource({ - service: 'ui', - version: 1, - cost: 112.12, - }), -}); - -const meter = meterProvider.getMeter('default', '0.0.1'); - -export function mockCounter(): metrics.Metric & Counter { - const name = 'int-counter'; - const metric = - meter['_metrics'].get(name) || - meter.createCounter(name, { - description: 'sample counter description', - valueType: ValueType.INT, - }); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockObserver( - callback: (observerResult: ObserverResult) => void -): metrics.Metric & ValueObserver { - const name = 'double-observer'; - const metric = - meter['_metrics'].get(name) || - meter.createValueObserver( - name, - { - description: 'sample observer description', - valueType: ValueType.DOUBLE, - }, - callback - ); - metric.clear(); - metric.bind({}); - return metric; -} - -export function mockValueRecorder(): metrics.Metric & - ValueRecorder { - const name = 'int-recorder'; - const metric = - meter['_metrics'].get(name) || - meter.createValueRecorder(name, { - description: 'sample recorder description', - valueType: ValueType.INT, - boundaries: [0, 100], - }); - metric.clear(); - metric.bind({}); - return metric; -} - const traceIdHex = '1f1008dc8e270e85c40a0d7c3939b278'; const spanIdHex = '5e107261f64fa53e'; const parentIdHex = '78a8915098864388'; @@ -294,74 +228,6 @@ export function ensureProtoSpanIsCorrect( ); } -export function ensureExportedCounterIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time?: number -) { - assert.deepStrictEqual(metric, { - name: 'int-counter', - description: 'sample counter description', - unit: '1', - intSum: { - dataPoints: [ - { - value: '1', - startTimeUnixNano: '1592602232694000128', - timeUnixNano: String(time), - }, - ], - isMonotonic: true, - aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', - }, - }); -} - -export function ensureExportedObserverIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time?: number -) { - assert.deepStrictEqual(metric, { - name: 'double-observer', - description: 'sample observer description', - unit: '1', - doubleGauge: { - dataPoints: [ - { - value: 6, - startTimeUnixNano: '1592602232694000128', - timeUnixNano: String(time), - }, - ], - }, - }); -} - -export function ensureExportedValueRecorderIsCorrect( - metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, - time?: number, - explicitBounds: number[] = [Infinity], - bucketCounts: string[] = ['2', '0'] -) { - assert.deepStrictEqual(metric, { - name: 'int-recorder', - description: 'sample recorder description', - unit: '1', - intHistogram: { - dataPoints: [ - { - sum: '21', - count: '2', - startTimeUnixNano: '1592602232694000128', - timeUnixNano: time, - bucketCounts, - explicitBounds, - }, - ], - aggregationTemporality: 'AGGREGATION_TEMPORALITY_CUMULATIVE', - }, - }); -} - export function ensureExportTraceServiceRequestIsSet( json: otlpTypes.opentelemetryProto.collector.trace.v1.ExportTraceServiceRequest ) { @@ -395,39 +261,6 @@ export function ensureExportTraceServiceRequestIsSet( assert.strictEqual(spans && spans.length, 1, 'spans are missing'); } -export function ensureExportMetricsServiceRequestIsSet( - json: otlpTypes.opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest -) { - const resourceMetrics = json.resourceMetrics; - assert.strictEqual( - resourceMetrics.length, - 1, - 'resourceMetrics has incorrect length' - ); - - const resource = resourceMetrics[0].resource; - assert.strictEqual(!!resource, true, 'resource is missing'); - - const instrumentationLibraryMetrics = - resourceMetrics[0].instrumentationLibraryMetrics; - assert.strictEqual( - instrumentationLibraryMetrics && instrumentationLibraryMetrics.length, - 1, - 'instrumentationLibraryMetrics is missing' - ); - - const instrumentationLibrary = - instrumentationLibraryMetrics[0].instrumentationLibrary; - assert.strictEqual( - !!instrumentationLibrary, - true, - 'instrumentationLibrary is missing' - ); - - const metrics = resourceMetrics[0].instrumentationLibraryMetrics[0].metrics; - assert.strictEqual(metrics.length, 3, 'Metrics are missing'); -} - export class MockedResponse extends Stream { constructor(private _code: number, private _msg?: string) { super(); diff --git a/tsconfig.json b/tsconfig.json index 11b773288c..8545866368 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,9 @@ "experimental/packages/opentelemetry-instrumentation-xml-http-request", "experimental/packages/opentelemetry-instrumentation", "experimental/packages/opentelemetry-sdk-node", + "experimental/packages/opentelemetry-exporter-metrics-otlp-http", + "experimental/packages/opentelemetry-exporter-metrics-otlp-grpc", + "experimental/packages/opentelemetry-exporter-metrics-otlp-proto", "packages/opentelemetry-context-async-hooks", "packages/opentelemetry-context-zone-peer-dep", "packages/opentelemetry-context-zone", From 308cfe3fd55f8b9f6e9f81ce70e4e8a7ba9965ae Mon Sep 17 00:00:00 2001 From: William Armiros Date: Wed, 22 Sep 2021 02:23:42 -0700 Subject: [PATCH 09/17] fix: fixed some issues in grpc and proto --- .../test/OTLPMetricExporter.test.ts | 17 +++++++++++------ .../test/metricsHelper.ts | 2 +- .../package.json | 1 + .../src/OTLPMetricExporter.ts | 7 +++---- .../src/util.ts | 1 + .../package.json | 2 +- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts index 99957e98af..d5cc57dde7 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts @@ -92,7 +92,9 @@ const testOTLPMetricExporter = (params: TestParams) => try { exportedData = data.request.resourceMetrics; reqMetadata = data.metadata; + console.log(`Exporting data: ${exportedData} and metadata: ${JSON.stringify(reqMetadata)}`); } catch (e) { + console.log('Caught Export error: ' + e); exportedData = undefined; } }, @@ -100,17 +102,18 @@ const testOTLPMetricExporter = (params: TestParams) => ); const credentials = params.useTLS ? grpc.ServerCredentials.createSsl( - fs.readFileSync('./test/certs/ca.crt'), + fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt'), [ { - cert_chain: fs.readFileSync('./test/certs/server.crt'), - private_key: fs.readFileSync('./test/certs/server.key'), + cert_chain: fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt'), + private_key: fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key'), }, ] ) : grpc.ServerCredentials.createInsecure(); server.bindAsync(address, credentials, () => { server.start(); + console.log(`Server started on ${address}!!`); done(); }); }); @@ -118,14 +121,15 @@ const testOTLPMetricExporter = (params: TestParams) => after(() => { server.forceShutdown(); + console.log('Server shutdown!!'); }); beforeEach(async () => { const credentials = params.useTLS ? grpc.credentials.createSsl( - fs.readFileSync('./test/certs/ca.crt'), - fs.readFileSync('./test/certs/client.key'), - fs.readFileSync('./test/certs/client.crt') + fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt'), + fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key'), + fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt') ) : undefined; collectorExporter = new OTLPMetricExporter({ @@ -194,6 +198,7 @@ const testOTLPMetricExporter = (params: TestParams) => const responseSpy = sinon.spy(); collectorExporter.export(metrics, responseSpy); setTimeout(() => { + console.log(`In assertion callback with exportedData: ${exportedData} and reqMetadata: ${JSON.stringify(reqMetadata)}`); assert.ok( typeof exportedData !== 'undefined', 'resource' + " doesn't exist" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts index fa6c756461..89431a5d42 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts @@ -21,7 +21,7 @@ import { ValueRecorder, ValueType, } from '@opentelemetry/api-metrics'; -import { otlpTypes } from '../../../../packages/opentelemetry-exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import * as assert from 'assert'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 4b83c23b55..dfabe08d65 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -70,6 +70,7 @@ "@opentelemetry/core": "0.25.0", "@opentelemetry/exporter-otlp-http": "0.25.0", "@opentelemetry/exporter-otlp-proto": "0.25.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.25.0", "@opentelemetry/sdk-metrics-base": "0.25.0", "@opentelemetry/resources": "0.25.0", "protobufjs": "^6.9.0" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts index b44d67f17f..ec547329e8 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts @@ -18,11 +18,10 @@ import { otlpTypes, OTLPExporterNodeConfigBase, appendResourcePathToUrlIfNotPresent, -} from '../../../../packages/opentelemetry-exporter-otlp-http'; -import { toOTLPExportMetricServiceRequest } from '../../opentelemetry-exporter-metrics-otlp-http'; +} from '@opentelemetry/exporter-otlp-http'; +import { toOTLPExportMetricServiceRequest } from '@opentelemetry/exporter-metrics-otlp-http'; import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import { ServiceClientType, OTLPExporterNodeBase } from '../../../../packages/opentelemetry-exporter-otlp-proto'; -// import { OTLPExporterNodeBase } from './OTLPExporterNodeBase'; +import { ServiceClientType, OTLPExporterNodeBase } from '@opentelemetry/exporter-otlp-proto'; import { getEnv, baggageUtils } from '@opentelemetry/core'; const DEFAULT_COLLECTOR_RESOURCE_PATH = '/v1/metrics'; diff --git a/packages/opentelemetry-exporter-otlp-grpc/src/util.ts b/packages/opentelemetry-exporter-otlp-grpc/src/util.ts index 1e2e480383..7d1700805e 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/src/util.ts +++ b/packages/opentelemetry-exporter-otlp-grpc/src/util.ts @@ -82,6 +82,7 @@ export function send( onSuccess: () => void, onError: (error: otlpTypes.OTLPExporterError) => void ): void { + console.log(`SERVICE CLIENT IS: ${collector.serviceClient}`); if (collector.serviceClient) { const serviceRequest = collector.convert(objects); diff --git a/packages/opentelemetry-exporter-otlp-proto/package.json b/packages/opentelemetry-exporter-otlp-proto/package.json index 92bc7dc3b2..3c7243ed82 100644 --- a/packages/opentelemetry-exporter-otlp-proto/package.json +++ b/packages/opentelemetry-exporter-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-otlp-proto", - "version": "0.25.0", + "version": "0.25.1", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", From 16e7a9549c1ae8f6492d25c379108e246000730b Mon Sep 17 00:00:00 2001 From: William Armiros Date: Wed, 22 Sep 2021 02:49:44 -0700 Subject: [PATCH 10/17] removed debug logging --- .../test/OTLPMetricExporter.test.ts | 17 ++++++----------- .../src/util.ts | 1 - .../package.json | 2 +- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts index d5cc57dde7..99957e98af 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts @@ -92,9 +92,7 @@ const testOTLPMetricExporter = (params: TestParams) => try { exportedData = data.request.resourceMetrics; reqMetadata = data.metadata; - console.log(`Exporting data: ${exportedData} and metadata: ${JSON.stringify(reqMetadata)}`); } catch (e) { - console.log('Caught Export error: ' + e); exportedData = undefined; } }, @@ -102,18 +100,17 @@ const testOTLPMetricExporter = (params: TestParams) => ); const credentials = params.useTLS ? grpc.ServerCredentials.createSsl( - fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt'), + fs.readFileSync('./test/certs/ca.crt'), [ { - cert_chain: fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt'), - private_key: fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key'), + cert_chain: fs.readFileSync('./test/certs/server.crt'), + private_key: fs.readFileSync('./test/certs/server.key'), }, ] ) : grpc.ServerCredentials.createInsecure(); server.bindAsync(address, credentials, () => { server.start(); - console.log(`Server started on ${address}!!`); done(); }); }); @@ -121,15 +118,14 @@ const testOTLPMetricExporter = (params: TestParams) => after(() => { server.forceShutdown(); - console.log('Server shutdown!!'); }); beforeEach(async () => { const credentials = params.useTLS ? grpc.credentials.createSsl( - fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt'), - fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key'), - fs.readFileSync('/Users/armiros/opentelemetry/js/opentelemetry-js/willarmiros/opentelemetry-js/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt') + fs.readFileSync('./test/certs/ca.crt'), + fs.readFileSync('./test/certs/client.key'), + fs.readFileSync('./test/certs/client.crt') ) : undefined; collectorExporter = new OTLPMetricExporter({ @@ -198,7 +194,6 @@ const testOTLPMetricExporter = (params: TestParams) => const responseSpy = sinon.spy(); collectorExporter.export(metrics, responseSpy); setTimeout(() => { - console.log(`In assertion callback with exportedData: ${exportedData} and reqMetadata: ${JSON.stringify(reqMetadata)}`); assert.ok( typeof exportedData !== 'undefined', 'resource' + " doesn't exist" diff --git a/packages/opentelemetry-exporter-otlp-grpc/src/util.ts b/packages/opentelemetry-exporter-otlp-grpc/src/util.ts index 7d1700805e..1e2e480383 100644 --- a/packages/opentelemetry-exporter-otlp-grpc/src/util.ts +++ b/packages/opentelemetry-exporter-otlp-grpc/src/util.ts @@ -82,7 +82,6 @@ export function send( onSuccess: () => void, onError: (error: otlpTypes.OTLPExporterError) => void ): void { - console.log(`SERVICE CLIENT IS: ${collector.serviceClient}`); if (collector.serviceClient) { const serviceRequest = collector.convert(objects); diff --git a/packages/opentelemetry-exporter-otlp-proto/package.json b/packages/opentelemetry-exporter-otlp-proto/package.json index 3c7243ed82..92bc7dc3b2 100644 --- a/packages/opentelemetry-exporter-otlp-proto/package.json +++ b/packages/opentelemetry-exporter-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-otlp-proto", - "version": "0.25.1", + "version": "0.25.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", From c50cadae4a51f2c3d893a256d4914c2187fadf89 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Wed, 22 Sep 2021 02:59:46 -0700 Subject: [PATCH 11/17] added api to devdeps --- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 1 + .../opentelemetry-exporter-metrics-otlp-http/package.json | 1 + .../opentelemetry-exporter-metrics-otlp-proto/package.json | 1 + 3 files changed, 3 insertions(+) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index b71ec01d7a..602c7d350e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -48,6 +48,7 @@ }, "devDependencies": { "@babel/core": "7.15.0", + "@opentelemetry/api": "^1.0.2", "@opentelemetry/api-metrics": "0.25.0", "@types/mocha": "8.2.3", "@types/node": "14.17.11", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index edbc1df057..64ba1c2bc5 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -55,6 +55,7 @@ "access": "public" }, "devDependencies": { + "@opentelemetry/api": "^1.0.2", "@babel/core": "7.15.0", "@types/mocha": "8.2.3", "@types/node": "14.17.11", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index dfabe08d65..775409907b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -47,6 +47,7 @@ "access": "public" }, "devDependencies": { + "@opentelemetry/api": "^1.0.2", "@babel/core": "7.15.0", "@opentelemetry/api-metrics": "0.25.0", "@types/mocha": "8.2.3", From 07518152ae7d2cae62bb83504cff1386ebd1aa04 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 28 Sep 2021 22:05:50 -0500 Subject: [PATCH 12/17] fixed imports --- .../browser/CollectorMetricExporter.test.ts | 2 +- .../common/CollectorMetricExporter.test.ts | 2 +- .../test/metricsHelper.ts | 2 +- .../test/node/CollectorMetricExporter.test.ts | 2 +- .../test/traceHelper.ts | 204 +++++++++++------- .../test/traceHelper.ts | 204 +++++++----------- 6 files changed, 208 insertions(+), 208 deletions(-) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts index 95328f04db..628641c2c5 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts @@ -31,7 +31,7 @@ import { import * as assert from 'assert'; import * as sinon from 'sinon'; import { OTLPMetricExporter } from '../../src/platform/browser/index'; -import { otlpTypes } from '../../../../../packages/opentelemetry-exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; import { ensureCounterIsCorrect, ensureExportMetricsServiceRequestIsSet, diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts index 021c15a0bc..1763acb741 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts @@ -24,7 +24,7 @@ import { } from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import { OTLPExporterBase, otlpTypes } from '../../../../../packages/opentelemetry-exporter-otlp-http'; +import { OTLPExporterBase, otlpTypes } from '@opentelemetry/exporter-otlp-http'; import { mockCounter, mockObserver } from '../metricsHelper'; type CollectorExporterConfig = otlpTypes.OTLPExporterConfigBase; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts index 690fe9732c..955f847d27 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts @@ -27,7 +27,7 @@ import { InstrumentationLibrary, VERSION } from '@opentelemetry/core'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import * as assert from 'assert'; -import { otlpTypes } from '../../../../packages/opentelemetry-exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; const meterProvider = new metrics.MeterProvider({ interval: 30000, diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts index b101e1585c..e170008e4b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts @@ -34,7 +34,7 @@ import * as sinon from 'sinon'; import { OTLPMetricExporter, } from '../../src/platform/node'; -import { OTLPExporterNodeConfigBase, otlpTypes } from '../../../../../packages/opentelemetry-exporter-otlp-http'; +import { OTLPExporterNodeConfigBase, otlpTypes } from '@opentelemetry/exporter-otlp-http'; import { ensureCounterIsCorrect, ensureExportMetricsServiceRequestIsSet, diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts index 69af8afbfa..751f2ccdcc 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts @@ -15,28 +15,45 @@ */ import { SpanStatusCode, TraceFlags } from '@opentelemetry/api'; -import { hexToBase64 } from '@opentelemetry/core'; import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; import { Resource } from '@opentelemetry/resources'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; -import { Stream } from 'stream'; +import * as grpc from '@grpc/grpc-js'; +import { VERSION } from '@opentelemetry/core'; -const traceIdHex = '1f1008dc8e270e85c40a0d7c3939b278'; -const spanIdHex = '5e107261f64fa53e'; -const parentIdHex = '78a8915098864388'; +const traceIdArr = [ + 31, + 16, + 8, + 220, + 142, + 39, + 14, + 133, + 196, + 10, + 13, + 124, + 57, + 57, + 178, + 120, +]; +const spanIdArr = [94, 16, 114, 97, 246, 79, 165, 62]; +const parentIdArr = [120, 168, 145, 80, 152, 134, 67, 136]; export const mockedReadableSpan: ReadableSpan = { name: 'documentFetch', kind: 0, spanContext: () => { return { - traceId: traceIdHex, - spanId: spanIdHex, + traceId: '1f1008dc8e270e85c40a0d7c3939b278', + spanId: '5e107261f64fa53e', traceFlags: TraceFlags.SAMPLED, }; }, - parentSpanId: parentIdHex, + parentSpanId: '78a8915098864388', startTime: [1574120165, 429803070], endTime: [1574120165, 438688070], ended: true, @@ -45,8 +62,8 @@ export const mockedReadableSpan: ReadableSpan = { links: [ { context: { - traceId: traceIdHex, - spanId: parentIdHex, + traceId: '1f1008dc8e270e85c40a0d7c3939b278', + spanId: '78a8915098864388', traceFlags: TraceFlags.SAMPLED, }, attributes: { component: 'document-load' }, @@ -75,66 +92,74 @@ export const mockedReadableSpan: ReadableSpan = { }, ], duration: [0, 8885000], - resource: new Resource({ + resource: Resource.default().merge(new Resource({ service: 'ui', version: 1, cost: 112.12, - }), + })), instrumentationLibrary: { name: 'default', version: '0.0.1' }, }; -export function ensureProtoEventsAreCorrect( +export function ensureExportedEventsAreCorrect( events: otlpTypes.opentelemetryProto.trace.v1.Span.Event[] ) { assert.deepStrictEqual( events, [ { + attributes: [], timeUnixNano: '1574120165429803008', name: 'fetchStart', droppedAttributesCount: 0, }, { + attributes: [], timeUnixNano: '1574120165429803008', name: 'domainLookupStart', droppedAttributesCount: 0, }, { + attributes: [], timeUnixNano: '1574120165429803008', name: 'domainLookupEnd', droppedAttributesCount: 0, }, { + attributes: [], timeUnixNano: '1574120165429803008', name: 'connectStart', droppedAttributesCount: 0, }, { + attributes: [], timeUnixNano: '1574120165429803008', name: 'connectEnd', droppedAttributesCount: 0, }, { + attributes: [], timeUnixNano: '1574120165435513088', name: 'requestStart', droppedAttributesCount: 0, }, { + attributes: [], timeUnixNano: '1574120165436923136', name: 'responseStart', droppedAttributesCount: 0, }, { + attributes: [], timeUnixNano: '1574120165438688000', name: 'responseEnd', droppedAttributesCount: 0, }, ], - 'events are incorrect' + 'exported events are incorrect' ); } -export function ensureProtoAttributesAreCorrect( +export function ensureExportedAttributesAreCorrect( attributes: otlpTypes.opentelemetryProto.common.v1.KeyValue[] ) { assert.deepStrictEqual( @@ -144,62 +169,66 @@ export function ensureProtoAttributesAreCorrect( key: 'component', value: { stringValue: 'document-load', + value: 'stringValue', }, }, ], - 'attributes are incorrect' + 'exported attributes are incorrect' ); } -export function ensureProtoLinksAreCorrect( +export function ensureExportedLinksAreCorrect( attributes: otlpTypes.opentelemetryProto.trace.v1.Span.Link[] ) { assert.deepStrictEqual( attributes, [ { - traceId: hexToBase64(traceIdHex), - spanId: hexToBase64(parentIdHex), attributes: [ { key: 'component', value: { stringValue: 'document-load', + value: 'stringValue', }, }, ], + traceId: Buffer.from(traceIdArr), + spanId: Buffer.from(parentIdArr), + traceState: '', droppedAttributesCount: 0, }, ], - 'links are incorrect' + 'exported links are incorrect' ); } -export function ensureProtoSpanIsCorrect( +export function ensureExportedSpanIsCorrect( span: otlpTypes.opentelemetryProto.trace.v1.Span ) { if (span.attributes) { - ensureProtoAttributesAreCorrect(span.attributes); + ensureExportedAttributesAreCorrect(span.attributes); } if (span.events) { - ensureProtoEventsAreCorrect(span.events); + ensureExportedEventsAreCorrect(span.events); } if (span.links) { - ensureProtoLinksAreCorrect(span.links); + ensureExportedLinksAreCorrect(span.links); } assert.deepStrictEqual( span.traceId, - hexToBase64(traceIdHex), - 'traceId is' + ' wrong' + Buffer.from(traceIdArr), + 'traceId is wrong' ); assert.deepStrictEqual( span.spanId, - hexToBase64(spanIdHex), - 'spanId is' + ' wrong' + Buffer.from(spanIdArr), + 'spanId is wrong' ); + assert.strictEqual(span.traceState, '', 'traceState is wrong'); assert.deepStrictEqual( span.parentSpanId, - hexToBase64(parentIdHex), + Buffer.from(parentIdArr), 'parentIdArr is wrong' ); assert.strictEqual(span.name, 'documentFetch', 'name is wrong'); @@ -223,59 +252,80 @@ export function ensureProtoSpanIsCorrect( assert.strictEqual(span.droppedLinksCount, 0, 'droppedLinksCount is wrong'); assert.deepStrictEqual( span.status, - { code: 'STATUS_CODE_OK' }, + { + code: 'STATUS_CODE_OK', + deprecatedCode: 'DEPRECATED_STATUS_CODE_OK', + message: '', + }, 'status is wrong' ); } -export function ensureExportTraceServiceRequestIsSet( - json: otlpTypes.opentelemetryProto.collector.trace.v1.ExportTraceServiceRequest +export function ensureResourceIsCorrect( + resource: otlpTypes.opentelemetryProto.resource.v1.Resource ) { - const resourceSpans = json.resourceSpans; - assert.strictEqual( - resourceSpans && resourceSpans.length, - 1, - 'resourceSpans is missing' - ); - - const resource = resourceSpans[0].resource; - assert.strictEqual(!!resource, true, 'resource is missing'); - - const instrumentationLibrarySpans = - resourceSpans[0].instrumentationLibrarySpans; - assert.strictEqual( - instrumentationLibrarySpans && instrumentationLibrarySpans.length, - 1, - 'instrumentationLibrarySpans is missing' - ); - - const instrumentationLibrary = - instrumentationLibrarySpans[0].instrumentationLibrary; - assert.strictEqual( - !!instrumentationLibrary, - true, - 'instrumentationLibrary is missing' - ); - - const spans = instrumentationLibrarySpans[0].spans; - assert.strictEqual(spans && spans.length, 1, 'spans are missing'); + assert.deepStrictEqual(resource, { + attributes: [ + { + 'key': 'service.name', + 'value': { + 'stringValue': `unknown_service:${process.argv0}`, + 'value': 'stringValue' + } + }, + { + 'key': 'telemetry.sdk.language', + 'value': { + 'stringValue': 'nodejs', + 'value': 'stringValue' + } + }, + { + 'key': 'telemetry.sdk.name', + 'value': { + 'stringValue': 'opentelemetry', + 'value': 'stringValue' + } + }, + { + 'key': 'telemetry.sdk.version', + 'value': { + 'stringValue': VERSION, + 'value': 'stringValue' + } + }, + { + key: 'service', + value: { + stringValue: 'ui', + value: 'stringValue', + }, + }, + { + key: 'version', + value: { + intValue: '1', + value: 'intValue', + }, + }, + { + key: 'cost', + value: { + doubleValue: 112.12, + value: 'doubleValue', + }, + }, + ], + droppedAttributesCount: 0, + }); } -export class MockedResponse extends Stream { - constructor(private _code: number, private _msg?: string) { - super(); - } - - send(data: string) { - this.emit('data', data); - this.emit('end'); - } - - get statusCode() { - return this._code; - } - - get statusMessage() { - return this._msg; - } +export function ensureMetadataIsCorrect( + actual: grpc.Metadata, + expected: grpc.Metadata +) { + //ignore user agent + expected.remove('user-agent'); + actual.remove('user-agent'); + assert.deepStrictEqual(actual.getMap(), expected.getMap()); } diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts b/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts index 751f2ccdcc..69af8afbfa 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts @@ -15,45 +15,28 @@ */ import { SpanStatusCode, TraceFlags } from '@opentelemetry/api'; +import { hexToBase64 } from '@opentelemetry/core'; import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; import { Resource } from '@opentelemetry/resources'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; -import * as grpc from '@grpc/grpc-js'; -import { VERSION } from '@opentelemetry/core'; +import { Stream } from 'stream'; -const traceIdArr = [ - 31, - 16, - 8, - 220, - 142, - 39, - 14, - 133, - 196, - 10, - 13, - 124, - 57, - 57, - 178, - 120, -]; -const spanIdArr = [94, 16, 114, 97, 246, 79, 165, 62]; -const parentIdArr = [120, 168, 145, 80, 152, 134, 67, 136]; +const traceIdHex = '1f1008dc8e270e85c40a0d7c3939b278'; +const spanIdHex = '5e107261f64fa53e'; +const parentIdHex = '78a8915098864388'; export const mockedReadableSpan: ReadableSpan = { name: 'documentFetch', kind: 0, spanContext: () => { return { - traceId: '1f1008dc8e270e85c40a0d7c3939b278', - spanId: '5e107261f64fa53e', + traceId: traceIdHex, + spanId: spanIdHex, traceFlags: TraceFlags.SAMPLED, }; }, - parentSpanId: '78a8915098864388', + parentSpanId: parentIdHex, startTime: [1574120165, 429803070], endTime: [1574120165, 438688070], ended: true, @@ -62,8 +45,8 @@ export const mockedReadableSpan: ReadableSpan = { links: [ { context: { - traceId: '1f1008dc8e270e85c40a0d7c3939b278', - spanId: '78a8915098864388', + traceId: traceIdHex, + spanId: parentIdHex, traceFlags: TraceFlags.SAMPLED, }, attributes: { component: 'document-load' }, @@ -92,74 +75,66 @@ export const mockedReadableSpan: ReadableSpan = { }, ], duration: [0, 8885000], - resource: Resource.default().merge(new Resource({ + resource: new Resource({ service: 'ui', version: 1, cost: 112.12, - })), + }), instrumentationLibrary: { name: 'default', version: '0.0.1' }, }; -export function ensureExportedEventsAreCorrect( +export function ensureProtoEventsAreCorrect( events: otlpTypes.opentelemetryProto.trace.v1.Span.Event[] ) { assert.deepStrictEqual( events, [ { - attributes: [], timeUnixNano: '1574120165429803008', name: 'fetchStart', droppedAttributesCount: 0, }, { - attributes: [], timeUnixNano: '1574120165429803008', name: 'domainLookupStart', droppedAttributesCount: 0, }, { - attributes: [], timeUnixNano: '1574120165429803008', name: 'domainLookupEnd', droppedAttributesCount: 0, }, { - attributes: [], timeUnixNano: '1574120165429803008', name: 'connectStart', droppedAttributesCount: 0, }, { - attributes: [], timeUnixNano: '1574120165429803008', name: 'connectEnd', droppedAttributesCount: 0, }, { - attributes: [], timeUnixNano: '1574120165435513088', name: 'requestStart', droppedAttributesCount: 0, }, { - attributes: [], timeUnixNano: '1574120165436923136', name: 'responseStart', droppedAttributesCount: 0, }, { - attributes: [], timeUnixNano: '1574120165438688000', name: 'responseEnd', droppedAttributesCount: 0, }, ], - 'exported events are incorrect' + 'events are incorrect' ); } -export function ensureExportedAttributesAreCorrect( +export function ensureProtoAttributesAreCorrect( attributes: otlpTypes.opentelemetryProto.common.v1.KeyValue[] ) { assert.deepStrictEqual( @@ -169,66 +144,62 @@ export function ensureExportedAttributesAreCorrect( key: 'component', value: { stringValue: 'document-load', - value: 'stringValue', }, }, ], - 'exported attributes are incorrect' + 'attributes are incorrect' ); } -export function ensureExportedLinksAreCorrect( +export function ensureProtoLinksAreCorrect( attributes: otlpTypes.opentelemetryProto.trace.v1.Span.Link[] ) { assert.deepStrictEqual( attributes, [ { + traceId: hexToBase64(traceIdHex), + spanId: hexToBase64(parentIdHex), attributes: [ { key: 'component', value: { stringValue: 'document-load', - value: 'stringValue', }, }, ], - traceId: Buffer.from(traceIdArr), - spanId: Buffer.from(parentIdArr), - traceState: '', droppedAttributesCount: 0, }, ], - 'exported links are incorrect' + 'links are incorrect' ); } -export function ensureExportedSpanIsCorrect( +export function ensureProtoSpanIsCorrect( span: otlpTypes.opentelemetryProto.trace.v1.Span ) { if (span.attributes) { - ensureExportedAttributesAreCorrect(span.attributes); + ensureProtoAttributesAreCorrect(span.attributes); } if (span.events) { - ensureExportedEventsAreCorrect(span.events); + ensureProtoEventsAreCorrect(span.events); } if (span.links) { - ensureExportedLinksAreCorrect(span.links); + ensureProtoLinksAreCorrect(span.links); } assert.deepStrictEqual( span.traceId, - Buffer.from(traceIdArr), - 'traceId is wrong' + hexToBase64(traceIdHex), + 'traceId is' + ' wrong' ); assert.deepStrictEqual( span.spanId, - Buffer.from(spanIdArr), - 'spanId is wrong' + hexToBase64(spanIdHex), + 'spanId is' + ' wrong' ); - assert.strictEqual(span.traceState, '', 'traceState is wrong'); assert.deepStrictEqual( span.parentSpanId, - Buffer.from(parentIdArr), + hexToBase64(parentIdHex), 'parentIdArr is wrong' ); assert.strictEqual(span.name, 'documentFetch', 'name is wrong'); @@ -252,80 +223,59 @@ export function ensureExportedSpanIsCorrect( assert.strictEqual(span.droppedLinksCount, 0, 'droppedLinksCount is wrong'); assert.deepStrictEqual( span.status, - { - code: 'STATUS_CODE_OK', - deprecatedCode: 'DEPRECATED_STATUS_CODE_OK', - message: '', - }, + { code: 'STATUS_CODE_OK' }, 'status is wrong' ); } -export function ensureResourceIsCorrect( - resource: otlpTypes.opentelemetryProto.resource.v1.Resource +export function ensureExportTraceServiceRequestIsSet( + json: otlpTypes.opentelemetryProto.collector.trace.v1.ExportTraceServiceRequest ) { - assert.deepStrictEqual(resource, { - attributes: [ - { - 'key': 'service.name', - 'value': { - 'stringValue': `unknown_service:${process.argv0}`, - 'value': 'stringValue' - } - }, - { - 'key': 'telemetry.sdk.language', - 'value': { - 'stringValue': 'nodejs', - 'value': 'stringValue' - } - }, - { - 'key': 'telemetry.sdk.name', - 'value': { - 'stringValue': 'opentelemetry', - 'value': 'stringValue' - } - }, - { - 'key': 'telemetry.sdk.version', - 'value': { - 'stringValue': VERSION, - 'value': 'stringValue' - } - }, - { - key: 'service', - value: { - stringValue: 'ui', - value: 'stringValue', - }, - }, - { - key: 'version', - value: { - intValue: '1', - value: 'intValue', - }, - }, - { - key: 'cost', - value: { - doubleValue: 112.12, - value: 'doubleValue', - }, - }, - ], - droppedAttributesCount: 0, - }); + const resourceSpans = json.resourceSpans; + assert.strictEqual( + resourceSpans && resourceSpans.length, + 1, + 'resourceSpans is missing' + ); + + const resource = resourceSpans[0].resource; + assert.strictEqual(!!resource, true, 'resource is missing'); + + const instrumentationLibrarySpans = + resourceSpans[0].instrumentationLibrarySpans; + assert.strictEqual( + instrumentationLibrarySpans && instrumentationLibrarySpans.length, + 1, + 'instrumentationLibrarySpans is missing' + ); + + const instrumentationLibrary = + instrumentationLibrarySpans[0].instrumentationLibrary; + assert.strictEqual( + !!instrumentationLibrary, + true, + 'instrumentationLibrary is missing' + ); + + const spans = instrumentationLibrarySpans[0].spans; + assert.strictEqual(spans && spans.length, 1, 'spans are missing'); } -export function ensureMetadataIsCorrect( - actual: grpc.Metadata, - expected: grpc.Metadata -) { - //ignore user agent - expected.remove('user-agent'); - actual.remove('user-agent'); - assert.deepStrictEqual(actual.getMap(), expected.getMap()); +export class MockedResponse extends Stream { + constructor(private _code: number, private _msg?: string) { + super(); + } + + send(data: string) { + this.emit('data', data); + this.emit('end'); + } + + get statusCode() { + return this._code; + } + + get statusMessage() { + return this._msg; + } } From 211fa127b870c81307237528fbf2fd8a7e45d669 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 5 Oct 2021 16:37:58 -0700 Subject: [PATCH 13/17] updated versions to latest --- .../package.json | 16 ++++++++-------- .../package.json | 12 ++++++------ .../package.json | 16 ++++++++-------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 602c7d350e..5648c46bd1 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-grpc", - "version": "0.25.0", + "version": "0.26.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@babel/core": "7.15.0", "@opentelemetry/api": "^1.0.2", - "@opentelemetry/api-metrics": "0.25.0", + "@opentelemetry/api-metrics": "0.26.0", "@types/mocha": "8.2.3", "@types/node": "14.17.11", "@types/sinon": "10.0.2", @@ -69,11 +69,11 @@ "dependencies": { "@grpc/grpc-js": "^1.3.7", "@grpc/proto-loader": "^0.6.4", - "@opentelemetry/core": "0.25.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.25.0", - "@opentelemetry/exporter-otlp-http": "0.25.0", - "@opentelemetry/exporter-otlp-grpc": "0.25.0", - "@opentelemetry/sdk-metrics-base": "0.25.0", - "@opentelemetry/resources": "0.25.0" + "@opentelemetry/core": "1.0.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.26.0", + "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/exporter-otlp-grpc": "0.26.0", + "@opentelemetry/sdk-metrics-base": "0.26.0", + "@opentelemetry/resources": "1.0.0" } } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 64ba1c2bc5..07fdb5385d 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-http", - "version": "0.25.0", + "version": "0.26.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -86,10 +86,10 @@ "@opentelemetry/api": "^1.0.2" }, "dependencies": { - "@opentelemetry/api-metrics": "0.25.0", - "@opentelemetry/core": "0.25.0", - "@opentelemetry/exporter-otlp-http": "0.25.0", - "@opentelemetry/resources": "0.25.0", - "@opentelemetry/sdk-metrics-base": "0.25.0" + "@opentelemetry/api-metrics": "0.26.0", + "@opentelemetry/core": "1.0.0", + "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/resources": "1.0.0", + "@opentelemetry/sdk-metrics-base": "0.26.0" } } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 775409907b..86964b3dba 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-proto", - "version": "0.25.0", + "version": "0.26.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.0.2", "@babel/core": "7.15.0", - "@opentelemetry/api-metrics": "0.25.0", + "@opentelemetry/api-metrics": "0.26.0", "@types/mocha": "8.2.3", "@types/node": "14.17.11", "@types/sinon": "10.0.2", @@ -68,12 +68,12 @@ }, "dependencies": { "@grpc/proto-loader": "^0.6.4", - "@opentelemetry/core": "0.25.0", - "@opentelemetry/exporter-otlp-http": "0.25.0", - "@opentelemetry/exporter-otlp-proto": "0.25.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.25.0", - "@opentelemetry/sdk-metrics-base": "0.25.0", - "@opentelemetry/resources": "0.25.0", + "@opentelemetry/core": "1.0.0", + "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/exporter-otlp-proto": "0.26.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.26.0", + "@opentelemetry/sdk-metrics-base": "0.26.0", + "@opentelemetry/resources": "1.0.0", "protobufjs": "^6.9.0" } } From 8b3571f60a06949714025288d193beaba8f75a78 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Mon, 25 Oct 2021 23:20:45 -0700 Subject: [PATCH 14/17] applied changes from #2496 to metricHelpers --- .../test/metricsHelper.ts | 40 +++++++++---------- .../test/metricsHelper.ts | 40 +++++++++---------- .../browser/CollectorTraceExporter.test.ts | 2 +- .../test/browser/util.test.ts | 2 +- .../common/CollectorTraceExporter.test.ts | 2 +- .../test/common/transform.test.ts | 2 +- .../test/node/CollectorTraceExporter.test.ts | 2 +- .../test/{helper.ts => traceHelper.ts} | 0 8 files changed, 45 insertions(+), 45 deletions(-) rename experimental/packages/opentelemetry-exporter-otlp-http/test/{helper.ts => traceHelper.ts} (100%) diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts index 89431a5d42..74f3e0903e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts @@ -16,9 +16,9 @@ import { Counter, - ObserverResult, - ValueObserver, - ValueRecorder, + ObservableResult, + ObservableGauge, + Histogram, ValueType, } from '@opentelemetry/api-metrics'; import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; @@ -52,16 +52,16 @@ export function mockCounter(): metrics.Metric & Counter { return metric; } -export function mockObserver( - callback: (observerResult: ObserverResult) => void -): metrics.Metric & ValueObserver { - const name = 'double-observer'; +export function mockObservableGauge( + callback: (observableResult: ObservableResult) => void +): metrics.Metric & ObservableGauge { + const name = 'double-observable-gauge'; const metric = meter['_metrics'].get(name) || - meter.createValueObserver( + meter.createObservableGauge( name, { - description: 'sample observer description', + description: 'sample observable gauge description', valueType: ValueType.DOUBLE, }, callback @@ -71,13 +71,13 @@ export function mockObserver( return metric; } -export function mockValueRecorder(): metrics.Metric & - ValueRecorder { - const name = 'int-recorder'; +export function mockHistogram(): metrics.Metric & + Histogram { + const name = 'int-histogram'; const metric = meter['_metrics'].get(name) || - meter.createValueRecorder(name, { - description: 'sample recorder description', + meter.createHistogram(name, { + description: 'sample histogram description', valueType: ValueType.INT, boundaries: [0, 100], }); @@ -129,13 +129,13 @@ export function ensureExportedCounterIsCorrect( }); } -export function ensureExportedObserverIsCorrect( +export function ensureExportedObservableGaugeIsCorrect( metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, time?: number ) { assert.deepStrictEqual(metric, { - name: 'double-observer', - description: 'sample observer description', + name: 'double-observable-gauge', + description: 'sample observable gauge description', unit: '1', data: 'doubleGauge', doubleGauge: { @@ -152,15 +152,15 @@ export function ensureExportedObserverIsCorrect( }); } -export function ensureExportedValueRecorderIsCorrect( +export function ensureExportedHistogramIsCorrect( metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, time?: number, explicitBounds: number[] = [Infinity], bucketCounts: string[] = ['2', '0'] ) { assert.deepStrictEqual(metric, { - name: 'int-recorder', - description: 'sample recorder description', + name: 'int-histogram', + description: 'sample histogram description', unit: '1', data: 'intHistogram', intHistogram: { diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts index 5ceac47704..8241e0fcd5 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts @@ -16,9 +16,9 @@ import { Counter, - ObserverResult, - ValueObserver, - ValueRecorder, + ObservableResult, + ObservableGauge, + Histogram, ValueType, } from '@opentelemetry/api-metrics'; import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; @@ -51,16 +51,16 @@ export function mockCounter(): metrics.Metric & Counter { return metric; } -export function mockObserver( - callback: (observerResult: ObserverResult) => void -): metrics.Metric & ValueObserver { - const name = 'double-observer'; +export function mockObservableGauge( + callback: (observableResult: ObservableResult) => void +): metrics.Metric & ObservableGauge { + const name = 'double-observable-gauge'; const metric = meter['_metrics'].get(name) || - meter.createValueObserver( + meter.createObservableGauge( name, { - description: 'sample observer description', + description: 'sample observable gauge description', valueType: ValueType.DOUBLE, }, callback @@ -70,13 +70,13 @@ export function mockObserver( return metric; } -export function mockValueRecorder(): metrics.Metric & - ValueRecorder { - const name = 'int-recorder'; +export function mockHistogram(): metrics.Metric & + Histogram { + const name = 'int-histogram'; const metric = meter['_metrics'].get(name) || - meter.createValueRecorder(name, { - description: 'sample recorder description', + meter.createHistogram(name, { + description: 'sample histogram description', valueType: ValueType.INT, boundaries: [0, 100], }); @@ -124,13 +124,13 @@ export function ensureExportedCounterIsCorrect( }); } -export function ensureExportedObserverIsCorrect( +export function ensureExportedObservableGaugeIsCorrect( metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, time?: number ) { assert.deepStrictEqual(metric, { - name: 'double-observer', - description: 'sample observer description', + name: 'double-observable-gauge', + description: 'sample observable gauge description', unit: '1', doubleGauge: { dataPoints: [ @@ -144,15 +144,15 @@ export function ensureExportedObserverIsCorrect( }); } -export function ensureExportedValueRecorderIsCorrect( +export function ensureExportedHistogramIsCorrect( metric: otlpTypes.opentelemetryProto.metrics.v1.Metric, time?: number, explicitBounds: number[] = [Infinity], bucketCounts: string[] = ['2', '0'] ) { assert.deepStrictEqual(metric, { - name: 'int-recorder', - description: 'sample recorder description', + name: 'int-histogram', + description: 'sample histogram description', unit: '1', intHistogram: { dataPoints: [ diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorTraceExporter.test.ts index 33cc33fff8..0a709a953f 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorTraceExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorTraceExporter.test.ts @@ -29,7 +29,7 @@ import { ensureWebResourceIsCorrect, ensureHeadersContain, mockedReadableSpan, -} from '../helper'; +} from '../traceHelper'; describe('OTLPTraceExporter - web', () => { let collectorTraceExporter: OTLPTraceExporter; diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/util.test.ts b/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/util.test.ts index ecb6c4c801..c4cb185da1 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/util.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/util.test.ts @@ -16,7 +16,7 @@ import * as sinon from 'sinon'; import { sendWithXhr } from '../../src/platform/browser/util'; -import { ensureHeadersContain } from '../helper'; +import { ensureHeadersContain } from '../traceHelper'; describe('util - browser', () => { let server: any; diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/common/CollectorTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-otlp-http/test/common/CollectorTraceExporter.test.ts index f489a74906..945c059e5b 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/test/common/CollectorTraceExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-http/test/common/CollectorTraceExporter.test.ts @@ -20,7 +20,7 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; import { OTLPExporterBase } from '../../src/OTLPExporterBase'; import { OTLPExporterConfigBase } from '../../src/types'; -import { mockedReadableSpan } from '../helper'; +import { mockedReadableSpan } from '../traceHelper'; import * as otlpTypes from '../../src/types'; type CollectorExporterConfig = OTLPExporterConfigBase; diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/common/transform.test.ts b/experimental/packages/opentelemetry-exporter-otlp-http/test/common/transform.test.ts index 0328aaea67..b2dfdf2145 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/test/common/transform.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-http/test/common/transform.test.ts @@ -25,7 +25,7 @@ import { mockedInstrumentationLibraries, multiResourceTrace, multiInstrumentationLibraryTrace, -} from '../helper'; +} from '../traceHelper'; import { Resource } from '@opentelemetry/resources'; describe('transform', () => { describe('toCollectorAttributes', () => { diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/node/CollectorTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-otlp-http/test/node/CollectorTraceExporter.test.ts index 8988572b67..33c9559dc9 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/test/node/CollectorTraceExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-http/test/node/CollectorTraceExporter.test.ts @@ -34,7 +34,7 @@ import { ensureExportTraceServiceRequestIsSet, ensureSpanIsCorrect, mockedReadableSpan, -} from '../helper'; +} from '../traceHelper'; let fakeRequest: PassThrough; diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/helper.ts b/experimental/packages/opentelemetry-exporter-otlp-http/test/traceHelper.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/helper.ts rename to experimental/packages/opentelemetry-exporter-otlp-http/test/traceHelper.ts From 752463ef1955aec269ea417acc58e63046aadafd Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 26 Oct 2021 10:09:17 -0700 Subject: [PATCH 15/17] renamed exporter-otlp-http -> exporter-trace-otlp-http --- README.md | 6 ++++++ .../package.json | 2 +- .../src/OTLPMetricExporter.ts | 2 +- .../test/OTLPMetricExporter.test.ts | 2 +- .../test/metricsHelper.ts | 2 +- .../README.md | 2 +- .../package.json | 2 +- .../src/platform/browser/OTLPMetricExporter.ts | 3 +-- .../src/platform/node/OTLPMetricExporter.ts | 2 +- .../src/transformMetrics.ts | 2 +- .../test/browser/CollectorMetricExporter.test.ts | 2 +- .../test/common/CollectorMetricExporter.test.ts | 2 +- .../test/metricsHelper.ts | 2 +- .../test/node/CollectorMetricExporter.test.ts | 2 +- .../README.md | 2 +- .../package.json | 2 +- .../src/OTLPMetricExporter.ts | 2 +- .../test/OTLPMetricExporter.test.ts | 2 +- .../test/metricsHelper.ts | 2 +- .../package.json | 2 +- .../src/OTLPExporterNodeBase.ts | 2 +- .../src/OTLPTraceExporter.ts | 2 +- .../src/types.ts | 2 +- .../opentelemetry-exporter-otlp-grpc/src/util.ts | 2 +- .../test/OTLPExporterNodeBase.test.ts | 2 +- .../test/OTLPTraceExporter.test.ts | 2 +- .../test/traceHelper.ts | 2 +- .../tsconfig.json | 2 +- .../package.json | 2 +- .../src/OTLPExporterNodeBase.ts | 2 +- .../src/OTLPTraceExporter.ts | 2 +- .../src/util.ts | 2 +- .../test/OTLPTraceExporter.test.ts | 2 +- .../test/traceHelper.ts | 2 +- .../tsconfig.json | 2 +- .../.eslintignore | 0 .../.eslintrc.js | 0 .../.npmignore | 0 .../LICENSE | 0 .../README.md | 16 ++++++++-------- .../karma.conf.js | 0 .../package.json | 4 ++-- .../src/OTLPExporterBase.ts | 0 .../src/index.ts | 0 .../platform/browser/OTLPExporterBrowserBase.ts | 0 .../src/platform/browser/OTLPTraceExporter.ts | 0 .../src/platform/browser/index.ts | 0 .../src/platform/browser/util.ts | 0 .../src/platform/index.ts | 0 .../src/platform/node/OTLPExporterNodeBase.ts | 0 .../src/platform/node/OTLPTraceExporter.ts | 0 .../src/platform/node/index.ts | 0 .../src/platform/node/types.ts | 0 .../src/platform/node/util.ts | 0 .../src/transform.ts | 0 .../src/types.ts | 0 .../src/util.ts | 0 .../test/browser/CollectorTraceExporter.test.ts | 0 .../test/browser/index-webpack.ts | 0 .../test/browser/util.test.ts | 0 .../test/certs/ca.crt | 0 .../test/certs/ca.key | 0 .../test/certs/client.crt | 0 .../test/certs/client.csr | 0 .../test/certs/client.key | 0 .../test/certs/regenerate.sh | 0 .../test/certs/server.crt | 0 .../test/certs/server.csr | 0 .../test/certs/server.key | 0 .../test/common/CollectorTraceExporter.test.ts | 0 .../test/common/transform.test.ts | 0 .../test/common/utils.test.ts | 0 .../test/node/CollectorTraceExporter.test.ts | 0 .../test/node/nodeHelpers.ts | 0 .../test/traceHelper.ts | 0 .../tsconfig.esm.json | 0 .../tsconfig.json | 0 experimental/tsconfig.esm.json | 2 +- experimental/tsconfig.json | 2 +- tsconfig.json | 2 +- 80 files changed, 53 insertions(+), 48 deletions(-) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/.eslintignore (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/.eslintrc.js (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/.npmignore (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/LICENSE (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/README.md (94%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/karma.conf.js (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/package.json (93%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/OTLPExporterBase.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/index.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/browser/OTLPExporterBrowserBase.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/browser/OTLPTraceExporter.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/browser/index.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/browser/util.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/index.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/node/OTLPExporterNodeBase.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/node/OTLPTraceExporter.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/node/index.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/node/types.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/platform/node/util.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/transform.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/types.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/src/util.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/browser/CollectorTraceExporter.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/browser/index-webpack.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/browser/util.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/ca.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/ca.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/client.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/client.csr (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/client.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/regenerate.sh (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/server.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/server.csr (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/certs/server.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/common/CollectorTraceExporter.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/common/transform.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/common/utils.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/node/CollectorTraceExporter.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/node/nodeHelpers.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/test/traceHelper.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/tsconfig.esm.json (100%) rename experimental/packages/{opentelemetry-exporter-otlp-http => opentelemetry-exporter-trace-otlp-http}/tsconfig.json (100%) diff --git a/README.md b/README.md index 45e83be795..1a03944dfe 100644 --- a/README.md +++ b/README.md @@ -288,6 +288,12 @@ To request automatic tracing support for a module not on this list, please [file ### 0.26.x to 0.27.x +Metric and trace exporters are split into separate packages: + +- `@opentelemetry/exporter-otlp-http` => `@opentelemetry/exporter-trace-otlp-http` and `@opentelemetry/exporter-metrics-otlp-http` +- `@opentelemetry/exporter-otlp-grpc` => `@opentelemetry/exporter-trace-otlp-grpc` and `@opentelemetry/exporter-metrics-otlp-grpc` +- `@opentelemetry/exporter-otlp-proto` => `@opentelemetry/exporter-trace-otlp-proto` and `@opentelemetry/exporter-metrics-otlp-proto` + Metric types are renamed: - `@openetelemetry/api-metrics` diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 5648c46bd1..9b234dda2a 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -71,7 +71,7 @@ "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "1.0.0", "@opentelemetry/exporter-metrics-otlp-http": "0.26.0", - "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/exporter-trace-otlp-http": "0.26.0", "@opentelemetry/exporter-otlp-grpc": "0.26.0", "@opentelemetry/sdk-metrics-base": "0.26.0", "@opentelemetry/resources": "1.0.0" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts index 95ce2374f6..6f298eb0f3 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { toOTLPExportMetricServiceRequest } from '@opentelemetry/exporter-metrics-otlp-http' import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; import { diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts index d7b60b40f4..569bd2e500 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts @@ -21,7 +21,7 @@ import { Histogram, } from '@opentelemetry/api-metrics'; import { diag } from '@opentelemetry/api'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as fs from 'fs'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts index 74f3e0903e..7fd582968d 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/metricsHelper.ts @@ -21,7 +21,7 @@ import { Histogram, ValueType, } from '@opentelemetry/api-metrics'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import * as assert from 'assert'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md index 7b2fad0de7..791d1acb10 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md @@ -128,4 +128,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [opentelemetry-spec-protocol-exporter]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service -[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-otlp-http +[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-trace-otlp-http diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 07fdb5385d..19fae07921 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -88,7 +88,7 @@ "dependencies": { "@opentelemetry/api-metrics": "0.26.0", "@opentelemetry/core": "1.0.0", - "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/exporter-trace-otlp-http": "0.26.0", "@opentelemetry/resources": "1.0.0", "@opentelemetry/sdk-metrics-base": "0.26.0" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts index a32375f2a5..b19eb0070b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts @@ -15,8 +15,7 @@ */ import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import { OTLPExporterBrowserBase, otlpTypes, appendResourcePathToUrlIfNotPresent } from '@opentelemetry/exporter-otlp-http'; -// import { } from '@opentelemetry/exporter-otlp-http' +import { OTLPExporterBrowserBase, otlpTypes, appendResourcePathToUrlIfNotPresent } from '@opentelemetry/exporter-trace-otlp-http'; import { toOTLPExportMetricServiceRequest } from '../../transformMetrics'; import { getEnv, baggageUtils } from '@opentelemetry/core'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts index 8c29c56717..05bf6af767 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/node/OTLPMetricExporter.ts @@ -20,7 +20,7 @@ import { OTLPExporterNodeConfigBase, otlpTypes, appendResourcePathToUrlIfNotPresent -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { toOTLPExportMetricServiceRequest } from '../../transformMetrics'; import { getEnv, baggageUtils } from '@opentelemetry/core'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts index a5da4ee228..c7b9169563 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/transformMetrics.ts @@ -24,7 +24,7 @@ import { MetricRecord, } from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; -import { OTLPExporterBase, otlpTypes, toCollectorResource } from '@opentelemetry/exporter-otlp-http'; +import { OTLPExporterBase, otlpTypes, toCollectorResource } from '@opentelemetry/exporter-trace-otlp-http'; /** * Converts labels diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts index 22b0fc0840..ed31149691 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts @@ -31,7 +31,7 @@ import { import * as assert from 'assert'; import * as sinon from 'sinon'; import { OTLPMetricExporter } from '../../src/platform/browser/index'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { ensureCounterIsCorrect, ensureExportMetricsServiceRequestIsSet, diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts index 0705a04fbd..91b678d2a2 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/CollectorMetricExporter.test.ts @@ -24,7 +24,7 @@ import { } from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import { OTLPExporterBase, otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { OTLPExporterBase, otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { mockCounter, mockObservableGauge } from '../metricsHelper'; type CollectorExporterConfig = otlpTypes.OTLPExporterConfigBase; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts index 7976688c32..830be337f0 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/metricsHelper.ts @@ -27,7 +27,7 @@ import { InstrumentationLibrary, VERSION } from '@opentelemetry/core'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import * as assert from 'assert'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; const meterProvider = new metrics.MeterProvider({ interval: 30000, diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts index f47da39187..f0beecd795 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts @@ -34,7 +34,7 @@ import * as sinon from 'sinon'; import { OTLPMetricExporter, } from '../../src/platform/node'; -import { OTLPExporterNodeConfigBase, otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { OTLPExporterNodeConfigBase, otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { ensureCounterIsCorrect, ensureExportMetricsServiceRequestIsSet, diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md index f7d6b7b07e..efcfa521ca 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md @@ -68,4 +68,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-metrics-otlp-proto.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service -[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-otlp-http +[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-trace-otlp-http diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 86964b3dba..a46c81b9f8 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -69,7 +69,7 @@ "dependencies": { "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "1.0.0", - "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/exporter-trace-otlp-http": "0.26.0", "@opentelemetry/exporter-otlp-proto": "0.26.0", "@opentelemetry/exporter-metrics-otlp-http": "0.26.0", "@opentelemetry/sdk-metrics-base": "0.26.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts index ec547329e8..1cb79b8106 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts @@ -18,7 +18,7 @@ import { otlpTypes, OTLPExporterNodeConfigBase, appendResourcePathToUrlIfNotPresent, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { toOTLPExportMetricServiceRequest } from '@opentelemetry/exporter-metrics-otlp-http'; import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; import { ServiceClientType, OTLPExporterNodeBase } from '@opentelemetry/exporter-otlp-proto'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts index bcede89209..871f471728 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts @@ -24,7 +24,7 @@ import { ExportResultCode } from '@opentelemetry/core'; import { OTLPExporterNodeConfigBase, otlpTypes, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { getExportRequestProto } from '@opentelemetry/exporter-otlp-proto'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts index 8241e0fcd5..b400f76a33 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/metricsHelper.ts @@ -21,7 +21,7 @@ import { Histogram, ValueType, } from '@opentelemetry/api-metrics'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import { Resource } from '@opentelemetry/resources'; import * as assert from 'assert'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-otlp-grpc/package.json index 4840127972..ae46143a41 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/package.json @@ -69,7 +69,7 @@ "@grpc/grpc-js": "^1.3.7", "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "1.0.0", - "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/exporter-trace-otlp-http": "0.26.0", "@opentelemetry/resources": "1.0.0", "@opentelemetry/sdk-trace-base": "1.0.0" } diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPExporterNodeBase.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPExporterNodeBase.ts index 895ee3fa28..0c516865bd 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPExporterNodeBase.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPExporterNodeBase.ts @@ -18,7 +18,7 @@ import { diag } from '@opentelemetry/api'; import { OTLPExporterBase, otlpTypes, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { Metadata } from '@grpc/grpc-js'; import { OTLPExporterConfigNode, diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPTraceExporter.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPTraceExporter.ts index 828a7067d7..252a752a6d 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPTraceExporter.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPTraceExporter.ts @@ -19,7 +19,7 @@ import { OTLPExporterNodeBase } from './OTLPExporterNodeBase'; import { otlpTypes, toOTLPExportTraceServiceRequest, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { OTLPExporterConfigNode, ServiceClientType } from './types'; import { baggageUtils, getEnv } from '@opentelemetry/core'; import { validateAndNormalizeUrl } from './util'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/types.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/types.ts index da10ea415d..e9513819e7 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/types.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import * as grpc from '@grpc/grpc-js'; /** diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/util.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/util.ts index 1e2e480383..e0021ce896 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/util.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/src/util.ts @@ -18,7 +18,7 @@ import * as grpc from '@grpc/grpc-js'; import * as protoLoader from '@grpc/proto-loader'; import { diag } from '@opentelemetry/api'; import { globalErrorHandler } from '@opentelemetry/core'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import * as path from 'path'; import { OTLPExporterNodeBase } from './OTLPExporterNodeBase'; import { URL } from 'url'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts index 5df6e652a5..dbe6c6b406 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts index 1af8a25fbb..2d17bf9f78 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts @@ -15,7 +15,7 @@ */ import * as protoLoader from '@grpc/proto-loader'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { diag } from '@opentelemetry/api'; import { BasicTracerProvider, diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts index 751f2ccdcc..83578d3c12 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts @@ -15,7 +15,7 @@ */ import { SpanStatusCode, TraceFlags } from '@opentelemetry/api'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { Resource } from '@opentelemetry/resources'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/tsconfig.json b/experimental/packages/opentelemetry-exporter-otlp-grpc/tsconfig.json index caced6b4e8..13dc2e7744 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/tsconfig.json +++ b/experimental/packages/opentelemetry-exporter-otlp-grpc/tsconfig.json @@ -13,7 +13,7 @@ "path": "../opentelemetry-api-metrics" }, { - "path": "../opentelemetry-exporter-otlp-http" + "path": "../opentelemetry-exporter-trace-otlp-http" }, { "path": "../opentelemetry-sdk-metrics-base" diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-otlp-proto/package.json index e5f657661b..e123401012 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/package.json @@ -68,7 +68,7 @@ "dependencies": { "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "1.0.0", - "@opentelemetry/exporter-otlp-http": "0.26.0", + "@opentelemetry/exporter-trace-otlp-http": "0.26.0", "@opentelemetry/resources": "1.0.0", "@opentelemetry/sdk-trace-base": "1.0.0", "protobufjs": "^6.9.0" diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPExporterNodeBase.ts b/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPExporterNodeBase.ts index 5cb553a5c0..bebc831650 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPExporterNodeBase.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPExporterNodeBase.ts @@ -20,7 +20,7 @@ import { otlpTypes, OTLPExporterNodeConfigBase, CompressionAlgorithm, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { ServiceClientType } from './types'; type SendFn = (collector: OTLPExporterNodeBase, diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPTraceExporter.ts b/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPTraceExporter.ts index 1e2f8d7af4..b17e3c0633 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPTraceExporter.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPTraceExporter.ts @@ -21,7 +21,7 @@ import { toOTLPExportTraceServiceRequest, OTLPExporterNodeConfigBase, appendResourcePathToUrlIfNotPresent, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { ServiceClientType } from './types'; import { getEnv, baggageUtils } from '@opentelemetry/core'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/util.ts b/experimental/packages/opentelemetry-exporter-otlp-proto/src/util.ts index d019afde80..007b35b56e 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/src/util.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/src/util.ts @@ -19,7 +19,7 @@ import { sendWithHttp, OTLPExporterNodeConfigBase, CompressionAlgorithm, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import * as path from 'path'; import { ServiceClientType } from './types'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts index 2e6e232770..67b8c17868 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts @@ -20,7 +20,7 @@ import { OTLPExporterNodeConfigBase, otlpTypes, CompressionAlgorithm, -} from '@opentelemetry/exporter-otlp-http'; +} from '@opentelemetry/exporter-trace-otlp-http'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import * as http from 'http'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts b/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts index 69af8afbfa..86ff5dc32c 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts @@ -16,7 +16,7 @@ import { SpanStatusCode, TraceFlags } from '@opentelemetry/api'; import { hexToBase64 } from '@opentelemetry/core'; -import { otlpTypes } from '@opentelemetry/exporter-otlp-http'; +import { otlpTypes } from '@opentelemetry/exporter-trace-otlp-http'; import { Resource } from '@opentelemetry/resources'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/tsconfig.json b/experimental/packages/opentelemetry-exporter-otlp-proto/tsconfig.json index caced6b4e8..13dc2e7744 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/tsconfig.json +++ b/experimental/packages/opentelemetry-exporter-otlp-proto/tsconfig.json @@ -13,7 +13,7 @@ "path": "../opentelemetry-api-metrics" }, { - "path": "../opentelemetry-exporter-otlp-http" + "path": "../opentelemetry-exporter-trace-otlp-http" }, { "path": "../opentelemetry-sdk-metrics-base" diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/.eslintignore b/experimental/packages/opentelemetry-exporter-trace-otlp-http/.eslintignore similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/.eslintignore rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/.eslintignore diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/.eslintrc.js b/experimental/packages/opentelemetry-exporter-trace-otlp-http/.eslintrc.js similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/.eslintrc.js rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/.eslintrc.js diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/.npmignore b/experimental/packages/opentelemetry-exporter-trace-otlp-http/.npmignore similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/.npmignore rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/.npmignore diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/LICENSE b/experimental/packages/opentelemetry-exporter-trace-otlp-http/LICENSE similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/LICENSE rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/LICENSE diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md similarity index 94% rename from experimental/packages/opentelemetry-exporter-otlp-http/README.md rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md index 70a28f0c22..4ffe91e866 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/README.md +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md @@ -10,7 +10,7 @@ This module provides exporter for web and node to be used with [opentelemetry-co ## Installation ```bash -npm install --save @opentelemetry/exporter-otlp-http +npm install --save @opentelemetry/exporter-trace-otlp-http ``` ## Service Name @@ -26,7 +26,7 @@ The OTLPTraceExporter in Web expects the endpoint to end in `/v1/traces`. ```js import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'; import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'; -import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http'; +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; const collectorOptions = { url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/traces @@ -55,7 +55,7 @@ provider.register(); ```js const { BasicTracerProvider, BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-http'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http'); const collectorOptions = { url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/traces @@ -127,11 +127,11 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions [license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat -[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-http -[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-http -[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-http&type=dev -[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-http&type=dev -[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-http +[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-trace-otlp-http +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-http +[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-trace-otlp-http&type=dev +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-http&type=dev +[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http [npm-url-grpc]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-grpc [npm-url-proto]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-proto [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-otlp-http.svg diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/karma.conf.js b/experimental/packages/opentelemetry-exporter-trace-otlp-http/karma.conf.js similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/karma.conf.js rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/karma.conf.js diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-trace-otlp-http/package.json similarity index 93% rename from experimental/packages/opentelemetry-exporter-otlp-http/package.json rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/package.json index d63907c899..cfba9ab410 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-http/package.json @@ -1,7 +1,7 @@ { - "name": "@opentelemetry/exporter-otlp-http", + "name": "@opentelemetry/exporter-trace-otlp-http", "version": "0.26.0", - "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector", + "description": "OpenTelemetry Collector Trace Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", "types": "build/src/index.d.ts", diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/OTLPExporterBase.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/OTLPExporterBase.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/OTLPExporterBase.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/OTLPExporterBase.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/index.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/index.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/index.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/index.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/OTLPExporterBrowserBase.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/OTLPExporterBrowserBase.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/OTLPExporterBrowserBase.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/OTLPExporterBrowserBase.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/OTLPTraceExporter.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/OTLPTraceExporter.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/OTLPTraceExporter.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/OTLPTraceExporter.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/index.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/index.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/index.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/index.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/util.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/util.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/browser/util.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/browser/util.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/index.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/index.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/index.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/index.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/OTLPExporterNodeBase.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPExporterNodeBase.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/OTLPExporterNodeBase.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPExporterNodeBase.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/OTLPTraceExporter.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPTraceExporter.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/OTLPTraceExporter.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPTraceExporter.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/index.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/index.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/index.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/index.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/types.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/types.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/types.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/types.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/util.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/util.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/util.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/util.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/transform.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/transform.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/transform.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/transform.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/types.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/types.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/types.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/types.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/util.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/util.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/src/util.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/src/util.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/browser/CollectorTraceExporter.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/browser/CollectorTraceExporter.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/browser/CollectorTraceExporter.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/index-webpack.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/browser/index-webpack.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/browser/index-webpack.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/browser/index-webpack.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/browser/util.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/browser/util.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/browser/util.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/browser/util.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/ca.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/ca.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/ca.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/ca.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/ca.key b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/ca.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/ca.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/ca.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/client.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/client.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/client.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/client.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/client.csr b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/client.csr similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/client.csr rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/client.csr diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/client.key b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/client.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/client.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/client.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/regenerate.sh b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/regenerate.sh similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/regenerate.sh rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/regenerate.sh diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/server.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/server.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/server.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/server.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/server.csr b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/server.csr similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/server.csr rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/server.csr diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/certs/server.key b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/server.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/certs/server.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/certs/server.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/common/CollectorTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/common/CollectorTraceExporter.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/common/CollectorTraceExporter.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/common/CollectorTraceExporter.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/common/transform.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/common/transform.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/common/transform.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/common/transform.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/common/utils.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/common/utils.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/common/utils.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/common/utils.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/node/CollectorTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/node/CollectorTraceExporter.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/node/CollectorTraceExporter.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/node/CollectorTraceExporter.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/node/nodeHelpers.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/node/nodeHelpers.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/node/nodeHelpers.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/node/nodeHelpers.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/test/traceHelper.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/test/traceHelper.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/test/traceHelper.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/test/traceHelper.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/tsconfig.esm.json b/experimental/packages/opentelemetry-exporter-trace-otlp-http/tsconfig.esm.json similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/tsconfig.esm.json rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/tsconfig.esm.json diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/tsconfig.json b/experimental/packages/opentelemetry-exporter-trace-otlp-http/tsconfig.json similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-http/tsconfig.json rename to experimental/packages/opentelemetry-exporter-trace-otlp-http/tsconfig.json diff --git a/experimental/tsconfig.esm.json b/experimental/tsconfig.esm.json index a233a3b76d..bc2b5a41bd 100644 --- a/experimental/tsconfig.esm.json +++ b/experimental/tsconfig.esm.json @@ -9,7 +9,7 @@ "path": "packages/opentelemetry-exporter-otlp-grpc" }, { - "path": "packages/opentelemetry-exporter-otlp-http/tsconfig.esm.json" + "path": "packages/opentelemetry-exporter-trace-otlp-http/tsconfig.esm.json" }, { "path": "packages/opentelemetry-exporter-otlp-proto" diff --git a/experimental/tsconfig.json b/experimental/tsconfig.json index a195ea7268..91214636b8 100644 --- a/experimental/tsconfig.json +++ b/experimental/tsconfig.json @@ -9,7 +9,7 @@ "path": "packages/opentelemetry-exporter-otlp-grpc" }, { - "path": "packages/opentelemetry-exporter-otlp-http" + "path": "packages/opentelemetry-exporter-trace-otlp-http" }, { "path": "packages/opentelemetry-exporter-otlp-proto" diff --git a/tsconfig.json b/tsconfig.json index 7b7bce4331..bf67c77e8e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "packages": [ "experimental/packages/opentelemetry-api-metrics", "experimental/packages/opentelemetry-exporter-otlp-grpc", - "experimental/packages/opentelemetry-exporter-otlp-http", + "experimental/packages/opentelemetry-exporter-trace-otlp-http", "experimental/packages/opentelemetry-exporter-otlp-proto", "experimental/packages/opentelemetry-exporter-prometheus", "experimental/packages/opentelemetry-instrumentation-fetch", From c4aa74afb1193669de185de8bad64912dfb723c7 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 26 Oct 2021 10:22:12 -0700 Subject: [PATCH 16/17] renamed exporter-otlp-grpc -> exporter-trace-otlp-grpc --- .gitmodules | 4 ++-- .../README.md | 2 +- .../package.json | 2 +- .../src/OTLPMetricExporter.ts | 2 +- .../.eslintignore | 0 .../.eslintrc.js | 0 .../.npmignore | 0 .../LICENSE | 0 .../README.md | 18 +++++++++--------- .../package.json | 2 +- .../protos | 0 .../src/OTLPExporterNodeBase.ts | 0 .../src/OTLPTraceExporter.ts | 0 .../src/index.ts | 0 .../src/types.ts | 0 .../src/util.ts | 0 .../submodule.md | 0 .../test/OTLPExporterNodeBase.test.ts | 0 .../test/OTLPTraceExporter.test.ts | 0 .../test/certs/ca.crt | 0 .../test/certs/ca.key | 0 .../test/certs/client.crt | 0 .../test/certs/client.csr | 0 .../test/certs/client.key | 0 .../test/certs/regenerate.sh | 0 .../test/certs/server.crt | 0 .../test/certs/server.csr | 0 .../test/certs/server.key | 0 .../test/traceHelper.ts | 0 .../test/util.test.ts | 0 .../tsconfig.json | 0 .../README.md | 2 +- experimental/tsconfig.esm.json | 2 +- experimental/tsconfig.json | 2 +- tsconfig.json | 2 +- 35 files changed, 19 insertions(+), 19 deletions(-) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/.eslintignore (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/.eslintrc.js (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/.npmignore (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/LICENSE (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/README.md (94%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/package.json (97%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/protos (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/src/OTLPExporterNodeBase.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/src/OTLPTraceExporter.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/src/index.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/src/types.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/src/util.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/submodule.md (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/OTLPExporterNodeBase.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/OTLPTraceExporter.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/ca.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/ca.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/client.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/client.csr (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/client.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/regenerate.sh (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/server.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/server.csr (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/certs/server.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/traceHelper.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/test/util.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-grpc => opentelemetry-exporter-trace-otlp-grpc}/tsconfig.json (100%) diff --git a/.gitmodules b/.gitmodules index 64d162a41d..67a8b89168 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +1,8 @@ [submodule "experimental/packages/opentelemetry-exporter-otlp-proto/protos"] path = experimental/packages/opentelemetry-exporter-otlp-proto/protos url = https://github.com/open-telemetry/opentelemetry-proto.git -[submodule "experimental/packages/opentelemetry-exporter-otlp-grpc/protos"] - path = experimental/packages/opentelemetry-exporter-otlp-grpc/protos +[submodule "experimental/packages/opentelemetry-exporter-trace-otlp-grpc/protos"] + path = experimental/packages/opentelemetry-exporter-trace-otlp-grpc/protos url = https://github.com/open-telemetry/opentelemetry-proto.git [submodule "experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos"] path = experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md index e7d526328e..007c36f86f 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md @@ -74,4 +74,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-metrics-otlp-grpc.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service -[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-otlp-grpc +[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-trace-otlp-grpc diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 9b234dda2a..18718cd22c 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -72,7 +72,7 @@ "@opentelemetry/core": "1.0.0", "@opentelemetry/exporter-metrics-otlp-http": "0.26.0", "@opentelemetry/exporter-trace-otlp-http": "0.26.0", - "@opentelemetry/exporter-otlp-grpc": "0.26.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.26.0", "@opentelemetry/sdk-metrics-base": "0.26.0", "@opentelemetry/resources": "1.0.0" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts index 6f298eb0f3..1816992850 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts @@ -22,7 +22,7 @@ import { OTLPExporterNodeBase, ServiceClientType, validateAndNormalizeUrl -} from '@opentelemetry/exporter-otlp-grpc'; +} from '@opentelemetry/exporter-trace-otlp-grpc'; import { baggageUtils, getEnv } from '@opentelemetry/core'; import { Metadata } from '@grpc/grpc-js'; diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/.eslintignore b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/.eslintignore similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/.eslintignore rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/.eslintignore diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/.eslintrc.js b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/.eslintrc.js similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/.eslintrc.js rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/.eslintrc.js diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/.npmignore b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/.npmignore similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/.npmignore rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/.npmignore diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/LICENSE b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/LICENSE similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/LICENSE rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/LICENSE diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/README.md b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/README.md similarity index 94% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/README.md rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/README.md index 21b73a7c6b..a6b1042930 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/README.md +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/README.md @@ -10,7 +10,7 @@ This module provides exporter for web and node to be used with [opentelemetry-co ## Installation ```bash -npm install --save @opentelemetry/exporter-otlp-grpc +npm install --save @opentelemetry/exporter-trace-otlp-grpc ``` ## Service Name @@ -25,7 +25,7 @@ The OTLPTraceExporter in Node expects the URL to only be the hostname. It will n ```js const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc'); const collectorOptions = { // url is optional and can be omitted - default is grpc://localhost:4317 @@ -49,7 +49,7 @@ const fs = require('fs'); const grpc = require('@grpc/grpc-js'); const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc'); const collectorOptions = { // url is optional and can be omitted - default is grpc://localhost:4317 @@ -85,7 +85,7 @@ The exporter can be configured to send custom metadata with each request as in t const grpc = require('@grpc/grpc-js'); const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-grpc'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc'); const metadata = new grpc.Metadata(); // For instance, an API key or access token might go here. @@ -128,11 +128,11 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions [license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat -[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-grpc -[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-grpc -[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-grpc&type=dev -[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-grpc&type=dev -[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-grpc +[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-trace-otlp-grpc +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-grpc +[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-trace-otlp-grpc&type=dev +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-grpc&type=dev +[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-grpc [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-otlp-grpc.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/package.json similarity index 97% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/package.json rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/package.json index ae46143a41..0f62730bab 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/package.json @@ -1,5 +1,5 @@ { - "name": "@opentelemetry/exporter-otlp-grpc", + "name": "@opentelemetry/exporter-trace-otlp-grpc", "version": "0.26.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/protos b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/protos similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/protos rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/protos diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPExporterNodeBase.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/OTLPExporterNodeBase.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPExporterNodeBase.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/OTLPExporterNodeBase.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPTraceExporter.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/OTLPTraceExporter.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/src/OTLPTraceExporter.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/OTLPTraceExporter.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/index.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/index.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/src/index.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/index.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/types.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/types.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/src/types.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/types.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/src/util.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/util.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/src/util.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/src/util.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/submodule.md b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/submodule.md similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/submodule.md rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/submodule.md diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/OTLPExporterNodeBase.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPExporterNodeBase.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/OTLPExporterNodeBase.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/OTLPTraceExporter.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/ca.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/ca.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/ca.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/ca.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/ca.key b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/ca.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/ca.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/ca.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/client.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/client.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/client.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/client.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/client.csr b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/client.csr similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/client.csr rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/client.csr diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/client.key b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/client.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/client.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/client.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/regenerate.sh b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/regenerate.sh similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/regenerate.sh rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/regenerate.sh diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/server.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/server.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/server.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/server.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/server.csr b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/server.csr similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/server.csr rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/server.csr diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/server.key b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/server.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/certs/server.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/certs/server.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/traceHelper.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/traceHelper.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/traceHelper.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/test/util.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/util.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/test/util.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/test/util.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-grpc/tsconfig.json b/experimental/packages/opentelemetry-exporter-trace-otlp-grpc/tsconfig.json similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-grpc/tsconfig.json rename to experimental/packages/opentelemetry-exporter-trace-otlp-grpc/tsconfig.json diff --git a/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md index 4ffe91e866..92359522df 100644 --- a/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md @@ -132,7 +132,7 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-trace-otlp-http&type=dev [devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-http&type=dev [npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http -[npm-url-grpc]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-grpc +[npm-url-grpc]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-grpc [npm-url-proto]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-proto [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-otlp-http.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector diff --git a/experimental/tsconfig.esm.json b/experimental/tsconfig.esm.json index bc2b5a41bd..5221ffe2f9 100644 --- a/experimental/tsconfig.esm.json +++ b/experimental/tsconfig.esm.json @@ -6,7 +6,7 @@ "path": "packages/opentelemetry-api-metrics/tsconfig.esm.json" }, { - "path": "packages/opentelemetry-exporter-otlp-grpc" + "path": "packages/opentelemetry-exporter-trace-otlp-grpc" }, { "path": "packages/opentelemetry-exporter-trace-otlp-http/tsconfig.esm.json" diff --git a/experimental/tsconfig.json b/experimental/tsconfig.json index 91214636b8..0484bb8437 100644 --- a/experimental/tsconfig.json +++ b/experimental/tsconfig.json @@ -6,7 +6,7 @@ "path": "packages/opentelemetry-api-metrics" }, { - "path": "packages/opentelemetry-exporter-otlp-grpc" + "path": "packages/opentelemetry-exporter-trace-otlp-grpc" }, { "path": "packages/opentelemetry-exporter-trace-otlp-http" diff --git a/tsconfig.json b/tsconfig.json index bf67c77e8e..ee48007219 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "typedocOptions": { "packages": [ "experimental/packages/opentelemetry-api-metrics", - "experimental/packages/opentelemetry-exporter-otlp-grpc", + "experimental/packages/opentelemetry-exporter-trace-otlp-grpc", "experimental/packages/opentelemetry-exporter-trace-otlp-http", "experimental/packages/opentelemetry-exporter-otlp-proto", "experimental/packages/opentelemetry-exporter-prometheus", From 3e7daf4bb51215af7cfae16ff0e6a264b5d7f598 Mon Sep 17 00:00:00 2001 From: William Armiros Date: Tue, 26 Oct 2021 10:25:25 -0700 Subject: [PATCH 17/17] renamed exporter-otlp-proto -> exporter-trace-otlp-proto --- .gitmodules | 4 ++-- .../package.json | 2 +- .../src/OTLPMetricExporter.ts | 2 +- .../test/OTLPMetricExporter.test.ts | 2 +- .../README.md | 2 +- .../.eslintignore | 0 .../.eslintrc.js | 0 .../.npmignore | 0 .../LICENSE | 0 .../README.md | 14 +++++++------- .../package.json | 2 +- .../protos | 0 .../src/OTLPExporterNodeBase.ts | 0 .../src/OTLPTraceExporter.ts | 0 .../src/index.ts | 0 .../src/types.ts | 0 .../src/util.ts | 0 .../submodule.md | 0 .../test/OTLPTraceExporter.test.ts | 0 .../test/certs/ca.crt | 0 .../test/certs/ca.key | 0 .../test/certs/client.crt | 0 .../test/certs/client.csr | 0 .../test/certs/client.key | 0 .../test/certs/regenerate.sh | 0 .../test/certs/server.crt | 0 .../test/certs/server.csr | 0 .../test/certs/server.key | 0 .../test/traceHelper.ts | 0 .../tsconfig.json | 0 experimental/tsconfig.esm.json | 2 +- experimental/tsconfig.json | 2 +- tsconfig.json | 2 +- 33 files changed, 17 insertions(+), 17 deletions(-) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/.eslintignore (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/.eslintrc.js (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/.npmignore (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/LICENSE (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/README.md (91%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/package.json (97%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/protos (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/src/OTLPExporterNodeBase.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/src/OTLPTraceExporter.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/src/index.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/src/types.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/src/util.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/submodule.md (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/OTLPTraceExporter.test.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/ca.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/ca.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/client.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/client.csr (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/client.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/regenerate.sh (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/server.crt (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/server.csr (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/certs/server.key (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/test/traceHelper.ts (100%) rename experimental/packages/{opentelemetry-exporter-otlp-proto => opentelemetry-exporter-trace-otlp-proto}/tsconfig.json (100%) diff --git a/.gitmodules b/.gitmodules index 67a8b89168..278e2d9a57 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ -[submodule "experimental/packages/opentelemetry-exporter-otlp-proto/protos"] - path = experimental/packages/opentelemetry-exporter-otlp-proto/protos +[submodule "experimental/packages/opentelemetry-exporter-trace-otlp-proto/protos"] + path = experimental/packages/opentelemetry-exporter-trace-otlp-proto/protos url = https://github.com/open-telemetry/opentelemetry-proto.git [submodule "experimental/packages/opentelemetry-exporter-trace-otlp-grpc/protos"] path = experimental/packages/opentelemetry-exporter-trace-otlp-grpc/protos diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index a46c81b9f8..0aa4b99256 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -70,7 +70,7 @@ "@grpc/proto-loader": "^0.6.4", "@opentelemetry/core": "1.0.0", "@opentelemetry/exporter-trace-otlp-http": "0.26.0", - "@opentelemetry/exporter-otlp-proto": "0.26.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.26.0", "@opentelemetry/exporter-metrics-otlp-http": "0.26.0", "@opentelemetry/sdk-metrics-base": "0.26.0", "@opentelemetry/resources": "1.0.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts index 1cb79b8106..9bbbfa6c66 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts @@ -21,7 +21,7 @@ import { } from '@opentelemetry/exporter-trace-otlp-http'; import { toOTLPExportMetricServiceRequest } from '@opentelemetry/exporter-metrics-otlp-http'; import { MetricRecord, MetricExporter } from '@opentelemetry/sdk-metrics-base'; -import { ServiceClientType, OTLPExporterNodeBase } from '@opentelemetry/exporter-otlp-proto'; +import { ServiceClientType, OTLPExporterNodeBase } from '@opentelemetry/exporter-trace-otlp-proto'; import { getEnv, baggageUtils } from '@opentelemetry/core'; const DEFAULT_COLLECTOR_RESOURCE_PATH = '/v1/metrics'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts index 871f471728..831b66780e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts @@ -25,7 +25,7 @@ import { OTLPExporterNodeConfigBase, otlpTypes, } from '@opentelemetry/exporter-trace-otlp-http'; -import { getExportRequestProto } from '@opentelemetry/exporter-otlp-proto'; +import { getExportRequestProto } from '@opentelemetry/exporter-trace-otlp-proto'; import * as metrics from '@opentelemetry/sdk-metrics-base'; import * as assert from 'assert'; import * as http from 'http'; diff --git a/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md index 92359522df..7614ea22de 100644 --- a/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-http/README.md @@ -133,7 +133,7 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-http&type=dev [npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http [npm-url-grpc]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-grpc -[npm-url-proto]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-proto +[npm-url-proto]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-proto [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-otlp-http.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [opentelemetry-spec-protocol-exporter]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/.eslintignore b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/.eslintignore similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/.eslintignore rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/.eslintignore diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/.eslintrc.js b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/.eslintrc.js similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/.eslintrc.js rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/.eslintrc.js diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/.npmignore b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/.npmignore similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/.npmignore rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/.npmignore diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/LICENSE b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/LICENSE similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/LICENSE rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/LICENSE diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/README.md b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/README.md similarity index 91% rename from experimental/packages/opentelemetry-exporter-otlp-proto/README.md rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/README.md index 965ddd08e3..cb421a02ad 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/README.md +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/README.md @@ -10,7 +10,7 @@ This module provides exporter for node to be used with [opentelemetry-collector] ## Installation ```bash -npm install --save @opentelemetry/exporter-otlp-proto +npm install --save @opentelemetry/exporter-trace-otlp-proto ``` ## Service Name @@ -23,7 +23,7 @@ To see documentation and sample code for the metric exporter, see the [exporter- ```js const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-proto'); +const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-proto'); const collectorOptions = { url: '', // url is optional and can be omitted - default is http://localhost:55681/v1/traces @@ -59,11 +59,11 @@ Apache 2.0 - See [LICENSE][license-url] for more information. [discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions [license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat -[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-proto -[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-proto -[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-otlp-proto&type=dev -[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-otlp-proto&type=dev -[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-otlp-proto +[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-trace-otlp-proto +[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-proto +[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-exporter-trace-otlp-proto&type=dev +[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-exporter-trace-otlp-proto&type=dev +[npm-url]: https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-proto [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-collector-otlp-proto.svg [opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector [semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/package.json similarity index 97% rename from experimental/packages/opentelemetry-exporter-otlp-proto/package.json rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/package.json index e123401012..c8e822fe5a 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/package.json @@ -1,5 +1,5 @@ { - "name": "@opentelemetry/exporter-otlp-proto", + "name": "@opentelemetry/exporter-trace-otlp-proto", "version": "0.26.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/protos b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/protos similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/protos rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/protos diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPExporterNodeBase.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/OTLPExporterNodeBase.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPExporterNodeBase.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/OTLPExporterNodeBase.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPTraceExporter.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/OTLPTraceExporter.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/src/OTLPTraceExporter.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/OTLPTraceExporter.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/index.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/index.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/src/index.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/index.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/types.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/types.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/src/types.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/types.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/src/util.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/util.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/src/util.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/src/util.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/submodule.md b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/submodule.md similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/submodule.md rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/submodule.md diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/OTLPTraceExporter.test.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/OTLPTraceExporter.test.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/OTLPTraceExporter.test.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/ca.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/ca.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/ca.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/ca.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/ca.key b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/ca.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/ca.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/ca.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/client.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/client.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/client.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/client.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/client.csr b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/client.csr similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/client.csr rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/client.csr diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/client.key b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/client.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/client.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/client.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/regenerate.sh b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/regenerate.sh similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/regenerate.sh rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/regenerate.sh diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/server.crt b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/server.crt similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/server.crt rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/server.crt diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/server.csr b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/server.csr similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/server.csr rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/server.csr diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/server.key b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/server.key similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/certs/server.key rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/certs/server.key diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/traceHelper.ts similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/test/traceHelper.ts rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/test/traceHelper.ts diff --git a/experimental/packages/opentelemetry-exporter-otlp-proto/tsconfig.json b/experimental/packages/opentelemetry-exporter-trace-otlp-proto/tsconfig.json similarity index 100% rename from experimental/packages/opentelemetry-exporter-otlp-proto/tsconfig.json rename to experimental/packages/opentelemetry-exporter-trace-otlp-proto/tsconfig.json diff --git a/experimental/tsconfig.esm.json b/experimental/tsconfig.esm.json index 5221ffe2f9..d2bedd4f38 100644 --- a/experimental/tsconfig.esm.json +++ b/experimental/tsconfig.esm.json @@ -12,7 +12,7 @@ "path": "packages/opentelemetry-exporter-trace-otlp-http/tsconfig.esm.json" }, { - "path": "packages/opentelemetry-exporter-otlp-proto" + "path": "packages/opentelemetry-exporter-trace-otlp-proto" }, { "path": "packages/opentelemetry-exporter-prometheus" diff --git a/experimental/tsconfig.json b/experimental/tsconfig.json index 0484bb8437..5a53c080f2 100644 --- a/experimental/tsconfig.json +++ b/experimental/tsconfig.json @@ -12,7 +12,7 @@ "path": "packages/opentelemetry-exporter-trace-otlp-http" }, { - "path": "packages/opentelemetry-exporter-otlp-proto" + "path": "packages/opentelemetry-exporter-trace-otlp-proto" }, { "path": "packages/opentelemetry-exporter-prometheus" diff --git a/tsconfig.json b/tsconfig.json index ee48007219..44577914a9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "experimental/packages/opentelemetry-api-metrics", "experimental/packages/opentelemetry-exporter-trace-otlp-grpc", "experimental/packages/opentelemetry-exporter-trace-otlp-http", - "experimental/packages/opentelemetry-exporter-otlp-proto", + "experimental/packages/opentelemetry-exporter-trace-otlp-proto", "experimental/packages/opentelemetry-exporter-prometheus", "experimental/packages/opentelemetry-instrumentation-fetch", "experimental/packages/opentelemetry-instrumentation-grpc",