save progress
This commit is contained in:
@@ -25,6 +25,12 @@ public sealed class ScannerWorkerMetrics
|
||||
private readonly Counter<long> _surfacePayloadPersisted;
|
||||
private readonly Histogram<double> _surfaceManifestPublishDurationMs;
|
||||
|
||||
// Secrets analysis metrics (Sprint: SPRINT_20251229_046_BE)
|
||||
private readonly Counter<long> _secretsAnalysisCompleted;
|
||||
private readonly Counter<long> _secretsAnalysisFailed;
|
||||
private readonly Counter<long> _secretFindingsDetected;
|
||||
private readonly Histogram<double> _secretsAnalysisDurationMs;
|
||||
|
||||
public ScannerWorkerMetrics()
|
||||
{
|
||||
_queueLatencyMs = ScannerWorkerInstrumentation.Meter.CreateHistogram<double>(
|
||||
@@ -80,6 +86,21 @@ public sealed class ScannerWorkerMetrics
|
||||
"scanner_worker_surface_manifest_publish_duration_ms",
|
||||
unit: "ms",
|
||||
description: "Duration in milliseconds to persist and publish surface manifests.");
|
||||
|
||||
// Secrets analysis metrics (Sprint: SPRINT_20251229_046_BE)
|
||||
_secretsAnalysisCompleted = ScannerWorkerInstrumentation.Meter.CreateCounter<long>(
|
||||
"scanner_worker_secrets_analysis_completed_total",
|
||||
description: "Number of successfully completed secrets analysis runs.");
|
||||
_secretsAnalysisFailed = ScannerWorkerInstrumentation.Meter.CreateCounter<long>(
|
||||
"scanner_worker_secrets_analysis_failed_total",
|
||||
description: "Number of secrets analysis runs that failed.");
|
||||
_secretFindingsDetected = ScannerWorkerInstrumentation.Meter.CreateCounter<long>(
|
||||
"scanner_worker_secrets_findings_detected_total",
|
||||
description: "Number of secret findings detected.");
|
||||
_secretsAnalysisDurationMs = ScannerWorkerInstrumentation.Meter.CreateHistogram<double>(
|
||||
"scanner_worker_secrets_analysis_duration_ms",
|
||||
unit: "ms",
|
||||
description: "Duration in milliseconds for secrets analysis.");
|
||||
}
|
||||
|
||||
public void RecordQueueLatency(ScanJobContext context, TimeSpan latency)
|
||||
@@ -343,4 +364,39 @@ public sealed class ScannerWorkerMetrics
|
||||
// Native analysis metrics are tracked via counters/histograms
|
||||
// This is a placeholder for when we add dedicated native analysis metrics
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Records successful secrets analysis completion.
|
||||
/// Sprint: SPRINT_20251229_046_BE - Secrets Leak Detection
|
||||
/// </summary>
|
||||
public void RecordSecretsAnalysisCompleted(
|
||||
ScanJobContext context,
|
||||
int findingCount,
|
||||
int filesScanned,
|
||||
TimeSpan duration,
|
||||
TimeProvider timeProvider)
|
||||
{
|
||||
var tags = CreateTags(context, stage: ScanStageNames.ScanSecrets);
|
||||
_secretsAnalysisCompleted.Add(1, tags);
|
||||
|
||||
if (findingCount > 0)
|
||||
{
|
||||
_secretFindingsDetected.Add(findingCount, tags);
|
||||
}
|
||||
|
||||
if (duration > TimeSpan.Zero)
|
||||
{
|
||||
_secretsAnalysisDurationMs.Record(duration.TotalMilliseconds, tags);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Records secrets analysis failure.
|
||||
/// Sprint: SPRINT_20251229_046_BE - Secrets Leak Detection
|
||||
/// </summary>
|
||||
public void RecordSecretsAnalysisFailed(ScanJobContext context, TimeProvider timeProvider)
|
||||
{
|
||||
var tags = CreateTags(context, stage: ScanStageNames.ScanSecrets);
|
||||
_secretsAnalysisFailed.Add(1, tags);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user