docker.recipes

SigNoz Observability Platform

intermediate

SigNoz for metrics, traces, and logs.

Overview

SigNoz is an open-source observability platform that provides Application Performance Monitoring (APM) capabilities through a unified interface for metrics, traces, and logs. Built as an alternative to proprietary solutions like DataDog and New Relic, SigNoz leverages OpenTelemetry standards for data collection and ClickHouse as its storage backend, offering both cost-effectiveness and data sovereignty for organizations requiring comprehensive application monitoring. This stack combines SigNoz's query service and frontend with ClickHouse's columnar database engine and an OpenTelemetry collector, creating a complete observability solution that can handle high-volume telemetry data with real-time query capabilities. The integration provides automatic correlation between traces, metrics, and logs, enabling developers to quickly identify performance bottlenecks and troubleshoot issues across distributed systems. Organizations seeking vendor-independent observability tooling will find this combination particularly valuable, as it eliminates per-seat licensing costs while maintaining enterprise-grade monitoring capabilities through ClickHouse's analytical processing power and SigNoz's intuitive dashboards.

Key Features

  • OpenTelemetry-native data collection supporting OTLP over gRPC (4317) and HTTP (4318) protocols
  • ClickHouse columnar storage enabling sub-second query performance on billions of telemetry data points
  • Distributed tracing with automatic service topology mapping and dependency visualization
  • Custom metrics dashboards with PromQL-compatible query language support
  • Log aggregation with structured search and correlation to traces and metrics
  • Application performance monitoring with SLA tracking and alerting capabilities
  • Service-level indicators (SLIs) and service-level objectives (SLOs) management
  • Exception tracking with stack trace analysis and error rate monitoring

Common Use Cases

  • 1Microservices monitoring for teams migrating from monolithic architectures requiring distributed tracing
  • 2Cost-conscious startups seeking DataDog or New Relic alternatives without per-seat pricing models
  • 3Enterprise environments with data residency requirements needing self-hosted observability solutions
  • 4DevOps teams implementing OpenTelemetry instrumentation across polyglot application stacks
  • 5SRE organizations establishing observability practices with custom SLI/SLO definitions
  • 6Development teams requiring correlation between application logs, metrics, and traces in a single interface
  • 7Organizations with high-volume telemetry data needing sub-second query performance on historical data

Prerequisites

  • Minimum 8GB RAM allocation with 16GB+ recommended for production ClickHouse workloads
  • Available ports 3301 (SigNoz UI), 4317 (OTLP gRPC), and 4318 (OTLP HTTP) on the host system
  • Understanding of OpenTelemetry instrumentation libraries for your application programming languages
  • Basic knowledge of PromQL query syntax for creating custom metrics dashboards
  • Familiarity with distributed tracing concepts including spans, traces, and sampling strategies
  • Docker host with sufficient disk space for time-series data retention based on ingestion volume

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 clickhouse:
3 image: clickhouse/clickhouse-server:latest
4 container_name: signoz-clickhouse
5 restart: unless-stopped
6 volumes:
7 - clickhouse_data:/var/lib/clickhouse
8 ulimits:
9 nofile:
10 soft: 262144
11 hard: 262144
12
13 query-service:
14 image: signoz/query-service:latest
15 container_name: signoz-query
16 restart: unless-stopped
17 environment:
18 - ClickHouseUrl=tcp://clickhouse:9000
19 depends_on:
20 - clickhouse
21
22 frontend:
23 image: signoz/frontend:latest
24 container_name: signoz-frontend
25 restart: unless-stopped
26 ports:
27 - "${SIGNOZ_PORT:-3301}:3301"
28 depends_on:
29 - query-service
30
31 otel-collector:
32 image: signoz/signoz-otel-collector:latest
33 container_name: signoz-otel
34 restart: unless-stopped
35 ports:
36 - "${OTLP_GRPC:-4317}:4317"
37 - "${OTLP_HTTP:-4318}:4318"
38 depends_on:
39 - clickhouse
40
41volumes:
42 clickhouse_data:

