Refactor and enhance scanner worker functionality
- Cleaned up code formatting and organization across multiple files for improved readability. - Introduced `OsScanAnalyzerDispatcher` to handle OS analyzer execution and plugin loading. - Updated `ScanJobContext` to include an `Analysis` property for storing scan results. - Enhanced `ScanJobProcessor` to utilize the new `OsScanAnalyzerDispatcher`. - Improved logging and error handling in `ScanProgressReporter` for better traceability. - Updated project dependencies and added references to new analyzer plugins. - Revised task documentation to reflect current status and dependencies.
This commit is contained in:
		| @@ -0,0 +1,51 @@ | ||||
| using System.Collections.Generic; | ||||
| using System.Diagnostics.Metrics; | ||||
|  | ||||
| namespace StellaOps.Scanner.EntryTrace.Diagnostics; | ||||
|  | ||||
| public static class EntryTraceInstrumentation | ||||
| { | ||||
|     public static readonly Meter Meter = new("stellaops.scanner.entrytrace", "1.0.0"); | ||||
| } | ||||
|  | ||||
| public sealed class EntryTraceMetrics | ||||
| { | ||||
|     private readonly Counter<long> _resolutions; | ||||
|     private readonly Counter<long> _unresolved; | ||||
|  | ||||
|     public EntryTraceMetrics() | ||||
|     { | ||||
|         _resolutions = EntryTraceInstrumentation.Meter.CreateCounter<long>( | ||||
|             "entrytrace_resolutions_total", | ||||
|             description: "Number of entry trace attempts by outcome."); | ||||
|         _unresolved = EntryTraceInstrumentation.Meter.CreateCounter<long>( | ||||
|             "entrytrace_unresolved_total", | ||||
|             description: "Number of unresolved entry trace hops by reason."); | ||||
|     } | ||||
|  | ||||
|     public void RecordOutcome(string imageDigest, string scanId, EntryTraceOutcome outcome) | ||||
|     { | ||||
|         _resolutions.Add(1, CreateTags(imageDigest, scanId, ("outcome", outcome.ToString().ToLowerInvariant()))); | ||||
|     } | ||||
|  | ||||
|     public void RecordUnknown(string imageDigest, string scanId, EntryTraceUnknownReason reason) | ||||
|     { | ||||
|         _unresolved.Add(1, CreateTags(imageDigest, scanId, ("reason", reason.ToString().ToLowerInvariant()))); | ||||
|     } | ||||
|  | ||||
|     private static KeyValuePair<string, object?>[] CreateTags(string imageDigest, string scanId, params (string Key, object? Value)[] extras) | ||||
|     { | ||||
|         var tags = new List<KeyValuePair<string, object?>>(2 + extras.Length) | ||||
|         { | ||||
|             new("image", imageDigest), | ||||
|             new("scan.id", scanId) | ||||
|         }; | ||||
|  | ||||
|         foreach (var extra in extras) | ||||
|         { | ||||
|             tags.Add(new KeyValuePair<string, object?>(extra.Key, extra.Value)); | ||||
|         } | ||||
|  | ||||
|         return tags.ToArray(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user