Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit dfdf05f

Browse files
Add more telemetry for monitoring. (#575)
* Add more telemetry for monitoring.
1 parent 6b49855 commit dfdf05f

3 files changed

Lines changed: 34 additions & 0 deletions

File tree

src/Validation.Symbols/ITelemetryService.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using NuGet.Services.ServiceBus;
6+
using NuGet.Services.Validation;
67

78
namespace Validation.Symbols
89
{
@@ -29,5 +30,14 @@ public interface ITelemetryService : ISubscriptionProcessorTelemetryService
2930
/// <param name="packageNormalizedVersion">The package normalized version.</param>
3031
/// <param name="symbolCount">The count of symbols validated.</param>
3132
IDisposable TrackSymbolValidationDurationEvent(string packageId, string packageNormalizedVersion, int symbolCount);
33+
34+
/// <summary>
35+
/// Tracks the status of the validation.
36+
/// </summary>
37+
/// <param name="packageId">The pacakge id.</param>
38+
/// <param name="packageNormalizedVersion">The package normalized version.</param>
39+
/// <param name="validationStatus">The validation result.</param>
40+
/// <param name="issue">Information about the issue id failed or empty if passed..</param>
41+
void TrackSymbolsValidationResultEvent(string packageId, string packageNormalizedVersion, ValidationStatus validationStatus, string issue);
3242
}
3343
}

src/Validation.Symbols/SymbolsValidatorService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public async Task<IValidationResult> ValidateSymbolsAsync(string packageId, stri
7676
{
7777
if (!SymbolsHaveMatchingPEFiles(pdbs, pes))
7878
{
79+
_telemetryService.TrackSymbolsValidationResultEvent(packageId, packageNormalizedVersion, ValidationStatus.Failed, nameof(ValidationIssue.SymbolErrorCode_MatchingPortablePDBNotFound));
7980
return ValidationResult.FailedWithIssues(ValidationIssue.SymbolErrorCode_MatchingPortablePDBNotFound);
8081
}
8182
var targetDirectory = Settings.GetWorkingDirectory();
@@ -165,6 +166,7 @@ public virtual IValidationResult ValidateSymbolMatching(string targetDirectory,
165166

166167
if (checksumRecords.Length == 0)
167168
{
169+
_telemetryService.TrackSymbolsValidationResultEvent(packageId, packageNormalizedVersion, ValidationStatus.Failed, nameof(ValidationIssue.SymbolErrorCode_ChecksumDoesNotMatch));
168170
return ValidationResult.FailedWithIssues(ValidationIssue.SymbolErrorCode_ChecksumDoesNotMatch);
169171
}
170172

@@ -195,15 +197,18 @@ public virtual IValidationResult ValidateSymbolMatching(string targetDirectory,
195197
if (checksumRecord.Checksum.ToArray().SequenceEqual(hash))
196198
{
197199
// found the right checksum
200+
_telemetryService.TrackSymbolsValidationResultEvent(packageId, packageNormalizedVersion, ValidationStatus.Succeeded, "");
198201
return ValidationResult.Succeeded;
199202
}
200203
}
201204

202205
// Not found any checksum record that matches the PDB.
206+
_telemetryService.TrackSymbolsValidationResultEvent(packageId, packageNormalizedVersion, ValidationStatus.Failed, nameof(ValidationIssue.SymbolErrorCode_ChecksumDoesNotMatch));
203207
return ValidationResult.FailedWithIssues(ValidationIssue.SymbolErrorCode_ChecksumDoesNotMatch);
204208
}
205209
}
206210
}
211+
_telemetryService.TrackSymbolsValidationResultEvent(packageId, packageNormalizedVersion, ValidationStatus.Failed, nameof(ValidationIssue.SymbolErrorCode_MatchingPortablePDBNotFound));
207212
return ValidationResult.FailedWithIssues(ValidationIssue.SymbolErrorCode_MatchingPortablePDBNotFound);
208213
}
209214
}
@@ -215,6 +220,7 @@ public virtual IValidationResult ValidateSymbolMatching(string targetDirectory,
215220
packageId,
216221
packageNormalizedVersion,
217222
Directory.GetFiles(targetDirectory, SymbolExtensionPattern, SearchOption.AllDirectories));
223+
_telemetryService.TrackSymbolsValidationResultEvent(packageId, packageNormalizedVersion, ValidationStatus.Failed, nameof(ValidationIssue.SymbolErrorCode_MatchingPortablePDBNotFound));
218224
return ValidationResult.FailedWithIssues(ValidationIssue.SymbolErrorCode_MatchingPortablePDBNotFound);
219225
}
220226

src/Validation.Symbols/TelemetryService.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using NuGet.Services.Logging;
7+
using NuGet.Services.Validation;
78

89
namespace Validation.Symbols
910
{
@@ -15,11 +16,14 @@ public class TelemetryService : ITelemetryService
1516
private const string SymbolValidationDuration = Prefix + "SymbolValidationDurationInSeconds";
1617
private const string MessageDeliveryLag = Prefix + "MessageDeliveryLag";
1718
private const string MessageEnqueueLag = Prefix + "MessageEnqueueLag";
19+
private const string SymbolValidationResult = Prefix + "SymbolValidationResult";
1820

1921
private const string PackageId = "PackageId";
2022
private const string PackageNormalizedVersion = "PackageNormalizedVersion";
2123
private const string MessageType = "MessageType";
2224
private const string SymbolCount = "SymbolCount";
25+
private const string ValidationResult = "ValidationResult";
26+
private const string Issue = "Issue";
2327

2428
private readonly ITelemetryClient _telemetryClient;
2529

@@ -64,6 +68,20 @@ public IDisposable TrackSymbolValidationDurationEvent(string packageId, string p
6468
});
6569
}
6670

71+
public void TrackSymbolsValidationResultEvent(string packageId, string packageNormalizedVersion, ValidationStatus validationStatus, string issue)
72+
{
73+
_telemetryClient.TrackMetric(
74+
SymbolValidationResult,
75+
1,
76+
new Dictionary<string, string>
77+
{
78+
{ ValidationResult, validationStatus.ToString() },
79+
{ Issue, issue },
80+
{ PackageId, packageId },
81+
{ PackageNormalizedVersion, packageNormalizedVersion }
82+
});
83+
}
84+
6785
public void TrackMessageDeliveryLag<TMessage>(TimeSpan deliveryLag)
6886
=> _telemetryClient.TrackMetric(
6987
MessageDeliveryLag,

0 commit comments

Comments
 (0)