Premiere commit - Omika

This commit is contained in:
2026-10-23 18:46:50 +02:00
commit 8ea76c1b24
2155 changed files with 984301 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
# 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://<ip-vm-observability>: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é.