9.3 KiB
9.3 KiB
Useful Prometheus Queries (PromQL)
Collection of useful PromQL queries for Claude Code telemetry analysis.
Note: All queries use the double prefix: claude_code_claude_code_*
Cost Analysis
Daily Cost Trend
sum(increase(claude_code_claude_code_cost_usage_USD_total[1d]))
Cost by Model
sum by (model) (increase(claude_code_claude_code_cost_usage_USD_total[24h]))
Cost per Hour (Rate)
rate(claude_code_claude_code_cost_usage_USD_total[5m]) * 3600
Average Cost per Session
sum(increase(claude_code_claude_code_cost_usage_USD_total[24h]))
/
sum(increase(claude_code_claude_code_session_count_total[24h]))
Cumulative Monthly Cost
sum(increase(claude_code_claude_code_cost_usage_USD_total[30d]))
Cost by Team
sum by (team) (increase(claude_code_claude_code_cost_usage_USD_total[24h]))
Projected Monthly Cost (based on last 7 days)
(sum(increase(claude_code_claude_code_cost_usage_USD_total[7d])) / 7) * 30
Token Usage
Total Tokens by Type
sum by (type) (increase(claude_code_claude_code_token_usage_tokens_total[24h]))
Tokens by Model
sum by (model) (increase(claude_code_claude_code_token_usage_tokens_total[24h]))
Cache Hit Rate
sum(increase(claude_code_claude_code_token_usage_tokens_total{type="cache_read"}[24h]))
/
sum(increase(claude_code_claude_code_token_usage_tokens_total{type=~"input|cache_creation|cache_read"}[24h]))
* 100
Input vs Output Token Ratio
sum(increase(claude_code_claude_code_token_usage_tokens_total{type="input"}[24h]))
/
sum(increase(claude_code_claude_code_token_usage_tokens_total{type="output"}[24h]))
Token Usage Rate (per minute)
sum by (type) (rate(claude_code_claude_code_token_usage_tokens_total[5m]) * 60)
Total Tokens (All Time)
sum(claude_code_claude_code_token_usage_tokens_total)
Productivity Metrics
Total Lines of Code Modified
sum(claude_code_claude_code_lines_of_code_count_total)
LOC by Type (Added, Changed, Deleted)
sum by (type) (increase(claude_code_claude_code_lines_of_code_count_total[24h]))
LOC per Hour
rate(claude_code_claude_code_lines_of_code_count_total[5m]) * 3600
Lines per Dollar (Efficiency)
sum(increase(claude_code_claude_code_lines_of_code_count_total[24h]))
/
sum(increase(claude_code_claude_code_cost_usage_USD_total[24h]))
Commits per Day
increase(claude_code_claude_code_commit_count_total[24h])
PRs per Week
increase(claude_code_claude_code_pr_count_total[7d])
LOC per Commit
sum(increase(claude_code_claude_code_lines_of_code_count_total[24h]))
/
sum(increase(claude_code_claude_code_commit_count_total[24h]))
Session Analytics
Total Sessions
sum(claude_code_claude_code_session_count_total)
New Sessions (24h)
increase(claude_code_claude_code_session_count_total[24h])
Active Users (Unique account_uuids)
count(count by (account_uuid) (claude_code_claude_code_session_count_total))
Average Session Duration
sum(increase(claude_code_claude_code_active_time_seconds_total[24h]))
/
sum(increase(claude_code_claude_code_session_count_total[24h]))
/ 60
Result in minutes
Total Active Hours (24h)
sum(increase(claude_code_claude_code_active_time_seconds_total[24h])) / 3600
Sessions by Version
sum by (version) (increase(claude_code_claude_code_session_count_total[24h]))
Team Aggregation
Cost by Team (Last 24h)
sum by (team) (increase(claude_code_claude_code_cost_usage_USD_total[24h]))
LOC by Team (Last 24h)
sum by (team) (increase(claude_code_claude_code_lines_of_code_count_total[24h]))
Active Users per Team
count by (team) (count by (team, account_uuid) (claude_code_claude_code_session_count_total))
Team Efficiency (LOC per Dollar)
sum by (team) (increase(claude_code_claude_code_lines_of_code_count_total[24h]))
/
sum by (team) (increase(claude_code_claude_code_cost_usage_USD_total[24h]))
Top Spending Teams (Last 7 days)
topk(5, sum by (team) (increase(claude_code_claude_code_cost_usage_USD_total[7d])))
Model Comparison
Cost by Model (Pie Chart)
sum by (model) (increase(claude_code_claude_code_cost_usage_USD_total[7d]))
Token Efficiency by Model (Tokens per Dollar)
sum by (model) (increase(claude_code_claude_code_token_usage_tokens_total[24h]))
/
sum by (model) (increase(claude_code_claude_code_cost_usage_USD_total[24h]))
Most Used Model
topk(1, sum by (model) (increase(claude_code_claude_code_token_usage_tokens_total[24h])))
Model Usage Distribution (%)
sum by (model) (increase(claude_code_claude_code_token_usage_tokens_total[24h]))
/
sum(increase(claude_code_claude_code_token_usage_tokens_total[24h]))
* 100
Alerting Queries
High Daily Cost Alert (> $50)
sum(increase(claude_code_claude_code_cost_usage_USD_total[24h])) > 50
Cost Spike Alert (50% increase compared to yesterday)
sum(increase(claude_code_claude_code_cost_usage_USD_total[24h]))
/
sum(increase(claude_code_claude_code_cost_usage_USD_total[24h] offset 24h))
> 1.5
No Activity Alert (no sessions in last hour)
increase(claude_code_claude_code_session_count_total[1h]) == 0
Low Cache Hit Rate Alert (< 20%)
(
sum(increase(claude_code_claude_code_token_usage_tokens_total{type="cache_read"}[1h]))
/
sum(increase(claude_code_claude_code_token_usage_tokens_total{type=~"input|cache_creation|cache_read"}[1h]))
* 100
) < 20
Forecasting
Projected Monthly Cost (based on last 7 days)
(sum(increase(claude_code_claude_code_cost_usage_USD_total[7d])) / 7) * 30
Projected Annual Cost (based on last 30 days)
(sum(increase(claude_code_claude_code_cost_usage_USD_total[30d])) / 30) * 365
Average Daily Cost (Last 30 days)
sum(increase(claude_code_claude_code_cost_usage_USD_total[30d])) / 30
Growth Rate (Week over Week)
(
sum(increase(claude_code_claude_code_cost_usage_USD_total[7d]))
-
sum(increase(claude_code_claude_code_cost_usage_USD_total[7d] offset 7d))
)
/
sum(increase(claude_code_claude_code_cost_usage_USD_total[7d] offset 7d))
* 100
Result as percentage
Debugging Queries
Check if Metrics Exist
claude_code_claude_code_session_count_total
List All Claude Code Metrics
# Use Prometheus UI or API
curl -s 'http://localhost:9090/api/v1/label/__name__/values' | jq . | grep claude_code
Check Metric Labels
# Returns all label combinations
count by (account_uuid, version, team, environment) (claude_code_claude_code_session_count_total)
Latest Value for All Metrics
# Session count
claude_code_claude_code_session_count_total
# Cost
claude_code_claude_code_cost_usage_USD_total
# Tokens
claude_code_claude_code_token_usage_tokens_total
# LOC
claude_code_claude_code_lines_of_code_count_total
Metrics Cardinality (Number of Time Series)
count(claude_code_claude_code_token_usage_tokens_total)
Recording Rules
Save these as Prometheus recording rules for faster dashboard queries:
groups:
- name: claude_code_aggregations
interval: 1m
rules:
# Daily cost
- record: claude_code:cost_usd:daily
expr: sum(increase(claude_code_claude_code_cost_usage_USD_total[24h]))
# Cost by team
- record: claude_code:cost_usd:daily:by_team
expr: sum by (team) (increase(claude_code_claude_code_cost_usage_USD_total[24h]))
# Cache hit rate
- record: claude_code:cache_hit_rate:daily
expr: |
sum(increase(claude_code_claude_code_token_usage_tokens_total{type="cache_read"}[24h]))
/
sum(increase(claude_code_claude_code_token_usage_tokens_total{type=~"input|cache_creation|cache_read"}[24h]))
* 100
# LOC efficiency
- record: claude_code:loc_per_dollar:daily
expr: |
sum(increase(claude_code_claude_code_lines_of_code_count_total[24h]))
/
sum(increase(claude_code_claude_code_cost_usage_USD_total[24h]))
Then use simplified queries:
# Instead of complex query, just use:
claude_code:cost_usd:daily
claude_code:cost_usd:daily:by_team
Visualization Tips
Time Series Panel
- Use
rate()for smooth trends - Set legend to
{{label_name}}for clarity - Enable "Lines" draw style with opacity
Stat Panel
- Use
lastNotNullfor counters - Use
increase([24h])for daily totals - Add thresholds for color coding
Bar Chart
- Use
sum by (label)for grouping - Sort by value descending
- Limit to top 10 with
topk(10, ...)
Pie Chart
- Calculate percentages with division
- Use
sum by (label)for segments - Limit to top categories
Additional Resources
- Prometheus Query Docs: https://prometheus.io/docs/prometheus/latest/querying/basics/
- PromQL Examples: https://prometheus.io/docs/prometheus/latest/querying/examples/
- Grafana Query Editor: https://grafana.com/docs/grafana/latest/datasources/prometheus/