CacheTower
CacheTower copied to clipboard
Add support for Open Telemetry
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.
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.
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).