CacheTower icon indicating copy to clipboard operation
CacheTower copied to clipboard

Add support for Open Telemetry

Open Turnerj opened this issue 3 years ago • 2 comments

Open Telemetry has reached v1 and may be worth directly supporting in Cache Tower.

See: https://medium.com/opentelemetry/opentelemetry-specification-v1-0-0-tracing-edition-72dd08936978

  • Tracing: Not sure where this would fit in - may relate closely with logging
  • Logging: Relates to #150
  • Metrics: May be worth capturing cache hits/misses, background refreshes and the interaction of different layers
    • May still want to capture the cache hit count of individual cache entries still (this can be seen in #56 though with other functionality added too)

Further investigation required.

Turnerj avatar Apr 12 '21 04:04 Turnerj

Hi @Turnerj

Just my 2 cents on this - I wouldn't tightly bind your lib to Open Telemetry - instead I think an approach of providing something like an ICacheMonitor interface, which has a bunch of definitions for "things" that could be monitored.

These could be things like (off the top of my head - I'm sure there could be many more!):

  • CacheHit(TimeSpan timeTaken, string layerName)
  • CacheMiss(TimeSpan timeTaken, string layerName)
  • CacheException(TimeSpan timeTaken, string layerName, Exception exception)
  • CacheStaleRefresh(TimeSpan timeTaken, TimeSpan cacheAge, string layerName)

By default there would be a NoOpCacheMonitor used unless replaced during setup, which just no ops the calls.

This way an Open Telemetry implementation could be built, or indeed, any other roll-your-own, or of the shelf system could easily be supported. The consumer just needs to wire up a concrete implementation of CacheMonitor which ties into their monitoring system.

mgoodfellow avatar Aug 11 '21 08:08 mgoodfellow

Thanks for the feedback @mgoodfellow !

Everything you've said makes sense and is probably what I should do. Similarly doing it that method allows for integration with event counters too.

Depending on the access points needed to support it, I should be able to achieve this through my extension system (even if it requires new "hook" points).

Turnerj avatar Aug 11 '21 09:08 Turnerj