Open telemetry update - #617
Conversation
…sample, tests, and docs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…sink Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…Monitor OpenTelemetry Distro. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…instead of surfacing a confusing test-time error. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…net.ps1 conflict and migrating OpenTelemetry test project from net9.0 to net10.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds an OpenTelemetry telemetry package, integration tests, and an ASP.NET Core demonstration application.
Changes:
- Publishes feature-evaluation events and enriches spans/logs with targeting IDs.
- Adds comprehensive OpenTelemetry tests and build integration.
- Adds and documents an Azure Monitor demo application.
Reviewed changes
Copilot reviewed 47 out of 101 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
.gitignore |
Ignores local build notes. |
README.md |
Links the new demo. |
Microsoft.FeatureManagement.sln |
Registers new projects and platforms. |
build/install-dotnet.ps1 |
Installs and verifies .NET 8/10. |
pack.ps1 |
Packages the telemetry project. |
test.ps1 |
Runs the new tests. |
src/Microsoft.FeatureManagement.Telemetry.OpenTelemetry/FeatureManagementBuilderExtensions.cs |
Registers OpenTelemetry integration. |
src/Microsoft.FeatureManagement.Telemetry.OpenTelemetry/Microsoft.FeatureManagement.Telemetry.OpenTelemetry.csproj |
Defines the package. |
src/Microsoft.FeatureManagement.Telemetry.OpenTelemetry/OpenTelemetryEventPublisher.cs |
Converts evaluations into log events. |
src/Microsoft.FeatureManagement.Telemetry.OpenTelemetry/OpenTelemetryHostedService.cs |
Initializes event publishing. |
src/Microsoft.FeatureManagement.Telemetry.OpenTelemetry/TargetingActivityProcessor.cs |
Enriches spans. |
src/Microsoft.FeatureManagement.Telemetry.OpenTelemetry/TargetingLogProcessor.cs |
Enriches logs. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/ActivityLogCorrelationTests.cs |
Tests exported log attributes. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/AssemblyInfo.cs |
Disables parallel tests. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/CapturingLoggerProvider.cs |
Provides test log capture. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/EventPropertiesTests.cs |
Tests event schema values. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/FeatureManagementBuilderExtensionsTests.cs |
Tests registration behavior. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/HostedServiceLifecycleTests.cs |
Tests listener lifecycle. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/OpenTelemetryEventPublisherTests.cs |
Tests event publication. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/TargetingActivityProcessorTests.cs |
Tests span enrichment. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/TargetingLogProcessorTests.cs |
Tests log enrichment. |
tests/Tests.FeatureManagement.Telemetry.OpenTelemetry/Tests.FeatureManagement.Telemetry.OpenTelemetry.csproj |
Configures telemetry tests. |
examples/OpenTelemetryDemo/LoggerExtensions.cs |
Defines custom log events. |
examples/OpenTelemetryDemo/OpenTelemetryDemo.csproj |
Configures the demo project. |
examples/OpenTelemetryDemo/Program.cs |
Wires telemetry and middleware. |
examples/OpenTelemetryDemo/README.md |
Documents demo usage. |
examples/OpenTelemetryDemo/appsettings.Development.json |
Sets development logging. |
examples/OpenTelemetryDemo/appsettings.json |
Defines flags and telemetry metadata. |
examples/OpenTelemetryDemo/Pages/Checkout.cshtml |
Adds checkout UI. |
examples/OpenTelemetryDemo/Pages/Checkout.cshtml.cs |
Emits checkout telemetry. |
examples/OpenTelemetryDemo/Pages/Error.cshtml |
Adds the error page. |
examples/OpenTelemetryDemo/Pages/Error.cshtml.cs |
Supplies error details. |
examples/OpenTelemetryDemo/Pages/Index.cshtml |
Adds image-rating UI. |
examples/OpenTelemetryDemo/Pages/Index.cshtml.cs |
Evaluates variants and records votes. |
examples/OpenTelemetryDemo/Pages/RandomizeUser.cshtml |
Adds user-randomization endpoint. |
examples/OpenTelemetryDemo/Pages/RandomizeUser.cshtml.cs |
Creates the targeting identity. |
examples/OpenTelemetryDemo/Pages/Shared/_Layout.cshtml |
Defines shared layout. |
examples/OpenTelemetryDemo/Pages/Shared/_Layout.cshtml.css |
Styles shared layout. |
examples/OpenTelemetryDemo/Pages/Shared/_ValidationScriptsPartial.cshtml |
Loads validation scripts. |
examples/OpenTelemetryDemo/Pages/_ViewImports.cshtml |
Imports Razor helpers. |
examples/OpenTelemetryDemo/Pages/_ViewStart.cshtml |
Selects the layout. |
examples/OpenTelemetryDemo/wwwroot/css/site.css |
Adds demo styling. |
examples/OpenTelemetryDemo/wwwroot/favicon.ico |
Adds the site icon. |
examples/OpenTelemetryDemo/wwwroot/js/site.js |
Adds the site script placeholder. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/LICENSE |
Includes Bootstrap licensing. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css |
Vendors Bootstrap grid CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css |
Vendors minified grid CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css |
Vendors RTL grid CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css |
Vendors minified RTL grid CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css |
Vendors Bootstrap reboot CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css |
Vendors minified reboot CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css |
Vendors RTL reboot CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css |
Vendors minified RTL reboot CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css |
Vendors Bootstrap utilities CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css |
Vendors minified utilities CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css |
Vendors RTL utilities CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css |
Vendors minified RTL utilities CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.css |
Vendors Bootstrap CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css |
Vendors minified Bootstrap CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css |
Vendors RTL Bootstrap CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css |
Vendors minified RTL CSS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js |
Vendors bundled Bootstrap JS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js |
Vendors minified bundled JS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js |
Vendors Bootstrap ESM. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js |
Vendors minified ESM. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.js |
Vendors Bootstrap JS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js |
Vendors minified Bootstrap JS. |
examples/OpenTelemetryDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery/LICENSE.txt |
Includes jQuery licensing. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery/dist/jquery.js |
Vendors jQuery. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery/dist/jquery.min.js |
Vendors minified jQuery. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery/dist/jquery.min.map |
Vendors its source map. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation/LICENSE.md |
Includes validation licensing. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation/dist/additional-methods.js |
Vendors additional validators. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation/dist/additional-methods.min.js |
Vendors minified validators. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation/dist/jquery.validate.js |
Vendors jQuery Validation. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js |
Vendors minified validation. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt |
Includes unobtrusive-validation licensing. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js |
Vendors unobtrusive validation. |
examples/OpenTelemetryDemo/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js |
Vendors its minified build. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…riting existing TargetingId tag, and remove unused Bootstrap dist files Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Should this PR target on preview branch or main branch? |
I think main branch make sense because 1) It does not break existing customers using AppInsightsTelemetry since it is an addition, 2) Python FeatureManagement already supports OpenTelemetry. |
…publisher. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ying exporter ordering. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update callers, tests, and OpenTelemetry demo documentation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> | ||
| public Task StartAsync(CancellationToken cancellationToken) | ||
| { | ||
| _serviceProvider.GetRequiredService<FeatureEvaluationEventPublisher>(); |
There was a problem hiding this comment.
Maybe this should be disposed when stop
There was a problem hiding this comment.
If it's in the service container, the service container should dispose of it when the container is disposed.
This pull request adds a new OpenTelemetry demo to the repository, demonstrating how to integrate OpenTelemetry-based telemetry and metrics with ASP.NET Core applications. It also introduces a new telemetry-related project, updates the solution structure, and enhances the documentation to include the new example.
Major additions and changes:
New Example Application:
OpenTelemetryDemo, which demonstrates using OpenTelemetry for logging custom events and tracking metrics in an ASP.NET Core web app. The demo includes pages for checkout and error handling, and showcases integration with Azure Monitor OpenTelemetry Exporter. [1] [2] [3] [4] [5] [6]Solution and Project Structure Updates:
Microsoft.FeatureManagement.slnto include the newOpenTelemetryDemoexample, the newMicrosoft.FeatureManagement.Telemetry.OpenTelemetryproject, and its associated test project. Also added asrcsolution folder and configured solution/project build settings for x64 and x86 platforms. [1] [2]Documentation:
README.mdto reference the new OpenTelemetry demo, making it discoverable for users looking for telemetry integration examples.Testing Strategy:
OpenTelemetryDemois running and sending telemetry to my dedicated App Insights.