...
Code Block | ||||
---|---|---|---|---|
| ||||
public class MetricSample : BaseDevice<MetricSampleConfiguration> { private IHistogram m_SendDurationHistogram; // measure the time taken to send the payload protectedpublic override void InitializeMetrics() { // construct your metrics here m_SendDurationHistogram = GetOrCreateHistogram("MyDevice.send_duration_in_s", // name of your metric. See notes about X.y syntax "The duration (in seconds) to send to the foo service", // description new HistogramConfiguration // configuration { LabelNames = new[] { "Group", "Tab", "Channel", "ChannelKey" }, // associate this metric with the owner channel Buckets = new double[] { 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10 } // buckets (in seconds) }).WithLabels(MessageChannel.GroupName, MessageChannel.TabName, MessageChannel.ChannelName, MessageChannel.ChannelKeyString); } public override Task ProcessMessageAsync(IMessageContext context, CancellationToken cancellationToken) { // ...your code using (m_SendDurationHistogram.NewTimer()) // the Histogram.NewTimer() method is used to measure the wrapped methods duration. { await SendToFooServiceAsync(...).ConfigureAwait(false); } // ... your code } } |
The histogram is defined on line 3 (using the interface type)
The
InitializeMetrics()
method is called in yourStart
method(automatically) after the device is loaded (after theLoad
method). Any labels used within theInitializeMetrics()
method must be initialized in your constructor orLoad
methods.The histogram is created in the
InitializeMetrics
method.The operation to be measured is wrapped with the
.NewTimer()
method. TheNewTimer
method is a specialized function of the histogram type for measuring duration (in seconds). Other operations (like size) are measured using the.Observe(X)
method.
Info |
---|
The |
...