diff --git a/architecture.yml b/architecture.yml index fa73e93..3871501 100644 --- a/architecture.yml +++ b/architecture.yml @@ -356,6 +356,8 @@ outputs: batch asynchrones, drop en cas de saturation. Le service insère uniquement dans une table RAW (raw_json String, ingest_time DateTime DEFAULT now()). La table parsée et la vue matérialisée sont gérées en externe (DDL séparés). + Toutes les erreurs de connexion, de flush et de retry sont loggées : + INFO à la connexion, ERROR sur échec de flush, WARN sur drop/retry, DEBUG sur envoi réussi. dsn: clickhouse://user:pass@host:9000/db table: correlated_logs_http_network batch_size: 500 @@ -366,12 +368,12 @@ outputs: timeout_ms: 1000 stdout: enabled: false - level: INFO # DEBUG: tous les logs (y compris orphelins), INFO: seulement corrélés, WARN: corrélés seulement, ERROR: aucun description: > - Sink optionnel pour les tests/développement. - Le niveau de log filtre la sortie : DEBUG émet tout (y compris orphelins), - INFO émet uniquement les logs corrélés, WARN émet les logs corrélés seulement, - ERROR n'émet rien. + Sink no-op pour les données. Aucune donnée corrélée ou orpheline n'est + jamais écrite sur stdout. Ce sink existe uniquement pour satisfaire + l'interface CorrelatedLogSink. Les logs opérationnels du service + (démarrage, erreurs, métriques de débogage) sont toujours sur stderr + via observability.Logger, indépendamment de ce sink. correlation: description: > @@ -736,11 +738,15 @@ architecture: - Gestion du drop_on_overflow. - Retry avec backoff exponentiel (MaxRetries=3). - API native clickhouse-go/v2 (PrepareBatch + Append + Send). + - Logging complet via observability.Logger (SetLogger) : INFO à la connexion, + DEBUG sur envoi réussi (rows/table), WARN sur drop buffer et retries, + ERROR sur échec de flush (périodique, batch, fermeture). - name: internal/adapters/outbound/stdout type: adapter_outbound responsibilities: - - Écriture des logs vers stdout pour débogage. - - Filtrage par niveau (DEBUG, INFO, WARN, ERROR). + - Sink no-op pour les données corrélées. + - Write/Flush/Close ne font rien : les données ne passent jamais par stdout. + - Les logs opérationnels sont sur stderr via observability.Logger (indépendant de ce sink). - name: internal/adapters/outbound/multi type: adapter_outbound responsibilities: @@ -771,9 +777,10 @@ testing: focus: - CorrelationService (fenêtre, TTL, évictions, one-to-many/Keep-Alive) - Parsing A/B → NormalizedEvent (datagrammes JSON) - - ClickHouseSink (batching, retry, overflow) + - ClickHouseSink (batching, retry, overflow, logging erreurs/succès) - FileSink (réouverture sur SIGHUP) - MultiSink (fan-out) + - StdoutSink (no-op data, test stdout reste vide) - Config (validation, valeurs par défaut, exclude_source_ips) - UnixSocketSource (lecture, permissions, cleanup) - CorrelationMetrics (suivi des statistiques) @@ -843,6 +850,16 @@ observability: - "A event has same key as B but outside time window: key=... time_diff=5s window=10s" - "event excluded by IP filter: source=A src_ip=10.0.0.1 src_port=8080" - "TTL reset for B event (Keep-Alive): key=... new_ttl=120s" + - "[clickhouse] DEBUG batch sent: rows=42 table=correlated_logs_http_network" + info_logs: + - "[clickhouse] INFO connected to ClickHouse: table=... batch_size=500 flush_interval_ms=200" + warn_logs: + - "[clickhouse] WARN buffer full, dropping log: table=... buffer_size=5000" + - "[clickhouse] WARN retrying batch insert: attempt=2/3 delay=100ms rows=42 err=connection refused" + error_logs: + - "[clickhouse] ERROR periodic flush failed: ..." + - "[clickhouse] ERROR batch flush failed: ..." + - "[clickhouse] ERROR final flush on close failed: ..." metrics_server: enabled: true endpoints: