SigNoz
SigNoz is an open-source observability platform that provides monitoring and troubleshooting capabilities for distributed applications. It offers traces, metrics, and logs in a single platform, similar to DataDog or New Relic.
Features
- Distributed Tracing: Track requests across microservices
- Metrics Monitoring: Collect and visualize application and infrastructure metrics
- Log Management: Centralized log aggregation and analysis
- Service Maps: Visualize service dependencies and performance
- Alerts: Configure alerts based on metrics and traces
- OpenTelemetry Native: Built on top of OpenTelemetry standards
Quick Start
-
Copy the environment file and adjust if needed:
cp .env.example .env -
Create required configuration files:
mkdir -p query-service frontend # Download or create configuration files as needed -
Start the services:
docker compose up -d -
Access SigNoz UI at
http://localhost:3301
Default Ports
| Service | Port | Description |
|---|---|---|
| Frontend UI | 3301 | SigNoz web interface |
| OTel Collector (gRPC) | 4317 | OTLP gRPC receiver |
| OTel Collector (HTTP) | 4318 | OTLP HTTP receiver |
Configuration
Environment Variables
Key environment variables (see .env.example for complete list):
SIGNOZ_PORT_OVERRIDE: Frontend UI port (default: 3301)SIGNOZ_OTEL_GRPC_PORT_OVERRIDE: OTLP gRPC receiver port (default: 4317)SIGNOZ_OTEL_HTTP_PORT_OVERRIDE: OTLP HTTP receiver port (default: 4318)SIGNOZ_CLICKHOUSE_VERSION: ClickHouse versionSIGNOZ_QUERY_SERVICE_VERSION: Query service versionSIGNOZ_FRONTEND_VERSION: Frontend version
Required Configuration Files
This setup requires several configuration files:
- clickhouse-config.xml: ClickHouse server configuration
- clickhouse-users.xml: ClickHouse user configuration
- otel-collector-config.yaml: OTel Collector pipeline configuration
- query-service/prometheus.yml: Query service Prometheus configuration
- frontend/nginx-config.conf: Nginx configuration for frontend
You can obtain these files from the official SigNoz repository.
Sending Telemetry Data
To send telemetry data to SigNoz, configure your application to use OpenTelemetry with the following endpoints:
- gRPC:
localhost:4317 - HTTP:
localhost:4318
Example for Node.js:
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc')
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node')
const exporter = new OTLPTraceExporter({
url: 'http://localhost:4317',
})
Architecture
SigNoz consists of the following components:
- ClickHouse: Time-series database for storing traces, metrics, and logs
- OTel Collector: Receives, processes, and exports telemetry data
- Query Service: Queries data from ClickHouse
- Frontend: Web UI for visualization and analysis
- Alert Manager: Manages and sends alerts
Resource Requirements
Minimum recommended resources:
- CPU: 4 cores
- Memory: 8GB RAM
- Storage: 20GB for data
Data Persistence
Data is persisted in Docker volumes:
clickhouse_data: ClickHouse database filessignoz_data: SigNoz application dataalertmanager_data: Alert manager data
Security Considerations
- Change default credentials if applicable
- Use environment variables for sensitive configuration
- Consider using secrets management for production deployments
- Restrict network access to necessary ports only
- Enable authentication for production use
Healthchecks
All services include healthchecks to ensure proper startup and dependency management:
- ClickHouse: HTTP health endpoint
- OTel Collector: HTTP health endpoint
- Query Service: HTTP health endpoint
- Frontend: HTTP health endpoint
- Alert Manager: HTTP health endpoint
Troubleshooting
- Services not starting: Check logs with
docker compose logs - No data visible: Verify OTel Collector configuration and application instrumentation
- High memory usage: Adjust ClickHouse memory limits or data retention policies
License
SigNoz is licensed under the MIT License. See the official repository for more details.