Pourquoi remplacer Datadog ou New Relic par SigNoz ?
Les outils SaaS d'observabilité ont un modèle tarifaire redoutable : gratuit jusqu'à une poignée d'hôtes, puis la facture s'envole avec chaque service ajouté. Pour une agence web qui gère dix projets clients ou un développeur indépendant qui scale son SaaS, la note mensuelle dépasse rapidement 200 à 500 € sans que la valeur ajoutée soit proportionnelle.
SigNoz change la donne. C'est une plateforme d'observabilité open source (licence Apache 2.0) qui repose sur ClickHouse pour le stockage haute performance des traces et des métriques, et sur le protocole OpenTelemetry pour l'instrumentation. Vous gardez vos données chez vous, vous contrôlez la rétention, et vous ne payez que le VPS qui fait tourner la stack.
Ce que SigNoz vous apporte
- Traces distribuées : visualisez le chemin complet d'une requête HTTP à travers vos microservices, avec les spans, durées et erreurs à chaque étape.
- Métriques compatibles Prometheus : importez vos dashboards existants ou créez-en de nouveaux depuis l'interface SigNoz.
- Logs centralisés : collectez et corréllez les logs structurés de toutes vos applications dans une interface unifiée.
- Alertes configurables : définissez des seuils sur n'importe quelle métrique et recevez des notifications Slack, PagerDuty ou webhook.
- Dashboards personnalisables : créez des vues métier ou techniques en quelques clics, sans LoQL ni PromQL obligatoire.
- Interface moderne : UI React responsive accessible sur le port 8080 de votre VPS, sans agent propriétaire côté client.
Prérequis avant de commencer
SigNoz s'appuie sur ClickHouse, un moteur de base de données colonnaire très gourmand en mémoire. Le minimum absolu recommandé est 4 Go de RAM — en dessous, ClickHouse se fait tuer par l'OOM killer du kernel avant même que l'UI se charge. Pour un usage production avec plusieurs applications instrumentées, visez 8 Go.
Voici la liste complète des prérequis :
- Un VPS sous Ubuntu 22.04 ou Debian 12.
- Docker Engine ≥ 24 et Docker Compose V2 installés.
- Le port 8080 ouvert dans votre pare-feu (UI SigNoz).
- Les ports 4317 (OTLP/gRPC) et 4318 (OTLP/HTTP) ouverts pour recevoir les traces.
- Un accès root ou sudo sur le VPS.
- Au moins 20 Go d'espace disque libre pour ClickHouse et ses fichiers de données.
Installation de SigNoz via Foundry CLI
Étape 1 — Installer Docker sur votre VPS
Si Docker n'est pas encore présent, installez-le avec le script officiel :
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker --versionVérifiez que la commande docker compose (V2, sans tiret) fonctionne :
docker compose versionÉtape 2 — Installer Foundry CLI (foundryctl)
Depuis la version v0.112.0, SigNoz adopte le Foundry CLI comme méthode de déploiement officielle. Le vieux install.sh basé sur docker-compose est déprécié.
curl -L https://get.foundry.so/foundryctl/latest | bash
export PATH="$HOME/.foundry/bin:$PATH"
foundryctl --versionAjoutez l'export PATH dans votre ~/.bashrc ou ~/.profile pour le rendre permanent.
Étape 3 — Créer le fichier casting.yaml
Foundry CLI utilise un fichier déclaratif casting.yaml pour définir la stack SigNoz :
mkdir -p /opt/signoz && cd /opt/signoz
cat > casting.yaml << 'EOF'
apiVersion: foundry.so/v1
kind: Casting
metadata:
name: signoz
spec:
release: stable
components:
- name: signoz
enabled: true
- name: clickhouse
enabled: true
EOFÉtape 4 — Lancer le déploiement
Une seule commande suffit pour démarrer l'ensemble de la stack :
foundryctl cast -f casting.yamlFoundry CLI télécharge les images Docker, configure les volumes persistants et démarre les conteneurs dans le bon ordre. Le démarrage complet prend environ 2 à 3 minutes. Suivez les logs en temps réel :
docker compose -f /opt/signoz/docker-compose.yaml logs -fÉtape 5 — Vérifier que SigNoz est opérationnel
Attendez que tous les conteneurs soient en état healthy :
docker compose -f /opt/signoz/docker-compose.yaml psOuvrez ensuite votre navigateur sur http://<IP_VPS>:8080. Créez votre compte administrateur lors de la première connexion. Note : l'ancien port 3301 mentionné dans des tutoriels communautaires est obsolète — le port actuel est bien le 8080.
Étape 6 — Sécuriser l'accès avec un reverse proxy
Ne laissez pas le port 8080 exposé directement en production. Placez Nginx en reverse proxy avec un certificat TLS :
apt install -y nginx certbot python3-certbot-nginx
cat > /etc/nginx/sites-available/signoz << 'EOF'
server {
server_name signoz.votredomaine.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
EOF
ln -s /etc/nginx/sites-available/signoz /etc/nginx/sites-enabled/
certbot --nginx -d signoz.votredomaine.com
nginx -t && systemctl reload nginxFermez ensuite le port 8080 dans votre pare-feu.
Instrumenter votre application avec OpenTelemetry SDK
SigNoz reçoit les traces via le protocole OTLP. Voici comment brancher une application Node.js et une application Python.
Node.js (Express) :
npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-nodeCréez un fichier tracing.js au démarrage de votre app :
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');
const sdk = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()] });
sdk.start();Lancez votre app avec la variable d'environnement pointant vers votre VPS :
OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP_VPS>:4318" \
OTEL_SERVICE_NAME="mon-api" \
node -r ./tracing.js app.jsPython (FastAPI/Flask) :
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP_VPS>:4318" \
OTEL_SERVICE_NAME="mon-service-python" \
opentelemetry-instrument uvicorn main:appDans les deux cas, les traces apparaissent dans l'interface SigNoz sous Services dans les secondes qui suivent le premier appel HTTP.
Créer des dashboards et des alertes
Une fois vos applications instrumentées, SigNoz peuple automatiquement la vue Services avec la latence P50/P99, le taux d'erreur et le débit de chaque service.
Créer un dashboard personnalisé :
1. Allez dans Dashboards → New Dashboard.
2. Ajoutez un panel de type Time Series et sélectionnez une métrique Prometheus.
3. Appliquez des filtres par service, environnement ou endpoint.
Configurer une alerte sur la latence P99 :
1. Allez dans Alerts → New Alert Rule.
2. Choisissez le type Metric Based Alert.
3. Saisissez la condition : p99(signoz_latency_bucket{service_name="mon-api"}) > 500 (alerte si P99 > 500 ms).
4. Configurez le canal de notification : Slack, email ou webhook.
Attention aux OOM kills de ClickHouse
ClickHouse est le composant le plus gourmand de la stack SigNoz. Sur un VPS avec moins de 4 Go de RAM disponible, le kernel Linux peut tuer le processus ClickHouse avec un signal exit code 137 (SIGKILL envoyé par l'OOM killer).
Symptôme : l'interface SigNoz se charge mais n'affiche plus de données, ou le conteneur clickhouse redémarre en boucle. Les logs applicatifs ne mentionnent rien — l'erreur est au niveau kernel.
Diagnostic :
dmesg | grep -i oomVous verrez une ligne du type Out of memory: Killed process XXXX (clickhouse-serv).
Remèdes : ajoutez de la RAM à votre VPS (recommandé), ou limitez la mémoire ClickHouse en ajoutant max_memory_usage=2000000000 (2 Go) dans /etc/clickhouse-server/users.xml.
SigNoz vs Datadog vs Grafana Cloud
| Critère | SigNoz (self-hosted) | Datadog | Grafana Cloud |
|---|---|---|---|
| Coût mensuel (5 services) | Coût VPS uniquement (~10-20 €) | ~75-150 $ + métriques custom | Gratuit jusqu'à 10k séries, puis ~8 $/1k |
| Traces distribuées | Oui (OpenTelemetry natif) | Oui (agent propriétaire) | Oui (Tempo, via OTLP) |
| Métriques | Oui (Prometheus-compatible) | Oui (propriétaire + Prometheus) | Oui (Mimir, Prometheus-compatible) |
| Logs | Oui (intégré) | Oui (coût additionnel) | Oui (Loki, coût additionnel) |
| Souveraineté des données | Totale — données sur votre VPS | Données chez Datadog (US/EU) | Données chez Grafana Labs |
| Complexité opérationnelle | Moyenne (Docker, 1 VPS) | Nulle (SaaS) | Faible (SaaS) |
| Mise à jour | Manuelle (foundryctl) | Automatique | Automatique |
| Support | Communauté + plan payant | Payant (inclus) | Communauté + plan payant |
Résoudre les problèmes courants
L'UI ne se charge pas sur le port 8080
Vérifiez que le conteneur signoz-frontend est en état running et que votre pare-feu autorise le port :
docker compose ps | grep frontend
ufw status | grep 8080Les traces n'apparaissent pas dans l'interface
Vérifiez que le port 4318 (OTLP/HTTP) est accessible depuis votre application :
curl -v http://<IP_VPS>:4318Une réponse 405 Method Not Allowed confirme que le collector écoute bien.
Le conteneur ClickHouse redémarre en boucle
C'est très probablement un OOM kill. Consultez dmesg | grep -i oom pour confirmer.
Erreur connection refused depuis l'app vers le VPS
Assurez-vous que les ports 4317 ou 4318 sont ouverts dans le firewall du VPS SigNoz, et que l'URL dans OTEL_EXPORTER_OTLP_ENDPOINT pointe bien vers l'IP publique du VPS, pas vers localhost.
Conseil : planifiez la rétention des données ClickHouse
Par défaut, SigNoz conserve les traces 3 jours et les métriques 30 jours. Sur un VPS de 20 Go, un volume de traces modéré peut remplir le disque en quelques semaines.
Ajustez la rétention dans l'interface SigNoz sous Settings → Retention Period. Pour une agence gérant plusieurs projets clients, 7 jours de traces et 90 jours de métriques offrent un bon équilibre entre visibilité et consommation disque.