DAARION Platform Monitoring
Stack: Prometheus + Grafana
Сервер: 144.76.224.179
🚀 Швидкий старт
1. Деплой на сервер
# З локальної машини
cd /Users/apple/github-projects/microdao-daarion
rsync -avz monitoring/ root@144.76.224.179:/opt/microdao-daarion/monitoring/
# На сервері
ssh root@144.76.224.179
cd /opt/microdao-daarion/monitoring
docker-compose -f docker-compose.monitoring.yml up -d
2. Доступ до інтерфейсів
- Prometheus: http://144.76.224.179:9090
- Grafana: http://144.76.224.179:3000
- Username:
admin - Password:
daarion2025
- Username:
📊 Що моніториться?
Core Services
- dagi-router (9102) - Центральний маршрутизатор
- telegram-gateway (8000) - Telegram боти
- dagi-gateway (9300) - HTTP Gateway
- dagi-rbac (9200) - RBAC Service
AI/ML Services
- dagi-crewai (9010) - CrewAI workflows
- dagi-vision-encoder (8001) - Vision AI
- dagi-parser (9400) - OCR/PDF parsing
- dagi-stt (9000) - Speech-to-Text
- dagi-tts (9101) - Text-to-Speech
Infrastructure
- nats (8222) - Message broker
- dagi-qdrant (6333) - Vector DB
- dagi-postgres (5432) - Main DB
🎯 Ключові метрики
1. Request Rate
rate(http_requests_total[5m])
2. Error Rate
rate(http_requests_total{status=~"5.."}[5m])
3. Latency (p95)
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
4. LLM Performance
rate(llm_requests_total[5m])
histogram_quantile(0.95, rate(llm_request_duration_seconds_bucket[5m]))
5. Telegram Activity
rate(telegram_messages_total[5m])
telegram_active_chats
🚨 Alerts
Critical
- ServiceDown: Сервіс не відповідає > 2 хв
- TelegramGatewayDown: Telegram боти не працюють
- PostgreSQLDown: База даних недоступна
- NATSDown: Message broker недоступний
- DiskSpaceCritical: < 10% диску
Warning
- HighErrorRate: > 5% помилок
- RouterHighLatency: P95 > 10s
- LLMHighLatency: P95 > 30s
- DiskSpaceWarning: < 20% диску
📈 Додавання метрик до сервісу
Python (FastAPI)
from prometheus_client import Counter, Histogram, generate_latest
from fastapi import FastAPI
app = FastAPI()
# Metrics
REQUEST_COUNT = Counter('http_requests_total', 'Total HTTP requests', ['method', 'endpoint', 'status'])
REQUEST_LATENCY = Histogram('http_request_duration_seconds', 'HTTP request latency', ['method', 'endpoint'])
@app.middleware("http")
async def metrics_middleware(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
duration = time.time() - start_time
REQUEST_COUNT.labels(
method=request.method,
endpoint=request.url.path,
status=response.status_code
).inc()
REQUEST_LATENCY.labels(
method=request.method,
endpoint=request.url.path
).observe(duration)
return response
@app.get("/metrics")
async def metrics():
return Response(generate_latest(), media_type="text/plain")
Додати сервіс в Prometheus
Відредагувати monitoring/prometheus/prometheus.yml:
scrape_configs:
- job_name: 'my-new-service'
static_configs:
- targets: ['my-service:9999']
metrics_path: '/metrics'
scrape_interval: 15s
🛠️ Troubleshooting
Prometheus не скрейпить метрики
# Перевірити статус targets
curl http://localhost:9090/api/v1/targets
# Перевірити logs
docker logs dagi-prometheus
# Перевірити endpoint вручну
curl http://dagi-router:9102/metrics
Grafana не показує дані
# Перевірити datasource
docker exec dagi-grafana grafana-cli admin reset-admin-password daarion2025
# Restart Grafana
docker restart dagi-grafana
Reload Prometheus config без рестарту
curl -X POST http://localhost:9090/-/reload
📚 Корисні запити
Top 10 найповільніших endpoints
topk(10, histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])))
Error rate по сервісах
sum(rate(http_requests_total{status=~"5.."}[5m])) by (job)
LLM requests per second
sum(rate(llm_requests_total[1m])) by (agent_id)
Active Telegram chats
sum(telegram_active_chats) by (agent_id)
🎯 Наступні кроки
- ✅ Prometheus + Grafana встановлено
- ⏳ Додати метрики в DAGI Router
- ⏳ Додати метрики в Telegram Gateway
- ⏳ Створити дашборди в Grafana
- ⏳ Налаштувати Alertmanager (Slack/Telegram notifications)
- ⏳ Додати Loki для централізованих логів
- ⏳ Додати Jaeger для distributed tracing
Оновлено: 2025-11-18