Мониторинг — Преглед
Dictaro използва централизиран мониторинг стек на базата на Prometheus + Grafana + Loki, работещ на Azure VM (dictaro-vm). Достъпът е осигурен чрез Cloudflare Tunnels, а автентикацията — чрез Azure AD OAuth.
Архитектура
Компоненти на стека
| Компонент | Описание | Порт |
|---|---|---|
| Prometheus | Time-series метрики, scraping | 9090 |
| Grafana | Визуализация и dashboards | 3000 |
| Loki | Log aggregation | 3100 |
| Promtail (local) | Docker log collector → Loki | 9080 |
| Promtail (remote) | Docker log collector → Loki via tunnel | 9080 |
| node-exporter (x2) | Системни метрики (CPU, RAM, disk) | 9100 |
| dcgm-exporter | NVIDIA GPU метрики | 9400 |
Docker Compose услуги
Всички мониторинг услуги са дефинирани в licensing-go/docker-compose.yml:
Persistent volumes
| Volume | Контейнер | Описание |
|---|---|---|
prometheus-data | prometheus | Time-series данни |
grafana-data | grafana | Dashboards, preferences, alerting state |
loki-data | loki | Log chunks и индекси |
Мрежова свързаност
Ключово решение: Вместо VPN или SSH tunnels, Cloudflare Tunnels свързват GPU сървъра (on-premises) с Azure VM. Това позволява:
- Prometheus да scrape-ва метрики от DGX Spark чрез HTTPS
- Promtail на DGX Spark да push-ва логове към Loki
- Grafana да е достъпна публично на
monitoring.dictaro.ai
Автентикация
Grafana е конфигурирана с Azure AD OAuth за автентикация:
| Параметър | Стойност |
|---|---|
| Provider | Azure AD |
| Tenant ID | 9348f3ce-96ad-48a8-87bd-7825eb7ea7e6 |
| Auto login | true |
| Scopes | openid email profile |
| Anonymous access | Забранен |
Deployment
Мониторинг стекът се деплойва ръчно (НЕ чрез CI/CD):
# На dictaro-vm
cd /opt/dictaro/licensing-go
docker compose up -d
Или чрез Azure CLI:
az vm run-command invoke \
--resource-group dictaro-rg \
--name dictaro-vm \
--command-id RunShellScript \
--scripts "cd /opt/dictaro/licensing-go && docker compose up -d"
Необходими environment variables
| Variable | Описание |
|---|---|
GRAFANA_PASSWORD | Admin парола за Grafana (fallback: admin) |
GRAFANA_ROOT_URL | Public URL на Grafana (default: http://localhost:3000/) |
GRAFANA_AZUREAD_CLIENT_ID | Azure AD App Registration client ID |
GRAFANA_AZUREAD_CLIENT_SECRET | Azure AD App Registration secret |
CLOUDFLARE_TUNNEL_TOKEN_MONITORING | Token за monitoring tunnel |
CLOUDFLARE_TUNNEL_TOKEN_LOKI | Token за loki tunnel |