From a51c862bbc025a9b0b10cb50821b0c3e6c644b91 Mon Sep 17 00:00:00 2001 From: Matt Cotter Date: Thu, 8 May 2025 09:45:51 -0500 Subject: [PATCH] fix: add nop receiver and exporter pipelines for count to ensure the connector is always valid --- builder-config.yaml | 2 + go.mod | 2 + observecol/components.go | 6 + observecol/go.mod | 2 + .../connections/common/base.yaml.tmpl | 12 ++ .../linux/connections/common/base.yaml.tmpl | 12 ++ .../macos/connections/common/base.yaml.tmpl | 12 ++ .../windows/connections/common/base.yaml.tmpl | 12 ++ .../collector/exporter/nopexporter/LICENSE | 202 ++++++++++++++++++ .../collector/exporter/nopexporter/Makefile | 1 + .../collector/exporter/nopexporter/README.md | 29 +++ .../collector/exporter/nopexporter/doc.go | 7 + .../internal/metadata/generated_status.go | 18 ++ .../exporter/nopexporter/metadata.yaml | 11 + .../exporter/nopexporter/nop_exporter.go | 46 ++++ .../collector/receiver/nopreceiver/LICENSE | 202 ++++++++++++++++++ .../collector/receiver/nopreceiver/Makefile | 1 + .../collector/receiver/nopreceiver/README.md | 27 +++ .../collector/receiver/nopreceiver/doc.go | 7 + .../internal/metadata/generated_logs.go | 88 ++++++++ .../internal/metadata/generated_status.go | 18 ++ .../receiver/nopreceiver/metadata.yaml | 11 + .../receiver/nopreceiver/nop_receiver.go | 42 ++++ vendor/modules.txt | 8 + 24 files changed, 778 insertions(+) create mode 100644 vendor/go.opentelemetry.io/collector/exporter/nopexporter/LICENSE create mode 100644 vendor/go.opentelemetry.io/collector/exporter/nopexporter/Makefile create mode 100644 vendor/go.opentelemetry.io/collector/exporter/nopexporter/README.md create mode 100644 vendor/go.opentelemetry.io/collector/exporter/nopexporter/doc.go create mode 100644 vendor/go.opentelemetry.io/collector/exporter/nopexporter/internal/metadata/generated_status.go create mode 100644 vendor/go.opentelemetry.io/collector/exporter/nopexporter/metadata.yaml create mode 100644 vendor/go.opentelemetry.io/collector/exporter/nopexporter/nop_exporter.go create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/LICENSE create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/Makefile create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/README.md create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/doc.go create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_logs.go create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_status.go create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/metadata.yaml create mode 100644 vendor/go.opentelemetry.io/collector/receiver/nopreceiver/nop_receiver.go diff --git a/builder-config.yaml b/builder-config.yaml index 0a7bc3e7c..4df3c981a 100644 --- a/builder-config.yaml +++ b/builder-config.yaml @@ -9,6 +9,7 @@ exporters: - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.124.0 - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.124.0 - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.124.0 + - gomod: go.opentelemetry.io/collector/exporter/nopexporter v0.124.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.124.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.124.0 @@ -36,6 +37,7 @@ processors: receivers: - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.124.0 + - gomod: go.opentelemetry.io/collector/receiver/nopreceiver v0.124.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.124.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.124.0 diff --git a/go.mod b/go.mod index 5e791b8fe..00ce47415 100644 --- a/go.mod +++ b/go.mod @@ -352,6 +352,7 @@ require ( go.opentelemetry.io/collector/exporter/debugexporter v0.124.0 // indirect go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.124.0 // indirect go.opentelemetry.io/collector/exporter/exportertest v0.124.0 // indirect + go.opentelemetry.io/collector/exporter/nopexporter v0.124.0 // indirect go.opentelemetry.io/collector/exporter/otlpexporter v0.124.0 // indirect go.opentelemetry.io/collector/exporter/otlphttpexporter v0.124.0 // indirect go.opentelemetry.io/collector/exporter/xexporter v0.124.0 // indirect @@ -380,6 +381,7 @@ require ( go.opentelemetry.io/collector/processor/processortest v0.124.0 // indirect go.opentelemetry.io/collector/processor/xprocessor v0.124.0 // indirect go.opentelemetry.io/collector/receiver v1.30.0 // indirect + go.opentelemetry.io/collector/receiver/nopreceiver v0.124.0 // indirect go.opentelemetry.io/collector/receiver/otlpreceiver v0.124.0 // indirect go.opentelemetry.io/collector/receiver/receiverhelper v0.124.0 // indirect go.opentelemetry.io/collector/receiver/receivertest v0.124.0 // indirect diff --git a/observecol/components.go b/observecol/components.go index c3e438019..1bf4d96db 100644 --- a/observecol/components.go +++ b/observecol/components.go @@ -16,6 +16,7 @@ import ( debugexporter "go.opentelemetry.io/collector/exporter/debugexporter" otlpexporter "go.opentelemetry.io/collector/exporter/otlpexporter" otlphttpexporter "go.opentelemetry.io/collector/exporter/otlphttpexporter" + nopexporter "go.opentelemetry.io/collector/exporter/nopexporter" fileexporter "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter" loadbalancingexporter "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter" prometheusremotewriteexporter "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter" @@ -40,6 +41,7 @@ import ( transformprocessor "github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor" observek8sattributesprocessor "github.com/observeinc/observe-agent/components/processors/observek8sattributesprocessor" otlpreceiver "go.opentelemetry.io/collector/receiver/otlpreceiver" + nopreceiver "go.opentelemetry.io/collector/receiver/nopreceiver" awsecscontainermetricsreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver" dockerstatsreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver" elasticsearchreceiver "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver" @@ -87,6 +89,7 @@ func components() (otelcol.Factories, error) { factories.Receivers, err = otelcol.MakeFactoryMap[receiver.Factory]( otlpreceiver.NewFactory(), + nopreceiver.NewFactory(), awsecscontainermetricsreceiver.NewFactory(), dockerstatsreceiver.NewFactory(), elasticsearchreceiver.NewFactory(), @@ -115,6 +118,7 @@ func components() (otelcol.Factories, error) { } factories.ReceiverModules = make(map[component.Type]string, len(factories.Receivers)) factories.ReceiverModules[otlpreceiver.NewFactory().Type()] = "go.opentelemetry.io/collector/receiver/otlpreceiver v0.124.0" + factories.ReceiverModules[nopreceiver.NewFactory().Type()] = "go.opentelemetry.io/collector/receiver/nopreceiver v0.124.0" factories.ReceiverModules[awsecscontainermetricsreceiver.NewFactory().Type()] = "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.124.0" factories.ReceiverModules[dockerstatsreceiver.NewFactory().Type()] = "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.124.0" factories.ReceiverModules[elasticsearchreceiver.NewFactory().Type()] = "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.124.0" @@ -142,6 +146,7 @@ func components() (otelcol.Factories, error) { debugexporter.NewFactory(), otlpexporter.NewFactory(), otlphttpexporter.NewFactory(), + nopexporter.NewFactory(), fileexporter.NewFactory(), loadbalancingexporter.NewFactory(), prometheusremotewriteexporter.NewFactory(), @@ -153,6 +158,7 @@ func components() (otelcol.Factories, error) { factories.ExporterModules[debugexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/debugexporter v0.124.0" factories.ExporterModules[otlpexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/otlpexporter v0.124.0" factories.ExporterModules[otlphttpexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/otlphttpexporter v0.124.0" + factories.ExporterModules[nopexporter.NewFactory().Type()] = "go.opentelemetry.io/collector/exporter/nopexporter v0.124.0" factories.ExporterModules[fileexporter.NewFactory().Type()] = "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.124.0" factories.ExporterModules[loadbalancingexporter.NewFactory().Type()] = "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.124.0" factories.ExporterModules[prometheusremotewriteexporter.NewFactory().Type()] = "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.124.0" diff --git a/observecol/go.mod b/observecol/go.mod index 48b4755a7..a13c1cbb2 100644 --- a/observecol/go.mod +++ b/observecol/go.mod @@ -62,6 +62,7 @@ require ( go.opentelemetry.io/collector/connector/forwardconnector v0.124.0 go.opentelemetry.io/collector/exporter v0.124.0 go.opentelemetry.io/collector/exporter/debugexporter v0.124.0 + go.opentelemetry.io/collector/exporter/nopexporter v0.124.0 go.opentelemetry.io/collector/exporter/otlpexporter v0.124.0 go.opentelemetry.io/collector/exporter/otlphttpexporter v0.124.0 go.opentelemetry.io/collector/extension v1.30.0 @@ -71,6 +72,7 @@ require ( go.opentelemetry.io/collector/processor/batchprocessor v0.124.0 go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.124.0 go.opentelemetry.io/collector/receiver v1.30.0 + go.opentelemetry.io/collector/receiver/nopreceiver v0.124.0 go.opentelemetry.io/collector/receiver/otlpreceiver v0.124.0 ) diff --git a/packaging/docker/observe-agent/connections/common/base.yaml.tmpl b/packaging/docker/observe-agent/connections/common/base.yaml.tmpl index 01bb94e7f..b3f7603ef 100644 --- a/packaging/docker/observe-agent/connections/common/base.yaml.tmpl +++ b/packaging/docker/observe-agent/connections/common/base.yaml.tmpl @@ -5,6 +5,9 @@ extensions: connectors: count: +receivers: + nop: + processors: # Snowflake limit for identifiers: Regardless of whether an identifier is unquoted or double-quoted, the maximum number of characters allowed is 255 (including blank spaces). # https://docs.snowflake.com/en/sql-reference/identifiers-syntax#identifier-requirements @@ -96,6 +99,15 @@ exporters: send_metadata: true debug: + nop: service: + pipelines: + metrics/count-nop-in: + receivers: [nop] + exporters: [count] + metrics/count-nop-out: + receivers: [count] + exporters: [nop] + extensions: [health_check, file_storage] diff --git a/packaging/linux/connections/common/base.yaml.tmpl b/packaging/linux/connections/common/base.yaml.tmpl index 01bb94e7f..b3f7603ef 100644 --- a/packaging/linux/connections/common/base.yaml.tmpl +++ b/packaging/linux/connections/common/base.yaml.tmpl @@ -5,6 +5,9 @@ extensions: connectors: count: +receivers: + nop: + processors: # Snowflake limit for identifiers: Regardless of whether an identifier is unquoted or double-quoted, the maximum number of characters allowed is 255 (including blank spaces). # https://docs.snowflake.com/en/sql-reference/identifiers-syntax#identifier-requirements @@ -96,6 +99,15 @@ exporters: send_metadata: true debug: + nop: service: + pipelines: + metrics/count-nop-in: + receivers: [nop] + exporters: [count] + metrics/count-nop-out: + receivers: [count] + exporters: [nop] + extensions: [health_check, file_storage] diff --git a/packaging/macos/connections/common/base.yaml.tmpl b/packaging/macos/connections/common/base.yaml.tmpl index 01bb94e7f..b3f7603ef 100644 --- a/packaging/macos/connections/common/base.yaml.tmpl +++ b/packaging/macos/connections/common/base.yaml.tmpl @@ -5,6 +5,9 @@ extensions: connectors: count: +receivers: + nop: + processors: # Snowflake limit for identifiers: Regardless of whether an identifier is unquoted or double-quoted, the maximum number of characters allowed is 255 (including blank spaces). # https://docs.snowflake.com/en/sql-reference/identifiers-syntax#identifier-requirements @@ -96,6 +99,15 @@ exporters: send_metadata: true debug: + nop: service: + pipelines: + metrics/count-nop-in: + receivers: [nop] + exporters: [count] + metrics/count-nop-out: + receivers: [count] + exporters: [nop] + extensions: [health_check, file_storage] diff --git a/packaging/windows/connections/common/base.yaml.tmpl b/packaging/windows/connections/common/base.yaml.tmpl index 0f135e2ae..de2fb8394 100644 --- a/packaging/windows/connections/common/base.yaml.tmpl +++ b/packaging/windows/connections/common/base.yaml.tmpl @@ -5,6 +5,9 @@ extensions: connectors: count: +receivers: + nop: + processors: # Snowflake limit for identifiers: Regardless of whether an identifier is unquoted or double-quoted, the maximum number of characters allowed is 255 (including blank spaces). # https://docs.snowflake.com/en/sql-reference/identifiers-syntax#identifier-requirements @@ -76,6 +79,15 @@ exporters: send_metadata: true debug: + nop: service: + pipelines: + metrics/count-nop-in: + receivers: [nop] + exporters: [count] + metrics/count-nop-out: + receivers: [count] + exporters: [nop] + extensions: [health_check, file_storage] diff --git a/vendor/go.opentelemetry.io/collector/exporter/nopexporter/LICENSE b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/LICENSE @@ -0,0 +1,202 @@ + + 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/vendor/go.opentelemetry.io/collector/exporter/nopexporter/Makefile b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/Makefile new file mode 100644 index 000000000..ded7a3609 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/Makefile @@ -0,0 +1 @@ +include ../../Makefile.Common diff --git a/vendor/go.opentelemetry.io/collector/exporter/nopexporter/README.md b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/README.md new file mode 100644 index 000000000..c2159a297 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/README.md @@ -0,0 +1,29 @@ +# No-op Exporter + + +| Status | | +| ------------- |-----------| +| Stability | [beta]: traces, metrics, logs | +| Distributions | [core], [contrib], [k8s] | +| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector?query=is%3Aissue%20is%3Aopen%20label%3Aexporter%2Fnop%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector/issues?q=is%3Aopen+is%3Aissue+label%3Aexporter%2Fnop) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector?query=is%3Aissue%20is%3Aclosed%20label%3Aexporter%2Fnop%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector/issues?q=is%3Aclosed+is%3Aissue+label%3Aexporter%2Fnop) | +| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@evan-bradley](https://www.github.com/evan-bradley) | + +[beta]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/component-stability.md#beta +[core]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol +[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib +[k8s]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-k8s + + +Serves as a placeholder exporter in a pipeline. This can be useful if you want +to e.g. start a Collector with only extensions enabled, or for testing Collector +pipeline throughput without worrying about an exporter. + +## Getting Started + +All that is required to enable the No-op exporter is to include it in the +exporter definitions. It takes no configuration. + +```yaml +exporters: + nop: +``` diff --git a/vendor/go.opentelemetry.io/collector/exporter/nopexporter/doc.go b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/doc.go new file mode 100644 index 000000000..002615651 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/doc.go @@ -0,0 +1,7 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:generate mdatagen metadata.yaml + +// Package nopexporter serves as a placeholder exporter. +package nopexporter // import "go.opentelemetry.io/collector/exporter/nopexporter" diff --git a/vendor/go.opentelemetry.io/collector/exporter/nopexporter/internal/metadata/generated_status.go b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/internal/metadata/generated_status.go new file mode 100644 index 000000000..d7336115c --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/internal/metadata/generated_status.go @@ -0,0 +1,18 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" +) + +var ( + Type = component.MustNewType("nop") + ScopeName = "go.opentelemetry.io/collector/exporter/nopexporter" +) + +const ( + TracesStability = component.StabilityLevelBeta + MetricsStability = component.StabilityLevelBeta + LogsStability = component.StabilityLevelBeta +) diff --git a/vendor/go.opentelemetry.io/collector/exporter/nopexporter/metadata.yaml b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/metadata.yaml new file mode 100644 index 000000000..3a6d9e6f3 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/metadata.yaml @@ -0,0 +1,11 @@ +type: nop +github_project: open-telemetry/opentelemetry-collector + +status: + codeowners: + active: + - evan-bradley + class: exporter + stability: + beta: [traces, metrics, logs] + distributions: [core, contrib, k8s] diff --git a/vendor/go.opentelemetry.io/collector/exporter/nopexporter/nop_exporter.go b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/nop_exporter.go new file mode 100644 index 000000000..423dedb0c --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/exporter/nopexporter/nop_exporter.go @@ -0,0 +1,46 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package nopexporter // import "go.opentelemetry.io/collector/exporter/nopexporter" + +import ( + "context" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/exporter" + "go.opentelemetry.io/collector/exporter/nopexporter/internal/metadata" +) + +// NewFactory returns an exporter.Factory that constructs nop exporters. +func NewFactory() exporter.Factory { + return exporter.NewFactory( + metadata.Type, + func() component.Config { return &struct{}{} }, + exporter.WithTraces(createTraces, metadata.TracesStability), + exporter.WithMetrics(createMetrics, metadata.MetricsStability), + exporter.WithLogs(createLogs, metadata.LogsStability), + ) +} + +func createTraces(context.Context, exporter.Settings, component.Config) (exporter.Traces, error) { + return nopInstance, nil +} + +func createMetrics(context.Context, exporter.Settings, component.Config) (exporter.Metrics, error) { + return nopInstance, nil +} + +func createLogs(context.Context, exporter.Settings, component.Config) (exporter.Logs, error) { + return nopInstance, nil +} + +var nopInstance = &nop{ + Consumer: consumertest.NewNop(), +} + +type nop struct { + component.StartFunc + component.ShutdownFunc + consumertest.Consumer +} diff --git a/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/LICENSE b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/LICENSE @@ -0,0 +1,202 @@ + + 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/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/Makefile b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/Makefile new file mode 100644 index 000000000..ded7a3609 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/Makefile @@ -0,0 +1 @@ +include ../../Makefile.Common diff --git a/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/README.md b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/README.md new file mode 100644 index 000000000..027ee2f5e --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/README.md @@ -0,0 +1,27 @@ +# No-op Receiver + + +| Status | | +| ------------- |-----------| +| Stability | [beta]: traces, metrics, logs | +| Distributions | [core], [contrib] | +| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector?query=is%3Aissue%20is%3Aopen%20label%3Areceiver%2Fnop%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector/issues?q=is%3Aopen+is%3Aissue+label%3Areceiver%2Fnop) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector?query=is%3Aissue%20is%3Aclosed%20label%3Areceiver%2Fnop%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector/issues?q=is%3Aclosed+is%3Aissue+label%3Areceiver%2Fnop) | +| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@evan-bradley](https://www.github.com/evan-bradley) | + +[beta]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/component-stability.md#beta +[core]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol +[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib + + +Serves as a placeholder receiver in a pipeline. This can be useful if you want +to e.g. start a Collector with only extensions enabled. + +## Getting Started + +All that is required to enable the No-op receiver is to include it in the +receiver definitions. It takes no configuration. + +```yaml +receivers: + nop: +``` diff --git a/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/doc.go b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/doc.go new file mode 100644 index 000000000..597f9ac3e --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/doc.go @@ -0,0 +1,7 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:generate mdatagen metadata.yaml + +// Package nopreceiver serves as a placeholder receiver. +package nopreceiver // import "go.opentelemetry.io/collector/receiver/nopreceiver" diff --git a/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_logs.go b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_logs.go new file mode 100644 index 000000000..0c12252bd --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_logs.go @@ -0,0 +1,88 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" + "go.opentelemetry.io/collector/receiver" +) + +// LogsBuilder provides an interface for scrapers to report logs while taking care of all the transformations +// required to produce log representation defined in metadata and user config. +type LogsBuilder struct { + logsBuffer plog.Logs + logRecordsBuffer plog.LogRecordSlice + buildInfo component.BuildInfo // contains version information. +} + +// LogBuilderOption applies changes to default logs builder. +type LogBuilderOption interface { + apply(*LogsBuilder) +} + +func NewLogsBuilder(settings receiver.Settings) *LogsBuilder { + lb := &LogsBuilder{ + logsBuffer: plog.NewLogs(), + logRecordsBuffer: plog.NewLogRecordSlice(), + buildInfo: settings.BuildInfo, + } + + return lb +} + +// ResourceLogsOption applies changes to provided resource logs. +type ResourceLogsOption interface { + apply(plog.ResourceLogs) +} + +type resourceLogsOptionFunc func(plog.ResourceLogs) + +func (rlof resourceLogsOptionFunc) apply(rl plog.ResourceLogs) { + rlof(rl) +} + +// WithLogsResource sets the provided resource on the emitted ResourceLogs. +// It's recommended to use ResourceBuilder to create the resource. +func WithLogsResource(res pcommon.Resource) ResourceLogsOption { + return resourceLogsOptionFunc(func(rl plog.ResourceLogs) { + res.CopyTo(rl.Resource()) + }) +} + +// AppendLogRecord adds a log record to the logs builder. +func (lb *LogsBuilder) AppendLogRecord(lr plog.LogRecord) { + lr.MoveTo(lb.logRecordsBuffer.AppendEmpty()) +} + +// EmitForResource saves all the generated logs under a new resource and updates the internal state to be ready for +// recording another set of log records as part of another resource. This function can be helpful when one scraper +// needs to emit logs from several resources. Otherwise calling this function is not required, +// just `Emit` function can be called instead. +// Resource attributes should be provided as ResourceLogsOption arguments. +func (lb *LogsBuilder) EmitForResource(options ...ResourceLogsOption) { + rl := lb.logsBuffer.ResourceLogs().AppendEmpty() + ils := rl.ScopeLogs().AppendEmpty() + ils.Scope().SetName(ScopeName) + ils.Scope().SetVersion(lb.buildInfo.Version) + + for _, op := range options { + op.apply(rl) + } + + if lb.logRecordsBuffer.Len() > 0 { + lb.logRecordsBuffer.MoveAndAppendTo(ils.LogRecords()) + lb.logRecordsBuffer = plog.NewLogRecordSlice() + } +} + +// Emit returns all the logs accumulated by the logs builder and updates the internal state to be ready for +// recording another set of logs. This function will be responsible for applying all the transformations required to +// produce logs representation defined in metadata and user config. +func (lb *LogsBuilder) Emit(options ...ResourceLogsOption) plog.Logs { + lb.EmitForResource(options...) + logs := lb.logsBuffer + lb.logsBuffer = plog.NewLogs() + return logs +} diff --git a/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_status.go b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_status.go new file mode 100644 index 000000000..a8716db91 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata/generated_status.go @@ -0,0 +1,18 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" +) + +var ( + Type = component.MustNewType("nop") + ScopeName = "go.opentelemetry.io/collector/receiver/nopreceiver" +) + +const ( + TracesStability = component.StabilityLevelBeta + MetricsStability = component.StabilityLevelBeta + LogsStability = component.StabilityLevelBeta +) diff --git a/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/metadata.yaml b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/metadata.yaml new file mode 100644 index 000000000..41abca3c9 --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/metadata.yaml @@ -0,0 +1,11 @@ +type: nop +github_project: open-telemetry/opentelemetry-collector + +status: + codeowners: + active: + - evan-bradley + class: receiver + stability: + beta: [traces, metrics, logs] + distributions: [core, contrib] diff --git a/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/nop_receiver.go b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/nop_receiver.go new file mode 100644 index 000000000..6d989daff --- /dev/null +++ b/vendor/go.opentelemetry.io/collector/receiver/nopreceiver/nop_receiver.go @@ -0,0 +1,42 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package nopreceiver // import "go.opentelemetry.io/collector/receiver/nopreceiver" + +import ( + "context" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata" +) + +// NewFactory returns a receiver.Factory that constructs nop receivers. +func NewFactory() receiver.Factory { + return receiver.NewFactory( + metadata.Type, + func() component.Config { return &struct{}{} }, + receiver.WithTraces(createTraces, metadata.TracesStability), + receiver.WithMetrics(createMetrics, metadata.MetricsStability), + receiver.WithLogs(createLogs, metadata.LogsStability)) +} + +func createTraces(context.Context, receiver.Settings, component.Config, consumer.Traces) (receiver.Traces, error) { + return nopInstance, nil +} + +func createMetrics(context.Context, receiver.Settings, component.Config, consumer.Metrics) (receiver.Metrics, error) { + return nopInstance, nil +} + +func createLogs(context.Context, receiver.Settings, component.Config, consumer.Logs) (receiver.Logs, error) { + return nopInstance, nil +} + +var nopInstance = &nopReceiver{} + +type nopReceiver struct { + component.StartFunc + component.ShutdownFunc +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 096bc0db7..0cb87b8a5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1960,6 +1960,10 @@ go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper # go.opentelemetry.io/collector/exporter/exportertest v0.124.0 ## explicit; go 1.23.0 go.opentelemetry.io/collector/exporter/exportertest +# go.opentelemetry.io/collector/exporter/nopexporter v0.124.0 +## explicit; go 1.23.0 +go.opentelemetry.io/collector/exporter/nopexporter +go.opentelemetry.io/collector/exporter/nopexporter/internal/metadata # go.opentelemetry.io/collector/exporter/otlpexporter v0.124.0 ## explicit; go 1.23.0 go.opentelemetry.io/collector/exporter/otlpexporter @@ -2096,6 +2100,10 @@ go.opentelemetry.io/collector/processor/xprocessor ## explicit; go 1.23.0 go.opentelemetry.io/collector/receiver go.opentelemetry.io/collector/receiver/internal +# go.opentelemetry.io/collector/receiver/nopreceiver v0.124.0 +## explicit; go 1.23.0 +go.opentelemetry.io/collector/receiver/nopreceiver +go.opentelemetry.io/collector/receiver/nopreceiver/internal/metadata # go.opentelemetry.io/collector/receiver/otlpreceiver v0.124.0 ## explicit; go 1.23.0 go.opentelemetry.io/collector/receiver/otlpreceiver