...
Code Block | ||||
---|---|---|---|---|
| ||||
public class MetricSample : BaseDevice<MetricSampleConfiguration> { private IHistogram m_SendDurationHistogram; // measure the time taken to send the payload public override void Start() { // make sure you call InitializeMetrics InitializeMetrics(); } protected public 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 |
...
Once you have deployed your device and processed at least one message, your metric will be published on the Connexion http metric endpoint. At this point you can open Grafana in a browser and start creating a dashboard.
Custom Metrics in the UI
In order for custom metrics to appear in the Connexion UI metric tab, they must be created/accessed once. The process of calling the GetOrCreateX
method will register a metric within Connexion. Currently, the Connexion UI must be restarted (or navigate away and back to the metric tab), for newly registered metrics to be displayed.