diff --git a/OpenTelemetry.sln b/OpenTelemetry.sln index 1880cbb93c5..8f65b460436 100644 --- a/OpenTelemetry.sln +++ b/OpenTelemetry.sln @@ -251,6 +251,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "getting-started-jaeger", "d EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "stratified-sampling-example", "docs\trace\advanced\stratified-sampling-example\stratified-sampling-example.csproj", "{9C99621C-343E-479C-A943-332DB6129B71}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.OpenTelemetryProtocol.Http", "src\OpenTelemetry.Exporter.OpenTelemetryProtocol.Http\OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.csproj", "{877F8535-7851-4DC8-984A-461B097DE154}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests", "test\OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests\OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests.csproj", "{FA9B9576-1158-40A8-9CF3-8878CBDA873A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests", "test\OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests\OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests.csproj", "{BBCF30A4-D470-4C25-AA03-D151C551225D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -529,6 +535,18 @@ Global {9C99621C-343E-479C-A943-332DB6129B71}.Debug|Any CPU.Build.0 = Debug|Any CPU {9C99621C-343E-479C-A943-332DB6129B71}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C99621C-343E-479C-A943-332DB6129B71}.Release|Any CPU.Build.0 = Release|Any CPU + {877F8535-7851-4DC8-984A-461B097DE154}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {877F8535-7851-4DC8-984A-461B097DE154}.Debug|Any CPU.Build.0 = Debug|Any CPU + {877F8535-7851-4DC8-984A-461B097DE154}.Release|Any CPU.ActiveCfg = Release|Any CPU + {877F8535-7851-4DC8-984A-461B097DE154}.Release|Any CPU.Build.0 = Release|Any CPU + {FA9B9576-1158-40A8-9CF3-8878CBDA873A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA9B9576-1158-40A8-9CF3-8878CBDA873A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA9B9576-1158-40A8-9CF3-8878CBDA873A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA9B9576-1158-40A8-9CF3-8878CBDA873A}.Release|Any CPU.Build.0 = Release|Any CPU + {BBCF30A4-D470-4C25-AA03-D151C551225D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BBCF30A4-D470-4C25-AA03-D151C551225D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BBCF30A4-D470-4C25-AA03-D151C551225D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BBCF30A4-D470-4C25-AA03-D151C551225D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc/CHANGELOG.md b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc/CHANGELOG.md new file mode 100644 index 00000000000..134621e04d9 --- /dev/null +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## Unreleased + +* Initial release diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc/README.md b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc/README.md index f26f22a5dae..13e8ed135b1 100644 --- a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc/README.md +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc/README.md @@ -13,7 +13,7 @@ implementation. ## Installation ```shell -dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc +dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc --prerelease ``` ## Configuration diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/.publicApi/netstandard2.0/PublicAPI.Shipped.txt b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/.publicApi/netstandard2.0/PublicAPI.Shipped.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/CHANGELOG.md b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/CHANGELOG.md new file mode 100644 index 00000000000..134621e04d9 --- /dev/null +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## Unreleased + +* Initial release diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.csproj b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.csproj new file mode 100644 index 00000000000..513eea610ed --- /dev/null +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.csproj @@ -0,0 +1,19 @@ + + + + netstandard2.0 + OpenTelemetry protocol exporter over gRPC for OpenTelemetry .NET + $(PackageTags);OTLP;HTTP + core- + + + + + false + + + + + + + diff --git a/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/README.md b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/README.md new file mode 100644 index 00000000000..a5fdc790d08 --- /dev/null +++ b/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http/README.md @@ -0,0 +1,71 @@ +# gRPC-based implementation of OTLP Exporter for OpenTelemetry .NET + +[![NuGet](https://img.shields.io/nuget/v/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.svg)](https://www.nuget.org/packages/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http) +[![NuGet](https://img.shields.io/nuget/dt/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.svg)](https://www.nuget.org/packages/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http) + +[HTTP-based implementation of OTLP Exporter](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md) +implementation. + +## Prerequisite + +* [Get OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) + +## Installation + +```shell +dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol.Http --prerelease +``` + +## Configuration + +You can configure the `OtlpExporter` through `Options` types properties +and environment variables. +The `Options` type setters take precedence over the environment variables. + +## Options Properties + +* `BatchExportProcessorOptions`: Configuration options for the batch exporter. + Only used if ExportProcessorType is set to Batch. + +* `Endpoint`: Target to which the exporter is going to send traces or metrics. + The endpoint must be a valid Uri with scheme (http or https) and host, and MAY + contain a port and path. + +* `ExportProcessorType`: Whether the exporter should use [Batch or Simple + exporting + processor](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#built-in-span-processors). + +* `Headers`: Optional headers for the connection. + +* `TimeoutMilliseconds` : Max waiting time for the backend to process a batch. + +See the [`TestOtlpExporter.cs`](../../examples/Console/TestOtlpExporter.cs) for +an example of how to use the exporter. + +## Environment Variables + +The following environment variables can be used to override the default +values of the `OtlpExporterOptions` +(following the [OpenTelemetry specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md)). + +| Environment variable | `OtlpExporterOptions` property | +| ------------------------------| --------------------------------------| +| `OTEL_EXPORTER_OTLP_ENDPOINT` | `Endpoint` | +| `OTEL_EXPORTER_OTLP_HEADERS` | `Headers` | +| `OTEL_EXPORTER_OTLP_TIMEOUT` | `TimeoutMilliseconds` | + +The following environment variables can be used to override the default +values of the `PeriodicExportingMetricReaderOptions` +(following the [OpenTelemetry specification](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.12.0/specification/sdk-environment-variables.md#periodic-exporting-metricreader). + +| Environment variable | `PeriodicExportingMetricReaderOptions` property | +| ------------------------------| ------------------------------------------------| +| `OTEL_METRIC_EXPORT_INTERVAL` | `ExportIntervalMilliseconds` | +| `OTEL_METRIC_EXPORT_TIMEOUT` | `ExportTimeoutMilliseconds` | + +## References + +* [OpenTelemetry + Collector](https://github.com/open-telemetry/opentelemetry-collector) +* [OpenTelemetry Project](https://opentelemetry.io/) +* [OTLP proto files](https://github.com/open-telemetry/opentelemetry-proto) diff --git a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests.csproj b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests.csproj new file mode 100644 index 00000000000..49964123efe --- /dev/null +++ b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Grpc.Tests.csproj @@ -0,0 +1,24 @@ + + + + + net7.0;net6.0 + $(TargetFrameworks);net462 + $(TARGET_FRAMEWORK) + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + diff --git a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests.csproj b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests.csproj new file mode 100644 index 00000000000..580937916d7 --- /dev/null +++ b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Http.Tests.csproj @@ -0,0 +1,24 @@ + + + + + net7.0;net6.0 + $(TargetFrameworks);net462 + $(TARGET_FRAMEWORK) + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + +