Installation
To enable telemetry in Polly, add thePolly.Extensions package to your project:
Basic Usage
Afterwards, you can use theConfigureTelemetry(...) extension method on the ResiliencePipelineBuilder:
MyTelemetryListener and MyMeteringEnricher is implemented as:
AddResiliencePipeline(...) extension method which automatically enables telemetry for defined pipeline:
Metrics
The metrics are emitted under thePolly meter name. The subsequent sections provide insights into the metrics produced by Polly. Please note that any custom enriched tags are not depicted in the following tables.
Every telemetry event has the following optional tags:
pipeline.name: comes fromResiliencePipelineBuilder.Name.pipeline.instance: comes fromResiliencePipelineBuilder.InstanceName.strategy.name: comes fromRetryStrategyOptions.Name.operation.key: comes fromResilienceContext.OperationKey.
Instrument: resilience.polly.strategy.events
- Type: Counter
- Numerical type: int
- Description: Emitted upon the occurrence of a resilience event.
Tags
Event Names
Theevent.name tag is reported by individual resilience strategies. The built-in strategies report the following events:
OnRetry
Retry strategy events
OnFallback
Fallback strategy events
OnHedging
Hedging strategy events
OnTimeout
Timeout strategy events
Circuit Breaker
OnCircuitClosed, OnCircuitOpened, OnCircuitHalfOpened
OnRateLimiterRejected
Rate limiter strategy events
Instrument: resilience.polly.strategy.attempt.duration
- Type: Histogram
- Unit: milliseconds
- Numerical type: double
- Description: Tracks the duration of execution attempts, produced by
RetryandHedgingresilience strategies.
Tags
Instrument: resilience.polly.pipeline.duration
- Type: Histogram
- Unit: milliseconds
- Numerical type: double
- Description: Measures the duration of resilience pipelines.
Tags
Metering Enrichment
Polly API lets you add extra tags to any resilience event created by resilience strategies. To do this, derive from theMeteringEnricher class and add your custom enricher to the TelemetryOptions.MeteringEnrichers list.
The custom enricher:
Logs
Logs are registered under thePolly logger name. Here are some examples of the logs:
Emitting Telemetry Events
Each resilience strategy can generate telemetry data through theResilienceStrategyTelemetry API. Polly encapsulates event details as TelemetryEventArguments and emits them via TelemetryListener.
To leverage this telemetry data, users should assign a TelemetryListener instance to ResiliencePipelineBuilder.TelemetryListener and then consume the TelemetryEventArguments.
For common scenarios, it is expected that users would make use of Polly.Extensions. This extension enables telemetry configuration through the ResiliencePipelineBuilder.ConfigureTelemetry(...) method, which processes TelemetryEventArguments to generate logs and metrics.
Customizing Event Severity
To customize the severity of telemetry events, set theSeverityProvider delegate that allows changing the default severity of resilience events:
PipelineExecuting: by default reported atDebuglevelPipelineExecuted: by default reported atInformationlevel
SeverityProvider to override strategy specific telemetry events’ severity.