Initial commit
This commit is contained in:
129
.claude/commands/rag-metrics.md
Normal file
129
.claude/commands/rag-metrics.md
Normal file
@@ -0,0 +1,129 @@
|
||||
---
|
||||
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
|
||||
|
||||
```python
|
||||
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.
|
||||
Reference in New Issue
Block a user