- 12 panels: rates, latency, errors, embedding, DB, health, relevance - Covers all O1-O9 metrics in visual form - Import via Grafana UI or provisioning - Dashboard UID: poimen-memory-obs
132 lines
5.0 KiB
JSON
132 lines
5.0 KiB
JSON
{
|
|
"annotations": { "list": [] },
|
|
"editable": true,
|
|
"fiscalYearStartMonth": 0,
|
|
"graphTooltip": 0,
|
|
"id": null,
|
|
"links": [],
|
|
"panels": [
|
|
{
|
|
"title": "Ingest Rate (req/s)",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
|
|
"targets": [
|
|
{ "expr": "rate(memory_ingest_requests_total[5m])", "legendFormat": "ingest req/s" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Query Rate (req/s)",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 },
|
|
"targets": [
|
|
{ "expr": "rate(memory_query_requests_total[5m])", "legendFormat": "query req/s" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Ingest Latency (p50/p95/p99)",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 },
|
|
"targets": [
|
|
{ "expr": "histogram_quantile(0.5, rate(memory_ingest_duration_seconds_bucket[5m]))", "legendFormat": "p50" },
|
|
{ "expr": "histogram_quantile(0.95, rate(memory_ingest_duration_seconds_bucket[5m]))", "legendFormat": "p95" },
|
|
{ "expr": "histogram_quantile(0.99, rate(memory_ingest_duration_seconds_bucket[5m]))", "legendFormat": "p99" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Query Latency (p50/p95/p99)",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 },
|
|
"targets": [
|
|
{ "expr": "histogram_quantile(0.5, rate(memory_query_duration_seconds_bucket[5m]))", "legendFormat": "p50" },
|
|
{ "expr": "histogram_quantile(0.95, rate(memory_query_duration_seconds_bucket[5m]))", "legendFormat": "p95" },
|
|
{ "expr": "histogram_quantile(0.99, rate(memory_query_duration_seconds_bucket[5m]))", "legendFormat": "p99" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Error Rates",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 },
|
|
"targets": [
|
|
{ "expr": "rate(memory_ingest_errors_total[5m])", "legendFormat": "ingest errors" },
|
|
{ "expr": "rate(memory_query_errors_total[5m])", "legendFormat": "query errors" },
|
|
{ "expr": "rate(memory_query_embedding_failures_total[5m])", "legendFormat": "embedding failures" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Embedding Latency",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 },
|
|
"targets": [
|
|
{ "expr": "histogram_quantile(0.5, rate(memory_query_embedding_duration_seconds_bucket[5m]))", "legendFormat": "p50" },
|
|
{ "expr": "histogram_quantile(0.95, rate(memory_query_embedding_duration_seconds_bucket[5m]))", "legendFormat": "p95" }
|
|
]
|
|
},
|
|
{
|
|
"title": "DB Row Counts",
|
|
"type": "stat",
|
|
"gridPos": { "h": 4, "w": 12, "x": 0, "y": 24 },
|
|
"targets": [
|
|
{ "expr": "memory_db_table_entity_rows", "legendFormat": "entities" },
|
|
{ "expr": "memory_db_table_edge_rows", "legendFormat": "edges" },
|
|
{ "expr": "memory_db_table_chunk_rows", "legendFormat": "chunks" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Dependency Health",
|
|
"type": "stat",
|
|
"gridPos": { "h": 4, "w": 12, "x": 12, "y": 24 },
|
|
"targets": [
|
|
{ "expr": "memory_dependency_db_up", "legendFormat": "DB" },
|
|
{ "expr": "memory_dependency_embedding_up", "legendFormat": "Embedding" },
|
|
{ "expr": "memory_dependency_opensearch_up", "legendFormat": "OpenSearch" },
|
|
{ "expr": "memory_dependency_llm_up", "legendFormat": "LLM" }
|
|
]
|
|
},
|
|
{
|
|
"title": "DB Pool Stats",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 28 },
|
|
"targets": [
|
|
{ "expr": "memory_db_pool_size", "legendFormat": "pool size" },
|
|
{ "expr": "memory_db_pool_idle", "legendFormat": "idle" },
|
|
{ "expr": "memory_db_pool_active", "legendFormat": "active" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Relevance Metrics",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 28 },
|
|
"targets": [
|
|
{ "expr": "memory_relevance_precision", "legendFormat": "precision" },
|
|
{ "expr": "memory_relevance_recall", "legendFormat": "recall" },
|
|
{ "expr": "memory_relevance_f1_score", "legendFormat": "F1" }
|
|
]
|
|
},
|
|
{
|
|
"title": "In-Flight Operations",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 36 },
|
|
"targets": [
|
|
{ "expr": "memory_ingest_in_flight", "legendFormat": "ingest" },
|
|
{ "expr": "memory_query_in_flight", "legendFormat": "query" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Write Volume",
|
|
"type": "timeseries",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 36 },
|
|
"targets": [
|
|
{ "expr": "rate(memory_write_entities_total[5m])", "legendFormat": "entities/s" },
|
|
{ "expr": "rate(memory_write_edges_total[5m])", "legendFormat": "edges/s" },
|
|
{ "expr": "rate(memory_write_chunks_total[5m])", "legendFormat": "chunks/s" }
|
|
]
|
|
}
|
|
],
|
|
"schemaVersion": 39,
|
|
"tags": ["poimen", "memory", "observability"],
|
|
"templating": { "list": [] },
|
|
"time": { "from": "now-1h", "to": "now" },
|
|
"title": "Poimen Memory Observability",
|
|
"uid": "poimen-memory-obs"
|
|
}
|