Files
Imago/docs/grafana-dashboard.json
bruno caefc1b1a0
CI / Lint & Format (push) Failing after 11s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
Add configuration files and comprehensive project documentation
- Add .env.backup with full application configuration template
- Create RequestIDMiddleware for trace ID injection in logs
- Implement ARQ fallback pool for Redis unavailability
- Add Dead Letter Queue module for failed job handling
- Include project ROADMAP with audit and 27 applied corrections
- Add Grafana monitoring dashboard with 10 panels
2026-06-22 14:50:05 -04:00

201 lines
5.2 KiB
JSON

{
"dashboard": {
"title": "Imago — Monitoring",
"uid": "imago",
"tags": ["imago", "fastapi"],
"timezone": "browser",
"schemaVersion": 38,
"refresh": "30s",
"panels": [
{
"id": 1,
"title": "Images Uploaded (rate)",
"type": "stat",
"gridPos": {"x": 0, "y": 0, "w": 6, "h": 4},
"targets": [
{
"expr": "rate(hub_images_uploaded_total[5m]) * 60",
"legendFormat": "uploads/min"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"color": {"mode": "palette-classic"},
"thresholds": {"steps": [{"color": "green", "value": null}]}
}
}
},
{
"id": 2,
"title": "AI Tokens Consumed (rate)",
"type": "stat",
"gridPos": {"x": 6, "y": 0, "w": 6, "h": 4},
"targets": [
{
"expr": "rate(hub_ai_tokens_consumed_total[5m]) * 60",
"legendFormat": "tokens/min"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"color": {"mode": "palette-classic"},
"thresholds": {"steps": [{"color": "blue", "value": null}]}
}
}
},
{
"id": 3,
"title": "Active WebSockets",
"type": "stat",
"gridPos": {"x": 12, "y": 0, "w": 6, "h": 4},
"targets": [
{
"expr": "hub_active_websockets",
"legendFormat": "connections"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"color": {"mode": "palette-classic"},
"thresholds": {"steps": [{"color": "purple", "value": null}]}
}
}
},
{
"id": 4,
"title": "ARQ Jobs",
"type": "stat",
"gridPos": {"x": 18, "y": 0, "w": 6, "h": 4},
"targets": [
{
"expr": "rate(hub_arq_jobs_enqueued_total[5m]) * 60",
"legendFormat": "jobs/min"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"color": {"mode": "palette-classic"},
"thresholds": {"steps": [{"color": "orange", "value": null}]}
}
}
},
{
"id": 5,
"title": "Pipeline Duration",
"type": "heatmap",
"gridPos": {"x": 0, "y": 4, "w": 12, "h": 8},
"targets": [
{
"expr": "rate(hub_pipeline_duration_seconds_bucket[5m])",
"legendFormat": "{{le}}s"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"color": {"mode": "scheme-classic"}
}
}
},
{
"id": 6,
"title": "Pipeline Step Duration",
"type": "bargauge",
"gridPos": {"x": 12, "y": 4, "w": 12, "h": 8},
"targets": [
{
"expr": "avg(rate(hub_pipeline_step_duration_seconds_sum[5m]) / rate(hub_pipeline_step_duration_seconds_count[5m])) by (step)",
"legendFormat": "{{step}} avg"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"color": {"mode": "palette-classic"}
}
}
},
{
"id": 7,
"title": "Images Uploaded (total)",
"type": "timeseries",
"gridPos": {"x": 0, "y": 12, "w": 12, "h": 8},
"targets": [
{
"expr": "rate(hub_images_uploaded_total[30s])",
"legendFormat": "uploaded"
},
{
"expr": "rate(hub_images_deleted_total[30s])",
"legendFormat": "deleted"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"color": {"mode": "palette-classic"}
}
}
},
{
"id": 8,
"title": "Pipeline Errors",
"type": "timeseries",
"gridPos": {"x": 12, "y": 12, "w": 12, "h": 8},
"targets": [
{
"expr": "rate(hub_pipeline_errors_total[30s])",
"legendFormat": "{{step}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"color": {"mode": "palette-classic"}
}
}
},
{
"id": 9,
"title": "Storage Used by Client",
"type": "bargauge",
"gridPos": {"x": 0, "y": 20, "w": 12, "h": 8},
"targets": [
{
"expr": "hub_storage_used_bytes",
"legendFormat": "{{client_id}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "decbytes",
"color": {"mode": "palette-classic"}
}
}
},
{
"id": 10,
"title": "AI Tokens by Client & Model",
"type": "bargauge",
"gridPos": {"x": 12, "y": 20, "w": 12, "h": 8},
"targets": [
{
"expr": "rate(hub_ai_tokens_consumed_total[5m]) * 300",
"legendFormat": "{{client_id}}/{{model}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"color": {"mode": "palette-classic"}
}
}
}
]
}
}