Skip to content

Commit 9b32ba4

Browse files
committed
Add duration and failure counters
1 parent 4a07a2c commit 9b32ba4

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

src/ServiceControl.Audit/Auditing/AuditIngestion.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -182,19 +182,22 @@ async Task EnsureStopped(CancellationToken cancellationToken = default)
182182

183183
async Task OnMessage(MessageContext messageContext, CancellationToken cancellationToken)
184184
{
185-
if (settings.MessageFilter != null && settings.MessageFilter(messageContext))
185+
using (new DurationRecorder(ingestionDuration))
186186
{
187-
return;
188-
}
187+
if (settings.MessageFilter != null && settings.MessageFilter(messageContext))
188+
{
189+
return;
190+
}
189191

190-
var taskCompletionSource = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
191-
messageContext.SetTaskCompletionSource(taskCompletionSource);
192+
var taskCompletionSource = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
193+
messageContext.SetTaskCompletionSource(taskCompletionSource);
192194

193-
await channel.Writer.WriteAsync(messageContext, cancellationToken);
194-
await taskCompletionSource.Task;
195+
await channel.Writer.WriteAsync(messageContext, cancellationToken);
196+
await taskCompletionSource.Task;
195197

196-
ingestedMessagesCounter.Add(1);
197-
messageSize.Record(messageContext.Body.Length / 1024.0);
198+
ingestedMessagesCounter.Add(1);
199+
messageSize.Record(messageContext.Body.Length / 1024.0);
200+
}
198201
}
199202

200203
async Task Loop()
@@ -261,6 +264,7 @@ async Task Loop()
261264
readonly Histogram<double> auditBatchDuration = Telemetry.Meter.CreateHistogram<double>(Telemetry.CreateInstrumentName("ingestion.", "batch_duration"), unit: "ms");
262265
readonly Histogram<double> messageSize = Telemetry.Meter.CreateHistogram<double>(Telemetry.CreateInstrumentName("ingestion.", "message_size"), unit: "kilobytes");
263266
readonly Counter<long> ingestedMessagesCounter = Telemetry.Meter.CreateCounter<long>(Telemetry.CreateInstrumentName("ingestion.", "count"));
267+
readonly Histogram<double> ingestionDuration = Telemetry.Meter.CreateHistogram<double>(Telemetry.CreateInstrumentName("ingestion.", "duration"), unit: "ms");
264268
readonly Watchdog watchdog;
265269
readonly Task ingestionWorker;
266270
readonly IHostApplicationLifetime applicationLifetime;

src/ServiceControl.Audit/Auditing/AuditIngestionFaultPolicy.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
using System;
44
using System.Diagnostics;
5+
using System.Diagnostics.Metrics;
56
using System.IO;
67
using System.Runtime.InteropServices;
78
using System.Runtime.Versioning;
@@ -37,10 +38,13 @@ public async Task<ErrorHandleResult> OnError(ErrorContext errorContext, Cancella
3738
//Same as recoverability policy in NServiceBusFactory
3839
if (errorContext.ImmediateProcessingFailures < 3)
3940
{
41+
retryCounter.Add(1);
4042
return ErrorHandleResult.RetryRequired;
4143
}
4244

4345
await StoreFailedMessageDocument(errorContext, cancellationToken);
46+
47+
failedCounter.Add(1);
4448
return ErrorHandleResult.Handled;
4549
}
4650

@@ -100,6 +104,9 @@ void WriteToEventLog(string message)
100104
EventLog.WriteEntry(EventSourceCreator.SourceName, message, EventLogEntryType.Error);
101105
}
102106

107+
readonly Counter<long> retryCounter = Telemetry.Meter.CreateCounter<long>(Telemetry.CreateInstrumentName("ingestion.", "retry"));
108+
readonly Counter<long> failedCounter = Telemetry.Meter.CreateCounter<long>(Telemetry.CreateInstrumentName("ingestion.", "failed"));
109+
103110
static readonly ILog log = LogManager.GetLogger<AuditIngestionFaultPolicy>();
104111
}
105112
}

0 commit comments

Comments
 (0)