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/dockerIf 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.