What SigNoz Does
- Distributed Tracing: End-to-end request tracing across microservices with flame graphs and Gantt charts
- Metrics Monitoring: Application and infrastructure metrics with custom dashboards
- Log Management: Structured and unstructured log aggregation with full-text search
- Alerts: Threshold and anomaly-based alerts with Slack, PagerDuty, and webhook notifications
- Service Maps: Auto-generated topology showing service dependencies and health
- Exception Tracking: Group and track application exceptions with stack traces
- OpenTelemetry Native: First-class support for OpenTelemetry — no proprietary agents
Architecture
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Your Apps │────▶│ OTel │────▶│ SigNoz │
│ (OTel SDK) │ │ Collector │ │ Query │
└──────────────┘ └──────────────┘ │ Service │
└──────┬───────┘
┌──────────────┐ │
│ SigNoz UI │◀────────────────────────────────┘
│ (React) │ ┌──────┴───────┐
└──────────────┘ │ ClickHouse │
│ (Storage) │
└──────────────┘Self-Hosting
Docker Compose
git clone https://github.com/SigNoz/signoz.git
cd signoz/deploy
docker compose -f docker/clickhouse-setup/docker-compose.yaml up -dThis starts: SigNoz frontend, query service, OTel collector, alert manager, and ClickHouse.
Kubernetes (Helm)
helm repo add signoz https://charts.signoz.io
helm install signoz signoz/signoz --namespace signoz --create-namespaceInstrumenting Your App
Python (Flask)
# pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
provider = TracerProvider()
provider.add_span_processor(BatchSpanProcessor(
OTLPSpanExporter(endpoint="http://localhost:4317", insecure=True)
))
trace.set_tracer_provider(provider)
tracer = trace.get_tracer(__name__)
@app.route("/api/users")
def get_users():
with tracer.start_as_current_span("fetch-users"):
users = db.query("SELECT * FROM users")
return jsonify(users)Node.js
// npm install @opentelemetry/api @opentelemetry/sdk-node @opentelemetry/exporter-trace-otlp-grpc
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const sdk = new NodeSDK({
traceExporter: new OTLPTraceExporter({
url: 'http://localhost:4317',
}),
});
sdk.start();Go
import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
)
exporter, _ := otlptracegrpc.New(ctx,
otlptracegrpc.WithEndpoint("localhost:4317"),
otlptracegrpc.WithInsecure(),
)
// Set up tracer provider with exporterKey Features
Distributed Tracing
Visualize request flow across services:
User Request → API Gateway (12ms)
→ Auth Service (5ms)
→ User Service (45ms)
→ PostgreSQL Query (30ms)
→ Redis Cache Set (2ms)
→ Response (62ms total)Flame graph and Gantt chart views show exactly where time is spent.
Log Management
Query: service=api-gateway AND status>=500 AND latency>1000ms
→ Filter by time range, severity, service
→ Correlate logs with traces (click log → see trace)
→ Create alerts on log patternsDashboards
Pre-built dashboards for:
- Application: P99 latency, error rate, throughput (RED metrics)
- Infrastructure: CPU, memory, disk, network per host
- Database: Query latency, connection pool, slow queries
- Custom: Build with PromQL-compatible query builder
SigNoz vs Alternatives
| Feature | SigNoz | Datadog | Grafana Stack | Jaeger |
|---|---|---|---|---|
| Open Source | Yes | No | Yes (mixed) | Yes |
| Logs + Traces + Metrics | Single app | Single app | 3 separate tools | Traces only |
| OpenTelemetry | Native | Supported | Supported | Native |
| Storage | ClickHouse | Proprietary | Multiple DBs | Elasticsearch/Cassandra |
| Pricing | Free (self-host) | $15/host/mo | Free (self-host) | Free |
| Setup complexity | Docker Compose | Agent install | Multiple services | Moderate |
常见问题
Q: SigNoz 和 Grafana + Prometheus + Loki + Tempo 比怎么样? A: Grafana 方案需要部署和管理 4 个独立组件。SigNoz 是单一平台,日志/追踪/指标天然关联,部署和运维更简单。Grafana 的优势是生态更成熟、仪表盘更灵活。
Q: ClickHouse 后端性能如何? A: ClickHouse 是列式数据库,特别适合时序数据查询。SigNoz 可以高效处理每秒数十万 span 的写入,查询亿级数据在秒级返回。比 Elasticsearch 存储效率高 3-5 倍。
Q: 需要修改代码吗? A: 需要添加 OpenTelemetry SDK 进行应用埋点。大多数框架有自动埋点库(auto-instrumentation),只需几行配置代码。这是标准做法,不会绑定到 SigNoz。
来源与致谢
- GitHub: SigNoz/signoz — 26.5K+ ⭐
- 官网: signoz.io