Files
microdao-daarion/monitoring/README.md

5.1 KiB
Raw Permalink Blame History

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. Доступ до інтерфейсів


📊 Що моніториться?

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)

🎯 Наступні кроки

  1. Prometheus + Grafana встановлено
  2. Додати метрики в DAGI Router
  3. Додати метрики в Telegram Gateway
  4. Створити дашборди в Grafana
  5. Налаштувати Alertmanager (Slack/Telegram notifications)
  6. Додати Loki для централізованих логів
  7. Додати Jaeger для distributed tracing

Оновлено: 2025-11-18