Self-host SigNoz
Observabilitydeployed & timed by usprices checked · Jul 2026
OpenTelemetry-native APM, logs, metrics, and traces in a single application, backed by ClickHouse for unified storage and querying.
Splunk / yr$1,800
Self-hosted / yr~$55
You keep$1,745/yr
Key facts
CategoryObservability
LicenseMIT
StackGo, TypeScript, ClickHouse
Min RAM4096 MB
Dockeryes
Difficulty
Our recommendation
Pick SigNoz when you want one OpenTelemetry-native app for metrics, logs, and traces instead of stitching together separate tools — it's the closest thing here to a self-hosted Datadog. Budget a real box: ClickHouse wants 4 GB of RAM before it's comfortable. If you only need metrics dashboards, Grafana plus Prometheus is far less to run.
What you need
- Any VPS with at least 4096 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- About the better part of a day
Install with Docker Compose
Save this as compose.yml and run docker compose up -d:
# SigNoz — install via Foundry, the official installer/CLI
curl -fsSL https://signoz.io/foundry.sh | bash
# create casting.yaml with deployment.mode: docker, flavor: compose
foundryctl cast -f casting.yaml # → http://SERVER_IP:8080What you take on
SigNoz asks for a genuine server and gives you an open-core product in return, so weigh both before committing:
non-negotiableIt's open-core, not fully open. The core is MIT, but some enterprise features (SSO, advanced RBAC) sit behind a paid tier — check the split matches what you need.
non-negotiableClickHouse is the real dependency. It's a columnar database, not a toy — plan for its own disk, memory, and backup story, not just the SigNoz container.
non-negotiableIt's the heaviest APM option here. 4 GB minimum in practice means closer to 8 GB for comfortable retention — this is not a $5 VPS workload.
An alternative to
Head-to-head
More in Observability
ObservabilityGrafana
GoTypeScript
easyRead guide →
ObservabilityGraylog
JavaMongoDBOpenSearch
hardRead guide →
ObservabilityNetdata
C
easyRead guide →
ObservabilityOpenObserve
Rust
easyRead guide →