3.5 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			3.5 KiB
		
	
	
	
	
	
	
	
KISA Connector Observability & Localisation
The KISA/KNVD connector now ships with structured telemetry, richer logging, and a localisation brief so Docs/QA can extend operator material without reverse-engineering the source.
Telemetry counters
All metrics are emitted from KisaDiagnostics (Meter name StellaOps.Concelier.Connector.Kisa).
| Metric | Description | Tags | 
|---|---|---|
| kisa.feed.attempts | RSS fetch attempts per scheduled job. | — | 
| kisa.feed.success | Successful RSS fetches (increments even when no new items). | — | 
| kisa.feed.failures | RSS fetch failures. | reason(exception type) | 
| kisa.feed.items | Number of items returned by the RSS window. | — | 
| kisa.detail.attempts | Advisory detail fetch attempts. | category(Hangul category from RSS) | 
| kisa.detail.success | Detail payloads fetched and persisted. | category | 
| kisa.detail.unchanged | HTTP 304 responses reused from cache. | category | 
| kisa.detail.failures | Detail fetch failures or empty payloads. | category,reason | 
| kisa.parse.attempts | Documents pulled from Mongo for parsing. | category | 
| kisa.parse.success | Documents parsed into DTOs. | category | 
| kisa.parse.failures | Download or JSON parse failures. | category,reason | 
| kisa.map.success | Canonical advisories persisted. | severity(e.g.High,unknown) | 
| kisa.map.failures | Mapping or DTO hydration failures. | severity,reason | 
| kisa.cursor.updates | Published cursor advanced after ingest. | — | 
categorytags surface the original Hangul labels (for example취약점정보), normalised to NFC. Downstream dashboards should render them as-is; do not transliterate or trim.
Logging patterns
- Informationlevel summary when the RSS feed completes (- ItemCount), on each persisted detail document (IDX, category, documentId), and when a canonical advisory is written (IDX/severity).
- Debuglevel logs capture cache hits (304) and cursor movements (- Publishedtimestamp).
- Warninglevel emits when a document or DTO is missing so operators can correlate with parse/map counters.
- Errorlevel retains exception context for feed/detail/parse/map failures; state repository backoffs are still applied.
The messages use structured properties (Idx, Category, DocumentId, Severity) so Grafana/Loki dashboards can filter without regex.
Localisation notes for Docs & QA
- Hangul fields (title,summary,category,reference.label, product vendor/name) are normalised to NFC before storage. Sample category취약점정보roughly translates to “vulnerability information”.
- Advisory HTML is sanitised via HtmlContentSanitizer, stripping script/style while preserving inline anchors for translation pipelines.
- Metrics carry Hangul categorytags and logging keeps Hangul strings intact; this ensures air-gapped operators can validate native-language content without relying on MT.
- Fixtures live under src/StellaOps.Concelier.Connector.Kisa.Tests/Fixtures/. Regenerate withUPDATE_KISA_FIXTURES=1 dotnet test src/StellaOps.Concelier.Connector.Kisa.Tests/StellaOps.Concelier.Connector.Kisa.Tests.csproj.
- The regression suite asserts canonical mapping, state cleanup, and telemetry counters (KisaConnectorTests.Telemetry_RecordsMetrics) so QA can track instrumentation drift.
For operator docs, link to this brief when documenting Hangul handling or counter dashboards so localisation reviewers have a single reference point.