This guide covers three ways to deploy AIObserve Stack. Choose the method that fits your environment:
| Method | Best for |
|---|---|
| Docker Compose | Local testing, development, PoC |
| Kubernetes (Helm) | Production, scalable environments |
| Manual | Custom setups, existing infrastructure |
Each method deploys the core components: OpenTelemetry Collector, Apache Doris, and Grafana with Doris App Plugin. For data collection configuration.
Best for local testing, development, and proof of concepts (PoC).
AIObserve Stack - Docker Compose
- Docker Engine (v20.10+)
- Docker Compose (v2.0+)
-
Clone the repository:
git clone https://github.com/velodb/ai-observe-stack.git cd ai-observe-stack/docker -
If you already have an existing Apache Doris cluster, configure the connection and start in external mode:
cp .env.example .env
Edit
.envwith your Doris connection details:DORIS_FE_HTTP_ENDPOINT=http://<DORIS_FE_HOST>:<FE_HTTP_PORT> DORIS_FE_MYSQL_ENDPOINT=<DORIS_FE_HOST>:<FE_MYSQL_PORT> DORIS_USERNAME=root DORIS_PASSWORD=
Then start the services (OTel Collector + Grafana only):
docker compose -f docker-compose-without-doris.yaml up -d
-
If you don't have a Doris cluster, simply start the full stack with the built-in Doris:
docker compose up -d
-
Verify the services are running:
docker compose ps
All services should show
runningstatus. -
Access Grafana at http://localhost:3000 and log in with
admin/admin.
| Service | Endpoint | Credentials |
|---|---|---|
| Grafana | http://localhost:3000 | admin / admin |
| Doris FE UI | http://localhost:8030 | root / (empty) |
| Doris MySQL | localhost:9030 | root / (empty) |
| OTel gRPC | localhost:4317 | - |
| OTel HTTP | localhost:4318 | - |
Note: Doris FE UI and Doris MySQL endpoints are only available with the built-in Doris. When using an external Doris, access your existing cluster directly.
To stop services while preserving data:
docker compose downTo stop services and remove all data:
docker compose down -vBest for production deployments, development environments, and scalable setups.
- Kubernetes cluster (v1.20+)
- Helm (v3.0+)
- kubectl configured to access your cluster
- PersistentVolume provisioner (for data persistence)
-
Add the AIObserve Stack Helm repository:
helm repo add ai-observe-stack https://charts.velodb.io helm repo update
-
Create a namespace for AIObserve Stack:
kubectl create namespace ai-observe-stack
-
Install AIObserve Stack:
helm install my-aiobs ai-observe-stack/ai-observe-stack -n ai-observe-stack
If you have an existing Doris cluster, use external mode instead:
helm install my-aiobs ai-observe-stack/ai-observe-stack -n ai-observe-stack \ --set doris.mode=external \ --set doris.external.host=<DORIS_FE_HOST> \ --set doris.external.port=9030 \ --set doris.external.feHttpPort=8030 \ --set doris.internal.operator.enabled=false
-
Verify all pods are running:
kubectl get pods -n ai-observe-stack
Wait until all pods show
Runningstatus. -
Access Grafana:
kubectl port-forward svc/my-aiobs-grafana 3000:3000 -n ai-observe-stack
Open http://localhost:3000 and log in with
admin/admin.
| Service | Port-forward command |
|---|---|
| Grafana | kubectl port-forward svc/my-aiobs-grafana 3000:3000 -n ai-observe-stack |
| Doris FE UI | kubectl port-forward svc/my-aiobs-doris-fe 8030:8030 -n ai-observe-stack |
| Doris MySQL | kubectl port-forward svc/my-aiobs-doris-fe 9030:9030 -n ai-observe-stack |
helm uninstall my-aiobs -n ai-observe-stack
kubectl delete namespace ai-observe-stackBest for custom setups or integrating with existing infrastructure.
-
Deploy Apache Doris following the Doris deployment documentation. Skip this step if you already have a Doris cluster.
-
Deploy OpenTelemetry Collector following the installation guide.
-
Deploy Grafana following the Grafana installation documentation.
-
Install the AIObserve Stack Grafana plugin. See Plugin Installation.
After completing all steps, access Grafana at http://localhost:3000.