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
+20
View File
@@ -0,0 +1,20 @@
# =============================================================================
# Omika — Observabilité externe : variables d'environnement (exemple)
# =============================================================================
# Copier vers `.env` et adapter. NE JAMAIS versionner `.env` ni les secrets réels.
# Aucun secret Omika (mot de passe utilisateur, token mobile, clé licence, secret
# SMTP) ne doit être réutilisé ici (§30).
# --- Réseau / endpoints OTLP ---
# Endpoint OTLP du Collector Omika, vu depuis l'API/Worker Omika.
# (ex. http://<ip-vm-observability>:4318)
OTLP_ENDPOINT=
# Endpoint du Collector SigNoz (interne à la pile, jamais exposé au mobile).
SIGNOZ_OTLP_ENDPOINT=signoz-otel-collector:4317
# --- Identifiants ClickHouse (générés, spécifiques à la pile d'observabilité) ---
CLICKHOUSE_PASSWORD=change-me
# --- Rétention (configurée côté SigNoz/ClickHouse, voir docs) ---
# Logs / traces / métriques : fenêtres proposées par défaut (voir docs/observability).
+145
View File
@@ -0,0 +1,145 @@
# =============================================================================
# Omika — Pile d'observabilité externe (Phase 5)
# =============================================================================
# Topologie cible (VM Ubuntu dédiée via Hyper-V, §21) :
#
# API/Worker Omika ──OTLP HTTP/protobuf──▶ omika-otel-collector ──▶ SigNoz
# │
# ClickHouse
#
# Ce fichier est une référence MINIMALE et commentée. Les images SigNoz doivent
# être épinglées aux versions stables officielles au moment de l'installation
# (l'installateur officiel SigNoz reste la référence exacte) :
# curl -sL https://github.com/SigNoz/signoz/raw/main/scripts/install.sh | bash
#
# RÈGLE ABSOLUE : rien ici n'est requis pour qu'Omika fonctionne. Arrêter toute
# cette pile ne casse jamais le métier (fail-open, §2/§97).
# =============================================================================
services:
# ---------------------------------------------------------------------------
# 1. Notre Collector Omika (le SEUL point d'entrée OTLP d'Omika).
# Reçoit OTLP des composants autorisés, limite la mémoire, batche, exporte
# vers SigNoz. Ports 4317/4318 = réseau privé uniquement, jamais publics.
# ---------------------------------------------------------------------------
omika-otel-collector:
image: otel/opentelemetry-collector:0.128.0
container_name: omika-otel-collector
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro
environment:
SIGNOZ_OTLP_ENDPOINT: "signoz-otel-collector:4317"
ports:
# Exposer uniquement sur le réseau privé de la VM (bind 127.0.0.1 ou VPN).
# JAMAIS "0.0.0.0" sur un réseau public.
- "127.0.0.1:4318:4318" # HTTP/protobuf (utilisé par Omika)
- "127.0.0.1:4317:4317" # gRPC (non utilisé par Omika, désactivable)
deploy:
resources:
limits:
cpus: "1.0"
memory: 768M # cohérent avec memory_limiter (512 MiB + marge)
reservations:
memory: 256M
networks: [observability]
restart: unless-stopped
# ---------------------------------------------------------------------------
# 2. ClickHouse (stockage des signaux — infrastructure externe, jamais embarqué
# dans Omika, §22). Réseau restreint au réseau interne de la pile.
# ---------------------------------------------------------------------------
clickhouse:
image: clickhouse/clickhouse-server:24.8
container_name: signoz-clickhouse
ports:
- "127.0.0.1:8123:8123"
- "127.0.0.1:9000:9000"
volumes:
- clickhouse-data:/var/lib/clickhouse
environment:
CLICKHOUSE_DB: signoz_metrics
CLICKHOUSE_USER: signoz
CLICKHOUSE_PASSWORD: "${CLICKHOUSE_PASSWORD:-change-me}"
deploy:
resources:
limits:
cpus: "2.0"
memory: 4G
reservations:
memory: 1G
networks: [observability]
restart: unless-stopped
# ---------------------------------------------------------------------------
# 3. Collector SigNoz : reçoit l'OTLP de notre collector et écrit dans
# ClickHouse. Jamais exposé au mobile ni au public (§5/§28).
# ---------------------------------------------------------------------------
signoz-otel-collector:
image: signoz/otel-collector:0.128.1
container_name: signoz-otel-collector
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ./signoz/otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro
ports:
- "127.0.0.1:4319:4317" # entrée OTLP SigNoz (interne à la pile)
environment:
CLICKHOUSE_HOST: clickhouse
CLICKHOUSE_USER: signoz
CLICKHOUSE_PASSWORD: "${CLICKHOUSE_PASSWORD:-change-me}"
deploy:
resources:
limits:
cpus: "1.0"
memory: 768M
reservations:
memory: 256M
depends_on: [clickhouse]
networks: [observability]
restart: unless-stopped
# ---------------------------------------------------------------------------
# 4. Query service SigNoz (backend API) + 5. Frontend (UI support/dev).
# Réservés à l'équipe support autorisée, jamais aux utilisateurs Omika (§27).
# ---------------------------------------------------------------------------
signoz-query-service:
image: signoz/query-service:0.72.0
container_name: signoz-query-service
ports:
- "127.0.0.1:8085:8085"
environment:
ClickHouseUrl: "tcp://signoz:@clickhouse:9000"
STORAGE: clickhouse
SIGNOZ_LOCAL_DB_PATH: /var/lib/signoz
volumes:
- signoz-query-data:/var/lib/signoz
deploy:
resources:
limits:
cpus: "1.0"
memory: 1G
depends_on: [clickhouse]
networks: [observability]
restart: unless-stopped
signoz-frontend:
image: signoz/frontend:0.72.0
container_name: signoz-frontend
ports:
- "127.0.0.1:3301:3301"
depends_on: [signoz-query-service]
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
networks: [observability]
restart: unless-stopped
volumes:
clickhouse-data:
signoz-query-data:
networks:
observability:
driver: bridge
@@ -0,0 +1,70 @@
# =============================================================================
# Omika — OpenTelemetry Collector (Phase 5)
# =============================================================================
# Collector MINIMAL et compréhensible : reçoit l'OTLP des composants Omika
# autorisés (API/Worker), limite strictement la mémoire, batche, puis exporte
# vers SigNoz (qui écrit dans ClickHouse).
#
# Réseau : le port OTLP (4317 gRPC / 4318 HTTP) NE DOIT JAMAIS être exposé
# publiquement. Il reste sur le réseau privé de la VM d'observabilité, ouvert
# uniquement aux composants Omika autorisés (firewall).
#
# Omika n'utilise QUE le protocole OTLP HTTP/protobuf (port 4318) — voir
# docs/observability/README.md pour le choix gRPC vs HTTP/protobuf.
# =============================================================================
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
# Limites mémoire STRICTES : le Collector ne peut jamais consommer toute la
# RAM du serveur/VM (§20). memory_limiter doit rester le PREMIER processor.
memory_limiter:
check_interval: 5s
limit_mib: 512 # plafond mémoire global du Collector
spike_limit_mib: 128 # marge de pointe autorisée au-dessus du plafond
# Regroupement en lots (bornes explicites, §14).
batch:
send_batch_size: 512
send_batch_max_size: 1024
timeout: 2s
exporters:
# Export vers le Collector SigNoz (qui écrit dans ClickHouse). Endpoint privé,
# injecté via variable d'environnement (jamais codé en dur en production).
otlp/signoz:
endpoint: "${SIGNOZ_OTLP_ENDPOINT:-signoz-otel-collector:4317}"
tls:
# Segment privé (VM) : TLS désactivé par défaut. Pour un segment non privé,
# retirer `insecure: true` et configurer les certificats correctement.
# JAMAIS DangerousAcceptAnyServerCertificateValidator (§29).
insecure: true
# Exporteur de debug pour la validation d'installation UNIQUEMENT.
# À retirer (ou laisser au niveau basic) une fois la chaîne validée (§88).
debug:
verbosity: basic
service:
telemetry:
logs:
level: "warn"
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/signoz, debug]
metrics:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/signoz, debug]
logs:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/signoz, debug]