Overview
The services and stores that make up OpenPerf.
OpenPerf is six services and four stores. Each service runs and is configured on its own.
Services
| Service | Port | Role |
|---|---|---|
web |
3000 | Dashboard. The browser calls api directly. |
api |
4000 | Dashboard API and auth. |
api-ingest |
4100 | OTLP intake. Writes logs and spans to ClickHouse. |
worker-jobs |
4200 | Background jobs: alerts, webhooks, emails, cleanup. |
worker-errors |
4400 | Symbolicates and groups errors. |
mcp |
4500 | MCP server for AI assistants. |
Worker ports serve only health checks.
Stores
| Store | Holds |
|---|---|
| PostgreSQL | Accounts, projects, error groups, alert rules and job queues. |
| ClickHouse | Logs, spans, error events and their hourly rollups. 26.8+. |
| Redis (state) | Ingest queues and rate limits. Run it with noeviction. |
| Redis (cache) | Query cache. Safe to evict. |
| S3-compatible | Source maps and logos. |
ClickHouse 26.6 and later needs AVX2 on x86 hosts.
Data flow
- An SDK sends OTLP to
api-ingest, which queues it in Redis. api-ingestdrains logs and spans into ClickHouse. While ClickHouse is down, they wait in Redis.worker-errorsgroups errors in PostgreSQL and writes events to ClickHouse.worker-jobsevaluates alert rules and sends notifications.