Skip to content

SigNoz — Operations

Deployment, configuration, scaling, and day-2 operations for SigNoz.

Deployment

Kubernetes (Helm) — Production

# Add Helm repo
helm repo add signoz https://charts.signoz.io
helm repo update

# Install
kubectl create namespace signoz
helm install signoz signoz/signoz --namespace signoz -f values.yaml

Prerequisites: Kubernetes >= 1.22, Helm >= 3.8

Minimum resources: 8 GB RAM, 4 vCPU, 30 GB storage
Recommended: 16 GB RAM, 8 vCPU, 80 GB storage

Docker Compose — Development

git clone https://github.com/SigNoz/signoz.git
cd signoz/deploy/docker/clickhouse-setup
docker compose up -d
# UI: http://localhost:3301

Configuration

Retention Policies

Configure via SigNoz UI (Settings > General) or ClickHouse TTL:

Signal Default (Self-Hosted) Cloud Default
Traces 7 days 15 days
Logs 7 days 15 days
Metrics 30 days 30 days

ClickHouse Tuning

<!-- clickhouse-config.xml -->
<max_server_memory_usage_to_ram_ratio>0.7</max_server_memory_usage_to_ram_ratio>
<max_concurrent_queries>100</max_concurrent_queries>
<max_threads>16</max_threads>

Collector Scaling

For high-volume environments, use a gateway pattern:

# Load-balanced OTel Collector fleet
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318
processors:
  batch:
    send_batch_size: 10000
    timeout: 5s
  memory_limiter:
    limit_mib: 4096
    spike_limit_mib: 512
exporters:
  clickhousetraces:
    datasource: tcp://clickhouse:9000

Scaling

Component Scaling Guide

Component Scale Strategy
OTel Collectors Horizontal — add replicas behind load balancer
Query Service Horizontal — add replicas
ClickHouse Shard for write throughput, replicate for reads
Frontend Horizontal — stateless

ClickHouse Cluster Sizing

Daily Ingestion Shards Replicas Memory per Node
< 50 GB/day 1 2 16 GB
50–200 GB/day 2 2 32 GB
200+ GB/day 4+ 2 64 GB

Monitoring

Health Checks

# Kubernetes pod status
kubectl get pods -n signoz

# Query service health
curl http://localhost:8080/api/v1/health

# ClickHouse health
kubectl exec -n signoz $(kubectl get pod -n signoz -l app=clickhouse -o name | head -1) -- \
  clickhouse-client --query "SELECT 1"

Upgrades

helm repo update signoz
helm upgrade signoz signoz/signoz -n signoz -f values.yaml

# Verify
kubectl get pods -n signoz

Post-Upgrade Cleanup

# Delete old PVCs if needed
kubectl -n signoz delete pvc --selector app.kubernetes.io/instance=signoz

Sources