2023-09-13 03:08:05 +00:00
|
|
|
# Contributing
|
|
|
|
|
|
|
|
|
|
## Architecture Overview
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
Service Descriptions:
|
|
|
|
|
|
|
|
|
|
- otel: OpenTelemetry Collector, allows us to receive OpenTelemetry data from
|
|
|
|
|
instrumented applications and forward it to the ingestor for futher
|
|
|
|
|
processing.
|
|
|
|
|
- ingestor: Vector-based event pipeline that receives Otel and non-Otel events
|
|
|
|
|
and parses/normalizes/forwards it to the aggregator.
|
|
|
|
|
- aggregator: Node.js service that receives events from the ingestor, verifies
|
|
|
|
|
authentication, and inserts it to Clickhouse for storage.
|
|
|
|
|
- clickhouse: Clickhouse database, stores all events.
|
|
|
|
|
- db: MongoDB, stores user/alert/dashboard data.
|
|
|
|
|
- api: Node.js API, executes Clickhouse queries on behalf of the frontend.
|
2023-09-19 09:34:49 +00:00
|
|
|
- miner: FastAPI app serving the drain3 clustering model.
|
2023-09-13 03:08:05 +00:00
|
|
|
- app: Next.js frontend, serves the UI.
|
|
|
|
|
- task-check-alerts: Checks for alert criteria and fires off any alerts as
|
|
|
|
|
needed.
|
|
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
|
2023-09-19 09:34:49 +00:00
|
|
|
You can get started by deploying a complete development stack via Docker Compose
|
|
|
|
|
in dev mode.
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker compose -f ./docker-compose.dev.yml up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
To enable self-instrumentation and demo logs, you can set the `HYPERDX_API_KEY`
|
|
|
|
|
to your ingestion key (go to
|
|
|
|
|
[http://localhost:8080/team](http://localhost:8080/team) after creating your
|
|
|
|
|
account) and then restart the stack.
|
|
|
|
|
|
|
|
|
|
ex.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HYPERDX_API_KEY=<YOUR_INGESTION_API_KEY_HERE> docker compose -f ./docker-compose.dev.yml up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The core services are all hot-reloaded, so you can make changes to the code and
|
|
|
|
|
see them reflected in real-time.
|
2023-09-13 03:08:05 +00:00
|
|
|
|
|
|
|
|
If you need help getting started,
|
|
|
|
|
[join our Discord](https://discord.gg/FErRRKU78j) and we're more than happy to
|
|
|
|
|
get you set up!
|