* feat(devenv): add otel-collector support for local development - Add .devenv/docker/otel-collector/ with compose.yaml and config - Add devenv-otel-collector and devenv-up targets to Makefile - Update development.md with otel-collector setup instructions - Add README.md with usage documentation for otel-collector setup This enables developers to run the complete SigNoz stack locally, including the OpenTelemetry Collector for receiving telemetry data on ports 4317 (gRPC) and 4318 (HTTP). * docs: improve collector setup wordings * chore: fixed comment and service name * chore: docker service name updated otel-collector -> signoz-otel-collector
3.8 KiB
Development Guide
Welcome! This guide will help you set up your local development environment for SigNoz. Let's get you started! 🚀
What do I need?
Before diving in, make sure you have these tools installed:
-
Git - Our version control system
- Download from git-scm.com
-
Go - Powers our backend
-
GCC - Required for CGO dependencies
- Download from gcc.gnu.org
-
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
How do I get the code?
- Open your terminal
- Clone the repository:
git clone https://github.com/SigNoz/signoz.git - Navigate to the project:
cd signoz
How do I run it locally?
SigNoz has three main components: Clickhouse, Backend, and Frontend. Let's set them up one by one.
1. Setting up ClickHouse
First, we need to get ClickHouse running:
make devenv-clickhouse
This command:
- Starts ClickHouse in a single-shard, single-replica cluster
- Sets up Zookeeper
- Runs the latest schema migrations
2. Setting up SigNoz OpenTelemetry Collector
Next, start the OpenTelemetry Collector to receive telemetry data:
make devenv-signoz-otel-collector
This 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
3. Starting the Backend
-
Run the backend server:
make go-run-community -
Verify it's working:
curl http://localhost:8080/api/v1/healthYou should see:
{"status":"ok"}
💡 Tip: The API server runs at
http://localhost:8080/by default
4. Setting up the Frontend
-
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! 🎉
Verifying Your Setup
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
How to send test data?
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"}]}]}]}'