Skip to content

Conversation

@carter-broom
Copy link

OpenTelemetry has become the default standard for monitoring applications, especially where that application crosses system boundaries to other APIs.

I propose to add OpenTelemetry support to CryptoCurrency.Net, in order to create higher reliability systems, with better observability to understand what limits are being hit by applications (rate limits, errors types, cache misses etc) and get more alerting capabilities.

I've created this first draft PR to collect ideas/requirements/proposals for integrating OpenTelemetry into the excellent CryptoCurrency.Net suite of libraries.

This initial draft only has implemention for the BaseApiClient, and does not yet touch RateLimiting, WebSockets etc, but this is my main area of interest.

Instrumenting too low I don't believe is required, as we already have the System.Net.Http telemetry out of the box, but enhancing this with the attributes of the clients would go along way towards improving system observability.

Comment requests:

  • Naming
  • Metrics that would be useful
  • Appropriate injection point (Currently BaseClient)
  • Configuration (attach to ExchangeOptions)
  • Visibility (most should be able to be internal/not exposed, except maybe adding some kind of extra helpful Identifier to RequestDefinition to add as a Tag)

I wanted to get this out for JKorf to provide his opinion on how this should be best architected to fit within the overall style of the libraries.

Many thanks for your consideration.

@carter-broom
Copy link
Author

Example dashboard using current metrics, to be expanded beyond the Rest clients into Rate Limiting, Sockets etc.
image

@carter-broom
Copy link
Author

Exampling showing RateLimitingDelays as Spans for aggregating delay time.

image

@carter-broom carter-broom force-pushed the dev/otel branch 3 times, most recently from a7ef561 to 9dc45cf Compare August 16, 2025 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant