instrumentation reference implementation for Azure application
-
Create sample proj with the following layers
- DTO obj
- Repository Layer
- Provider Layer
- REST API (Wenb Role)
- Queue
- Pipeline framework
- Worker Role (Workflow - Declarative)
-
Instrumentation
- Method boundary: tracking -> specify sink layer (Multicast Aspect)
- Performance: ETW+SLAB w/ semantic logging, sink -> RealTime + AzureBlob + ElasticSearch
- Caching Provider (3 levels: in-memory, redis/disk, table storage)
- Use global flag to turn on/off instrumentation
- counters: a) method: total_count, calls_per_hour, timespan_per_call (min, max, avg, total) b) layer: c) memory d) cpu e) disk IO f) network IO g) exception - correlationId
-
Criteria
- able to follow call graph in async context
- should not have much overhead
- query trace in realtime
- ?