Skip to content

Conversation

@martincostello
Copy link
Member

@martincostello martincostello commented Feb 5, 2026

Changes

Add an example for an ASP.NET Core application using F#.

This was inspired by a conversation @alanwest and myself had at OTel Unplugged with an end-user who wondered why there wasn't an F# SDK for OpenTelemetry.

The example here is based on the AspNetCore example, and then converted with the help of GitHub Copilot. I'm no F# developer, so it might not be as idiomatic as it could be.

While working on this I found some issues with the Docker Compose setup copied from the ASP.NET Core example so I'm going to park this for now while I fix that #6877.

Feedback welcome.

Merge requirement checklist

  • CONTRIBUTING guidelines followed (license requirements, nullable enabled, static analysis, etc.)
  • Unit tests added/updated
  • Appropriate CHANGELOG.md files updated for non-trivial changes
  • Changes in public API reviewed (if applicable)

@github-actions github-actions bot added infra Infra work - CI/CD, code coverage, linters dependencies Pull requests that update a dependency file documentation Documentation related labels Feb 5, 2026
@codecov
Copy link

codecov bot commented Feb 5, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.08%. Comparing base (1dd61d2) to head (5f82e17).
✅ All tests successful. No failed tests found.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #6875      +/-   ##
==========================================
- Coverage   87.33%   87.08%   -0.26%     
==========================================
  Files         263      263              
  Lines       12387    12387              
==========================================
- Hits        10818    10787      -31     
- Misses       1569     1600      +31     
Flag Coverage Δ
unittests-Project-Experimental 87.04% <ø> (-0.15%) ⬇️
unittests-Project-Stable 87.05% <ø> (-0.20%) ⬇️
unittests-Solution 86.83% <ø> (-0.33%) ⬇️
unittests-UnstableCoreLibraries-Experimental 89.32% <ø> (-0.10%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 7 files with indirect coverage changes

@martincostello
Copy link
Member Author

Paging some F# fans I know in case they have any opinions 😃

/cc @slang25 @MrBliz @baronfel

Copy link

@baronfel baronfel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks mostly good, but I have a couple tiny notes to clean it up a bit.

Add an example for an ASP.NET Core application using F#.
@martincostello martincostello marked this pull request as ready for review February 10, 2026 11:05
@martincostello martincostello requested a review from a team as a code owner February 10, 2026 11:05
Copilot AI review requested due to automatic review settings February 10, 2026 11:05
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new F# ASP.NET Core Web API example demonstrating OpenTelemetry logging, metrics, and tracing, aligning with the existing C# AspNetCore example and wiring it into the repo solution/build.

Changes:

  • Introduces a new F# example app (project, program, controller, instrumentation helper, model) with OTLP/Console/Prometheus switching via configuration.
  • Adds supporting example assets (README, appsettings, docker-compose for grafana/otel-lgtm).
  • Wires the new example into the solution and central package versions.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
examples/FSharp/docker-compose.yaml Adds docker-compose to run grafana/otel-lgtm dependencies for the example.
examples/FSharp/appsettings.json Adds configuration for exporters, OTLP endpoint, and instrumentation options.
examples/FSharp/WeatherForecast.fs Adds the sample model used by the controller.
examples/FSharp/README.md Documents running the F# example and optional OTLP export + Docker deps.
examples/FSharp/Program.fs Configures OpenTelemetry logging/metrics/tracing and ASP.NET Core pipeline.
examples/FSharp/InstrumentationSource.fs Adds ActivitySource/Meter/counter holder for manual instrumentation.
examples/FSharp/Examples.FSharp.fsproj Adds the new F# example project and dependencies.
examples/FSharp/Controllers/WeatherForecastController.fs Adds the sample controller emitting telemetry and logs.
OpenTelemetry.slnx Adds the new F# example project to the solution.
Directory.Packages.props Adds central package version entry for FSharp.Core.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file documentation Documentation related infra Infra work - CI/CD, code coverage, linters

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants