# SigNoz — Open Source APM & Observability Platform > SigNoz is an open-source Datadog/New Relic alternative with logs, traces, and metrics in one platform. Native OpenTelemetry support, ClickHouse backend, and powerful dashboards. ## Install Save in your project root: ## Quick Use ```bash git clone https://github.com/SigNoz/signoz.git && cd signoz/deploy docker compose -f docker/clickhouse-setup/docker-compose.yaml up -d ``` Open `http://localhost:3301` — start sending traces and metrics from your application. ## Intro **SigNoz** is an open-source Application Performance Monitoring (APM) and observability platform that provides logs, traces, and metrics in a single application. Built natively on OpenTelemetry and powered by ClickHouse for high-performance storage, it serves as a self-hosted alternative to Datadog, New Relic, and Dynatrace. With 26.5K+ GitHub stars, SigNoz is the leading open-source full-stack observability solution, designed for developers and SREs who want enterprise-grade APM without vendor lock-in or per-host pricing. ## 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 ```bash git clone https://github.com/SigNoz/signoz.git cd signoz/deploy docker compose -f docker/clickhouse-setup/docker-compose.yaml up -d ``` This starts: SigNoz frontend, query service, OTel collector, alert manager, and ClickHouse. ### Kubernetes (Helm) ```bash helm repo add signoz https://charts.signoz.io helm install signoz signoz/signoz --namespace signoz --create-namespace ``` ## Instrumenting Your App ### Python (Flask) ```python # 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 ```javascript // 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 ```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 exporter ``` ## Key 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 patterns ``` ### Dashboards 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](https://github.com/SigNoz/signoz) — 26.5K+ ⭐ - 官网: [signoz.io](https://signoz.io) --- Source: https://tokrepo.com/en/workflows/2d7e482b-34c8-11f1-9bc6-00163e2b0d79 Author: AI Open Source