View on GitHub
Clean Architecture Toolkit for .NET
Clean Architecture Toolkit is a clean, modular architecture foundation for .NET applications.
It embraces SOLID principles and focuses on maintainability, testability, and scalability through clear boundaries and pluggable design.

|   HOME   |   MODULE OVERVIEW   |   DEMO   |

Plans for Cat.Telemetry

Shared tracing and metrics setup for all services.
Status: not started. This plan collects what we know. The open questions need an answer before the build.

Contents

The idea

With many small services, one slow order can touch five of them. Without traces and metrics nobody can follow it. Every service needs the same setup, with the same names, so the pieces fit together.

Cat.Telemetry is that shared setup, for projects that do not use Aspire. A project that uses Aspire already has it in ServiceDefaults and does not need this module, except to extend it.

What we already know

From the existing modules:

From the demo plan and the Aspire plan:

From the saga plan:

From the architecture:

Decisions and open questions

Decided

Topic Decision
Independence Works without Aspire.
Overlap With Aspire, use ServiceDefaults and skip this module. The module exists for projects without Aspire. It may also hold extensions of ServiceDefaults, so they are useful outside the demo.
Existing tracing The Cat.* activity sources stay as they are.

Open

Questions before building

  1. The module is for projects without Aspire. What is the minimum setup it must give them, and what only extends ServiceDefaults?
  2. Which telemetry backend will you really use in Azure: Application Insights, Grafana, something else?
  3. Which metrics matter to you first?
  4. Does this module own the trace propagation over messages, or Cat.Messaging?
  5. Should it add health checks, or leave that out?
  6. Do we also adopt ServiceDefaults tracing filters, such as the /health paths, in the module?
  7. How much of the OpenTelemetry API do we hide, and how much do we expose?
  8. Should existing activity sources move into this module, or stay in their own decorators?
  9. Do you want a rule for personal data in telemetry?
  10. In the demo, how do we show “one order across all services” before Inventory and Notifications exist?