Welcome! This guide will help you set up your local development environment for SigNoz. Let's get you started! 🚀
Before diving in, make sure you have these tools installed:
-
Git - Our version control system
- Download from git-scm.com
-
Go - Powers our backend
-
Node - Powers our frontend
- Download from nodejs.org
- Check .nvmrc for the version
-
Yarn - Our frontend package manager
- Follow the installation guide
-
Docker - For running Clickhouse and Postgres locally
- Get it from docs.docker.com/get-docker
💡 Tip: Run
make helpto see all available commands with descriptions
- Open your terminal
- Clone the repository:
git clone https://github.com/SigNoz/signoz.git
- Navigate to the project:
cd signoz
SigNoz has three main components: Clickhouse, Backend, and Frontend. Let's set them up one by one.
First, we need to get ClickHouse running:
make devenv-clickhouseThis command:
- Starts ClickHouse in a single-shard, single-replica cluster
- Sets up Zookeeper
- Runs the latest schema migrations
Next, start the OpenTelemetry Collector to receive telemetry data:
make devenv-signoz-otel-collectorThis command:
- Starts the SigNoz OpenTelemetry Collector
- Listens on port 4317 (gRPC) and 4318 (HTTP) for incoming telemetry data
- Forwards data to ClickHouse for storage
💡 Quick Setup: Use
make devenv-upto start both ClickHouse and OTel Collector together
-
Run the backend server:
make go-run-community
-
Verify it's working:
curl http://localhost:8080/api/v1/health
You should see:
{"status":"ok"}
💡 Tip: The API server runs at
http://localhost:8080/by default
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
yarn install
-
Create a
.envfile in this directory:FRONTEND_API_ENDPOINT=http://localhost:8080
-
Start the development server:
yarn dev
💡 Tip:
yarn devwill automatically rebuild when you make changes to the code
Now you're all set to start developing! Happy coding! 🎉
To verify everything is working correctly:
- Check ClickHouse:
curl http://localhost:8123/ping(should return "Ok.") - Check OTel Collector:
curl http://localhost:13133(should return health status) - Check Backend:
curl http://localhost:8080/api/v1/health(should return{"status":"ok"}) - Check Frontend: Open
http://localhost:3301in your browser
You can now send telemetry data to your local SigNoz instance:
- OTLP gRPC:
localhost:4317 - OTLP HTTP:
localhost:4318
For example, using curl to send a test trace:
curl -X POST http://localhost:4318/v1/traces \
-H "Content-Type: application/json" \
-d '{"resourceSpans":[{"resource":{"attributes":[{"key":"service.name","value":{"stringValue":"test-service"}}]},"scopeSpans":[{"spans":[{"traceId":"12345678901234567890123456789012","spanId":"1234567890123456","name":"test-span","startTimeUnixNano":"1609459200000000000","endTimeUnixNano":"1609459201000000000"}]}]}]}'