# Configuration de l'observabilité externe ## Section `Observability:External` (§74) ```json { "Observability": { "External": { "Enabled": false, "OtlpEndpoint": "", "ExportTimeoutSeconds": 3, "MaxQueueSize": 2048, "MaxExportBatchSize": 512, "ScheduledDelayMilliseconds": 2000, "CircuitFailureThreshold": 5, "CircuitCooldownSeconds": 30, "IncludeP4": false } } } ``` | Clé | Défaut | Rôle | |---|---|---| | `Enabled` | `false` | **Kill switch**. `false` = aucun export, aucun réseau, aucun thread externe. | | `OtlpEndpoint` | `""` | Endpoint OTLP HTTP/protobuf du Collector (ex. `http://10.0.0.10:4318`). | | `ExportTimeoutSeconds` | `3` | Timeout réseau court d'un export OTLP (2–5 s max, §13). | | `MaxQueueSize` | `2048` | File SDK OTel bornée (§14). | | `MaxExportBatchSize` | `512` | Taille max d'un lot OTel. | | `ScheduledDelayMilliseconds` | `2000` | Délai de regroupement du batch. | | `CircuitFailureThreshold` | `5` | Échecs consécutifs avant ouverture du circuit. | | `CircuitCooldownSeconds` | `30` | Durée d'ouverture du circuit avant sonde. | | `IncludeP4` | `false` | Exporter les événements P4 (analytics). Non exportés par défaut (§44). | Autres clés (forwarder) : `ForwarderBatchSize` (100), `ForwarderIntervalSeconds` (15), `CheckpointFileName` (`forwarder-checkpoint.json`). ## Default safe (§18) **`Enabled=false` par défaut.** Activation explicite après installation et validation du Collector (test §88). Ne jamais activer en production sans avoir validé la chaîne. ## Kill switch (§17) Mettre `Enabled=false` désactive **entièrement** : - `OpenTelemetryExporterAdapter` (aucun provider, aucun réseau, aucun thread) ; - `RemoteDiagnosticForwarder` externe (la boucle reste au ralenti). Sans désactiver (inchangé) : - `LocalFileTelemetryExporter` (JSONL local) ; - `DiagnosticOutbox` (`omika-diagnostics.db`) ; - `POST /api/diagnostics` ; - `RemoteDiagnosticIngestionStore` (JSONL serveur). ## Configuration invalide (§75) `Enabled=true` + `OtlpEndpoint=""` (ou URL non http/https, ou bornes invalides) : - l'adaptateur externe est **désactivé** (NoOp) ; - un warning `EmergencyLogger` est écrit ; - **Omika démarre et fonctionne normalement** (jamais de crash au démarrage). ## Environnements (§73) | Environnement | `Enabled` | Endpoint | |---|---|---| | Development | `false` (ou `true` + endpoint local) | `http://localhost:4318` | | Production | explicite | `http://:4318` | Les endpoints ne sont **jamais codés en dur** dans le code : ils viennent de la configuration (appsettings / variables d'environnement / secrets). ## Secrets (§30) Aucun secret dans un fichier versionné. Les credentials éventuels (ClickHouse) sont fournis via `.env` (non versionné) / variables d'environnement. **Ne jamais réutiliser** un mot de passe utilisateur, un token mobile, une clé licence ou un secret SMTP pour l'observabilité.