.env Template

.env
1# SigNoz
2SIGNOZ_PORT=3301
3OTLP_GRPC=4317
4OTLP_HTTP=4318

Usage Notes

  1. 1SigNoz UI at http://localhost:3301
  2. 2Send traces to port 4317/4318
  3. 3Configure OpenTelemetry SDKs
  4. 4ClickHouse for fast queries

Individual Services(4 services)

Copy individual services to mix and match with your existing compose files.

clickhouse
clickhouse:
  image: clickhouse/clickhouse-server:latest
  container_name: signoz-clickhouse
  restart: unless-stopped
  volumes:
    - clickhouse_data:/var/lib/clickhouse
  ulimits:
    nofile:
      soft: 262144
      hard: 262144
query-service
query-service:
  image: signoz/query-service:latest
  container_name: signoz-query
  restart: unless-stopped
  environment:
    - ClickHouseUrl=tcp://clickhouse:9000
  depends_on:
    - clickhouse
frontend
frontend:
  image: signoz/frontend:latest
  container_name: signoz-frontend
  restart: unless-stopped
  ports:
    - ${SIGNOZ_PORT:-3301}:3301
  depends_on:
    - query-service
otel-collector
otel-collector:
  image: signoz/signoz-otel-collector:latest
  container_name: signoz-otel
  restart: unless-stopped
  ports:
    - ${OTLP_GRPC:-4317}:4317
    - ${OTLP_HTTP:-4318}:4318
  depends_on:
    - clickhouse

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 clickhouse:
5 image: clickhouse/clickhouse-server:latest
6 container_name: signoz-clickhouse
7 restart: unless-stopped
8 volumes:
9 - clickhouse_data:/var/lib/clickhouse
10 ulimits:
11 nofile:
12 soft: 262144
13 hard: 262144
14
15 query-service:
16 image: signoz/query-service:latest
17 container_name: signoz-query
18 restart: unless-stopped
19 environment:
20 - ClickHouseUrl=tcp://clickhouse:9000
21 depends_on:
22 - clickhouse
23
24 frontend:
25 image: signoz/frontend:latest
26 container_name: signoz-frontend
27 restart: unless-stopped
28 ports:
29 - "${SIGNOZ_PORT:-3301}:3301"
30 depends_on:
31 - query-service
32
33 otel-collector:
34 image: signoz/signoz-otel-collector:latest
35 container_name: signoz-otel
36 restart: unless-stopped
37 ports:
38 - "${OTLP_GRPC:-4317}:4317"
39 - "${OTLP_HTTP:-4318}:4318"
40 depends_on:
41 - clickhouse
42
43volumes:
44 clickhouse_data:
45EOF
46
47# 2. Create the .env file
48cat > .env << 'EOF'
49# SigNoz
50SIGNOZ_PORT=3301
51OTLP_GRPC=4317
52OTLP_HTTP=4318
53EOF
54
55# 3. Start the services
56docker compose up -d
57
58# 4. View logs
59docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/signoz-observability/run | bash

Troubleshooting

  • ClickHouse 'Memory limit exceeded' errors: Increase Docker memory allocation or configure ClickHouse max_memory_usage settings
  • OpenTelemetry collector connection refused on 4317/4318: Verify OTLP_GRPC and OTLP_HTTP environment variables match application endpoint configuration
  • SigNoz frontend shows 'Query service unavailable': Check ClickHouseUrl environment variable and ensure ClickHouse container is healthy on port 9000
  • Missing traces in SigNoz UI: Verify OpenTelemetry SDK initialization includes proper OTLP exporter endpoint configuration
  • High ClickHouse disk usage: Configure data retention policies through SigNoz settings or implement ClickHouse TTL on telemetry tables
  • Slow query performance in dashboards: Optimize ClickHouse table partitioning by timestamp and consider increasing clickhouse_data volume IOPS

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space