Skip to content

Conversation

@martincostello
Copy link
Member

Changes

Use grafana/otel-lgtm to simplify maintenance of Docker Compose setup for OTLP back-end and UI.

The team I'm part of at Grafana maintains this Docker image. The image contains the OTel Collector, Prometheus, Loki, Tempo (+ Pyroscope), so is effectively the same as the existing setup here for the ASP.NET Core example.

The advantage in switching is that it removes the need to maintain the configuration/setup here, and instead delegates the maintenance (and testing) of that image outside of this repository.

It also makes it less to duplicate for other examples (e.g. #6875).

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)

Use grafana/otel-lgtm to simplify maintenance of Docker Compose setup for OTLP back-end and UI.
@martincostello martincostello requested a review from a team as a code owner February 6, 2026 17:34
@martincostello martincostello added the dependencies Pull requests that update a dependency file label Feb 6, 2026
Copilot AI review requested due to automatic review settings February 6, 2026 17:34
@github-actions github-actions bot added documentation Documentation related and removed dependencies Pull requests that update a dependency file labels Feb 6, 2026
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

This PR simplifies the Docker Compose setup for the ASP.NET Core example by replacing the custom configuration with the grafana/otel-lgtm all-in-one Docker image. This change reduces maintenance overhead by delegating the configuration and testing of the observability stack to Grafana's team, and makes it easier to replicate this setup for other examples (such as the F# example in PR #6875).

Changes:

  • Replaced five separate Docker services (otel-collector, tempo, prometheus, loki, grafana) with a single grafana/otel-lgtm container
  • Removed five configuration files (otel-collector.yaml, tempo.yaml, prometheus.yaml, loki.yaml, grafana-datasources.yaml) that are no longer needed
  • Updated README.md to reflect the simplified setup and improved formatting
  • Removed gitignore entries for loki-data/ and tempo-data/ directories that are no longer generated

Reviewed changes

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

Show a summary per file
File Description
examples/AspNetCore/docker-compose.yaml Replaced multi-service configuration with single otel-lgtm image, exposing ports 3000, 4040, 4317, 4318, and 9090
examples/AspNetCore/README.md Updated documentation to reflect simplified setup, fixed formatting and grammar
examples/AspNetCore/otel-collector.yaml Removed (now handled by otel-lgtm image)
examples/AspNetCore/tempo.yaml Removed (now handled by otel-lgtm image)
examples/AspNetCore/prometheus.yaml Removed (now handled by otel-lgtm image)
examples/AspNetCore/loki.yaml Removed (now handled by otel-lgtm image)
examples/AspNetCore/grafana-datasources.yaml Removed (now handled by otel-lgtm image)
.gitignore Removed entries for loki-data/ and tempo-data/ directories that are no longer generated

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

- Fix typo
- Comment ports
- Remove unneeded 4040 port for profiles.
- "4317" # otlp grpc
- "4318" # otlp http
# plus a UI to query logs, traces and metrics and visualize them.
otel-lgtm:
Copy link
Member

Choose a reason for hiding this comment

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

could you confirm if Exemplars would continue to work? (It took me a lot of time years ago to get to a working setup! Exemplars were pretty new then. Just want to make sure we still have a working Exemplars demo here.

Copy link
Member Author

Choose a reason for hiding this comment

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

They should, yes.

Copy link
Member

Choose a reason for hiding this comment

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

https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/docs/metrics/exemplars the exemplar tutorial is here, and it uses a different setup. Probably fine.

Copy link
Member Author

Choose a reason for hiding this comment

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

I'll test it out to verify next time I'm at a computer, but AFAIR the container image should be preconfigured to work with exemplars.

Copy link
Member Author

Choose a reason for hiding this comment

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

Exemplars for traces:

image

Exemplars for metrics:

image

- "4317" # otlp grpc
- "4318" # otlp http
# plus a UI to query logs, traces and metrics and visualize them.
otel-lgtm:
Copy link
Member

Choose a reason for hiding this comment

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

#5779

There are some discussions in the past about what "tool" to use... @open-telemetry/dotnet-maintainers Please confirm if you are okay with grafana/lgtm stack. (we were already using it piece by piece, so not a new thing)

@rajkumar-rangaraj rajkumar-rangaraj added this pull request to the merge queue Feb 9, 2026
Merged via the queue into open-telemetry:main with commit d90e118 Feb 9, 2026
23 checks passed
@martincostello martincostello deleted the use-docker-lgtm branch February 9, 2026 22:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docker documentation Documentation related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants