3.6 KiB
3.6 KiB
description
| description |
|---|
| Display system metrics and performance dashboard |
Metrics Dashboard Command
Display comprehensive system metrics and performance statistics.
Usage
No arguments required.
Instructions
Shows system health, query performance, cache stats, and recent activity.
Implementation
import httpx
import json
try:
# Get all metrics
response = httpx.get(
"http://127.0.0.1:8765/metrics",
timeout=10.0
)
if response.status_code == 200:
metrics = response.json()
print("=" * 70)
print("[=] RAG SYSTEM METRICS DASHBOARD".center(70))
print("=" * 70)
print()
# Health Status
health = metrics.get("health", {})
if health:
status = health.get("status", "unknown").upper()
status_emoji = "[OK]" if status == "HEALTHY" else "[!]"
print(f"{status_emoji} SYSTEM HEALTH: {status}")
error_rate = health.get("error_rate", 0)
memory_mb = health.get("memory_usage_mb", 0)
latency = health.get("avg_query_latency_ms", 0)
print(f" Error Rate: {error_rate:.2%}")
print(f" Memory: {memory_mb:.1f} MB")
print(f" Avg Latency: {latency:.1f} ms")
print()
# Query Performance
perf = metrics.get("performance", {})
if perf:
print("[!] QUERY PERFORMANCE (7 days)")
total = perf.get("total_queries", 0)
qpd = perf.get("queries_per_day", 0)
avg_time = perf.get("avg_execution_time_ms", 0)
p95_time = perf.get("p95_execution_time_ms", 0)
print(f" Total Queries: {total}")
print(f" Queries/Day: {qpd:.1f}")
print(f" Avg Time: {avg_time:.1f} ms")
print(f" P95 Time: {p95_time:.1f} ms")
feedback = perf.get("avg_feedback_score")
if feedback is not None:
print(f" Avg Feedback: {feedback:.2f}/1.0")
print()
# Cache Statistics
cache = metrics.get("cache", {})
if cache:
print("[@] CACHE STATISTICS")
entries = cache.get("total_entries", 0)
size_mb = cache.get("total_size_mb", 0)
avg_access = cache.get("average_access_count", 0)
print(f" Total Entries: {entries}")
print(f" Total Size: {size_mb:.2f} MB")
print(f" Avg Access Count: {avg_access:.1f}")
print()
# Get popular queries
try:
history_response = httpx.get(
"http://127.0.0.1:8765/query-history?days=1",
timeout=5.0
)
if history_response.status_code == 200:
history = history_response.json()
popular = history.get("popular_queries", [])
if popular:
print("[FIRE] TOP QUERIES (24h)")
for i, query_info in enumerate(popular[:5], 1):
query = query_info.get("query", "")
count = query_info.get("count", 0)
if len(query) > 50:
query = query[:47] + "..."
print(f" {i}. {query} ({count}x)")
print()
except:
pass
print("=" * 70)
print("\n[i] Refresh with: /rag-metrics")
else:
print(f"[X] Server error: {response.status_code}")
except Exception as e:
print(f"[X] Error: {e}")
print("Make sure the MCP server is running on port 8000.")
Execute this code to display the metrics dashboard.