Created December 14, 2025 00:43
Save mikelane/59d89da1c387f3470f488388dd3ce120 to your computer and use it in GitHub Desktop.
SigNoz dashboard for claude code metrics including time leverage and cost leverage metrics.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters| { | | | "description": "Monitor Claude Code usage, costs, tokens, and productivity metrics", | | | "layout": [ | | | { | | | "h": 1, | | | "i": "row-overview", | | | "moved": false, | | | "static": false, | | | "w": 12, | | | "x": 0, | | | "y": 0 | | | }, | | | { | | | "h": 2, | | | "i": "session-count", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 0, | | | "y": 1 | | | }, | | | { | | | "h": 2, | | | "i": "active-time", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 2, | | | "y": 1 | | | }, | | | { | | | "h": 2, | | | "i": "lines-of-code", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 4, | | | "y": 1 | | | }, | | | { | | | "h": 2, | | | "i": "tool-decisions", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 6, | | | "y": 1 | | | }, | | | { | | | "h": 2, | | | "i": "commits", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 8, | | | "y": 1 | | | }, | | | { | | | "h": 2, | | | "i": "pull-requests", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 10, | | | "y": 1 | | | }, | | | { | | | "h": 5, | | | "i": "token-usage", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 0, | | | "y": 3 | | | }, | | | { | | | "h": 5, | | | "i": "cost-usage", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 6, | | | "y": 3 | | | }, | | | { | | | "h": 1, | | | "i": "dropping-elem", | | | "isDraggable": true, | | | "moved": false, | | | "static": false, | | | "w": 1, | | | "x": 5, | | | "y": 8 | | | }, | | | { | | | "h": 1, | | | "i": "row-tokens", | | | "moved": false, | | | "static": false, | | | "w": 12, | | | "x": 0, | | | "y": 9 | | | }, | | | { | | | "h": 4, | | | "i": "token-by-type", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 0, | | | "y": 10 | | | }, | | | { | | | "h": 4, | | | "i": "token-by-model", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 6, | | | "y": 10 | | | }, | | | { | | | "h": 1, | | | "i": "row-productivity", | | | "moved": false, | | | "static": false, | | | "w": 12, | | | "x": 0, | | | "y": 14 | | | }, | | | { | | | "h": 4, | | | "i": "cost-by-model", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 0, | | | "y": 15 | | | }, | | | { | | | "h": 4, | | | "i": "cli-vs-user-time", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 6, | | | "y": 15 | | | }, | | | { | | | "h": 4, | | | "i": "cache-efficiency", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 0, | | | "y": 19 | | | }, | | | { | | | "h": 4, | | | "i": "peak-leverage", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 6, | | | "y": 19 | | | }, | | | { | | | "h": 4, | | | "i": "productivity-ratio", | | | "moved": false, | | | "static": false, | | | "w": 4, | | | "x": 8, | | | "y": 19 | | | }, | | | { | | | "h": 1, | | | "i": "row-cost", | | | "moved": false, | | | "static": false, | | | "w": 12, | | | "x": 0, | | | "y": 23 | | | }, | | | { | | | "h": 4, | | | "i": "api-cost", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 0, | | | "y": 24 | | | }, | | | { | | | "h": 4, | | | "i": "cost-leverage", | | | "moved": false, | | | "static": false, | | | "w": 2, | | | "x": 2, | | | "y": 24 | | | }, | | | { | | | "h": 4, | | | "i": "cumulative-cost", | | | "moved": false, | | | "static": false, | | | "w": 8, | | | "x": 4, | | | "y": 24 | | | }, | | | { | | | "h": 1, | | | "i": "row-logs", | | | "moved": false, | | | "static": false, | | | "w": 12, | | | "x": 0, | | | "y": 28 | | | }, | | | { | | | "h": 5, | | | "i": "tool-usage-frequency", | | | "moved": false, | | | "static": false, | | | "w": 6, | | | "x": 0, | | | "y": 29 | | | }, | | | { | | | "h": 5, | | | "i": "tool-success-rate", | | | "moved": false, | | | "static": false, | | | "w": 3, | | | "x": 6, | | | "y": 29 | | | }, | | | { | | | "h": 5, | | | "i": "api-requests-table", | | | "moved": false, | | | "static": false, | | | "w": 3, | | | "x": 9, | | | "y": 29 | | | } | | | ], | |
| "panelMap": {}, | |
| "tags": [ | |
| "claude", | | | "ai", | | | "opentelemetry" | | | ], | | | "title": "Claude Code Metrics", | |
| "uuid": "019b18fc-a5c9-739d-85a5-53ee68f68a08", | |
| "variables": {}, | |
| "version": "v8", | | | "widgets": [ | | | { | | | "id": "row-overview", | | | "panelTypes": "row", | | | "query": {}, | | | "title": "Overview" | | | }, | | | { | | | "description": "Number of Claude Code sessions", | | | "id": "session-count", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.session.count", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Sessions", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Sessions" | | | }, | | | { | | | "description": "Total active time in Claude Code (seconds)", | | | "id": "active-time", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Active Time", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Active Time" | | | }, | | | { | | | "description": "Lines of code modified", | | | "id": "lines-of-code", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.lines_of_code.count", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Lines", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Lines Changed" | | | }, | | | { | | | "description": "Accept/reject decisions for code edits", | | | "id": "tool-decisions", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.code_edit_tool.decision", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Decisions", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Tool Calls" | | | }, | | | { | | | "description": "Git commits created", | | | "id": "commits", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.commit.count", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Commits", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Commits" | | | }, | | | { | | | "description": "Pull requests created", | | | "id": "pull-requests", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.pull_request.count", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "PRs", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "PRs" | | | }, | | | { | | | "description": "Total tokens consumed over time", | | | "id": "token-usage", | | | "panelTypes": "graph", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.token.usage", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Tokens", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Token Usage Over Time" | | | }, | | | { | | | "description": "Cost accumulation over time", | | | "id": "cost-usage", | | | "panelTypes": "graph", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.cost.usage", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | |
| "groupBy": [], | |
| "legend": "Cost (USD)", | |
| "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Cost Over Time (USD)" | | | }, | | | { | | | "id": "row-tokens", | | | "panelTypes": "row", | | | "query": {}, | | | "title": "Token Breakdown" | | | }, | | | { | | | "description": "Input, output, cache read, cache creation", | | | "id": "token-by-type", | | | "panelTypes": "bar", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.token.usage", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [ | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | } | | | ], | | | "legend": "{{type}}", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Tokens by Type" | | | }, | | | { | | | "description": "Token consumption by model", | | | "id": "token-by-model", | | | "panelTypes": "bar", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.token.usage", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [ | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "model", | | | "type": "tag" | | | } | | | ], | | | "legend": "{{model}}", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Tokens by Model" | | | }, | | | { | | | "id": "row-productivity", | | | "panelTypes": "row", | | | "query": {}, | | | "title": "Cost & Productivity" | | | }, | | | { | | | "description": "Cost breakdown by model", | | | "id": "cost-by-model", | | | "panelTypes": "bar", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.cost.usage", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [ | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "model", | | | "type": "tag" | | | } | | | ], | | | "legend": "{{model}}", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Cost by Model" | | | }, | | | { | | | "description": "Time spent by Claude (CLI) vs waiting for user input", | | | "id": "cli-vs-user-time", | | | "panelTypes": "graph", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [], | |
| "op": "AND" | | | }, | | | "groupBy": [ | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | } | | | ], | | | "legend": "{{type}}", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "CLI vs User Time" | | | }, | | | { | | | "description": "Percentage of tokens served from cache", | | | "id": "cache-efficiency", | | | "panelTypes": "graph", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.token.usage", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "cacheRead" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Cache Read", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | }, | | | { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.token.usage", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "B", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "input" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "Input", | | | "queryName": "B", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "rate" | | | } | | | ], | | | "queryFormulas": [ | | | { | | | "disabled": false, | | | "expression": "(A / (A + B)) * 100", | | | "legend": "Cache Efficiency %", | | | "queryName": "F1" | | | } | | | ] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Cache Efficiency %" | | | }, | | | { | |
| "description": "CLI:User time ratio (e.g. 350 = Claude worked 350x more)", | |
| "id": "peak-leverage", | |
| "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "A", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "cli" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "", | | | "queryName": "A", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | }, | | | { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": false, | | | "expression": "B", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "user" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "", | | | "queryName": "B", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [ | | | { | | | "disabled": false, | | | "expression": "A / B", | | | "legend": "Usage Leverage", | | | "queryName": "F1" | | | } | | | ] | | | }, | | | "queryType": "builder" | | | }, | | | "thresholds": [], | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Usage Leverage", | | | "yAxisUnit": "none" | | | }, | | | { | | | "colorMap": { | | | "F1": "#22C55E", | | | "F15": "#F97316", | | | "F5": "#3B82F6" | | | }, | | | "customLegendColors": { | | | "15m": "#f97316", | | | "1m": "#22c55e", | | | "5m": "#3b82f6" | | | }, | | | "description": "Rolling CLI:User ratio at 1m, 5m, and 15m windows", | | | "id": "productivity-ratio", | | | "panelTypes": "graph", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "A1", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "cli" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "CLI 1m", | | | "queryName": "A1", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | }, | | | { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "B1", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "user" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "User 1m", | | | "queryName": "B1", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 60, | | | "timeAggregation": "increase" | | | }, | | | { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "A5", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "cli" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "CLI 5m", | | | "queryName": "A5", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 300, | | | "timeAggregation": "increase" | | | }, | | | { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "B5", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "user" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "User 5m", | | | "queryName": "B5", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 300, | | | "timeAggregation": "increase" | | | }, | | | { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "A15", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "cli" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "CLI 15m", | | | "queryName": "A15", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 900, | | | "timeAggregation": "increase" | | | }, | | | { | | | "aggregateAttribute": { | | | "dataType": "float64", | | | "isColumn": true, | | | "key": "claude_code.active_time.total", | | | "type": "Sum" | | | }, | | | "aggregateOperator": "sum", | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "B15", | |
| "filters": { | |
| "items": [ | |
| { | | | "key": { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "type", | | | "type": "tag" | | | }, | | | "op": "=", | | | "value": "user" | | | } | | | ], | | | "op": "AND" | | | }, | | | "groupBy": [], | | | "legend": "User 15m", | | | "queryName": "B15", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "stepInterval": 900, | | | "timeAggregation": "increase" | | | } | | | ], | | | "queryFormulas": [ | | | { | | | "color": "#22C55E", | | | "disabled": false, | | | "expression": "A1 / B1", | | | "legend": "1m", | | | "queryName": "F1" | | | }, | | | { | | | "color": "#3B82F6", | | | "disabled": false, | | | "expression": "A5 / B5", | | | "legend": "5m", | | | "queryName": "F5" | | | }, | | | { | | | "color": "#F97316", | | | "disabled": false, | | | "expression": "A15 / B15", | | | "legend": "15m", | | | "queryName": "F15" | | | } | | | ] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Leverage Over Time" | | | }, | | | { | | | "id": "row-cost", | | | "panelTypes": "row", | |
| "query": {}, | |
| "title": "Cost Analysis (vs $200/mo Claude Max)" | |
| }, | | | { | | | "description": "Total hypothetical API cost for selected window", | | | "id": "api-cost", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [], | |
| "queryFormulas": [] | |
| }, | | | "clickhouse_sql": [ | | | { | | | "disabled": false, | | | "legend": "Cost ($)", | | | "name": "A", | | | "query": "SELECT sum(value) as value FROM signoz_metrics.distributed_samples_v4 WHERE metric_name = 'claude_code.cost.usage' AND unix_milli >= {{.start_timestamp_ms}} AND unix_milli <= {{.end_timestamp_ms}}" | | | } | | | ], | | | "queryType": "clickhouse_sql" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "API Cost (Total)" | | | }, | | | { | | | "description": "API cost / Max plan cost. >1 = saving money.", | | | "id": "cost-leverage", | | | "panelTypes": "value", | |
| "query": { | |
| "builder": { | |
| "queryData": [], | |
| "queryFormulas": [] | |
| }, | | | "clickhouse_sql": [ | | | { | | | "disabled": false, | | | "legend": "Leverage (x)", | | | "name": "A", | | | "query": "SELECT sum(value) / (({{.end_timestamp_ms}} - {{.start_timestamp_ms}}) / 1000 * 0.0000760531) as value FROM signoz_metrics.distributed_samples_v4 WHERE metric_name = 'claude_code.cost.usage' AND unix_milli >= {{.start_timestamp_ms}} AND unix_milli <= {{.end_timestamp_ms}}" | | | } | | | ], | | | "queryType": "clickhouse_sql" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Cost Leverage" | | | }, | | | { | | | "bucketCount": 30, | | | "bucketWidth": 0, | | | "colorMap": { | | | "F1": "#22C55E", | | | "F15": "#F97316", | | | "F5": "#3B82F6" | | | }, | |
| "columnUnits": {}, | |
| "contextLinks": { | |
| "linksData": [] | |
| }, | | | "customLegendColors": { | | | "15m": "#f97316", | | | "1m": "#22c55e", | | | "5m": "#3b82f6" | | | }, | | | "decimalPrecision": 2, | | | "description": "Rolling cost leverage at 1m, 5m, and 15m windows", | | | "fillSpans": false, | |
| "graphStyle": { | |
| "colors": [ | |
| "#22C55E", | | | "#3B82F6", | | | "#F97316" | | | ] | | | }, | | | "id": "cumulative-cost", | | | "isLogScale": false, | | | "legendPosition": "bottom", | | | "mergeAllActiveQueries": false, | | | "nullZeroValues": "zero", | | | "opacity": "1", | | | "panelTypes": "graph", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregations": [ | | | { | | | "metricName": "claude_code.cost.usage", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "timeAggregation": "sum" | | | } | | | ], | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "A1", | | | "filter": { | | | "expression": "" | | | }, | |
| "functions": [], | |
| "groupBy": [], | |
| "having": [], | |
| "legend": "Cost 1m", | | | "limit": null, | | | "orderBy": [], | | | "queryName": "A1", | | | "source": "", | | | "stepInterval": 60 | | | }, | | | { | | | "aggregations": [ | | | { | | | "metricName": "claude_code.cost.usage", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "timeAggregation": "sum" | | | } | | | ], | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "A5", | | | "filter": { | | | "expression": "" | | | }, | |
| "functions": [], | |
| "groupBy": [], | |
| "having": [], | |
| "legend": "Cost 5m", | | | "limit": null, | | | "orderBy": [], | | | "queryName": "A5", | | | "source": "", | | | "stepInterval": 300 | | | }, | | | { | | | "aggregations": [ | | | { | | | "metricName": "claude_code.cost.usage", | | | "reduceTo": "sum", | | | "spaceAggregation": "sum", | | | "timeAggregation": "sum" | | | } | | | ], | | | "dataSource": "metrics", | | | "disabled": true, | | | "expression": "A15", | | | "filter": { | | | "expression": "" | | | }, | |
| "functions": [], | |
| "groupBy": [], | |
| "having": [], | |
| "legend": "Cost 15m", | | | "limit": null, | | | "orderBy": [], | | | "queryName": "A15", | | | "source": "", | | | "stepInterval": 900 | | | } | | | ], | | | "queryFormulas": [ | | | { | | | "color": "#22C55E", | | | "disabled": false, | | | "expression": "A1 / 0.004563186", | | | "legend": "1m", | | | "queryName": "F1" | | | }, | | | { | | | "color": "#3B82F6", | | | "disabled": false, | | | "expression": "A5 / 0.02281593", | | | "legend": "5m", | | | "queryName": "F5" | | | }, | | | { | | | "color": "#F97316", | | | "disabled": false, | | | "expression": "A15 / 0.06844779", | | | "legend": "15m", | | | "queryName": "F15" | | | } | | | ] | | | }, | | | "clickhouse_sql": [ | | | { | | | "disabled": false, | | | "legend": "", | | | "name": "A", | | | "query": "" | | | } | | | ], | |
| "id": "0226fa39-8082-4b00-84c7-00a98ebf7f59", | |
| "promql": [ | |
| { | | | "disabled": false, | | | "legend": "", | | | "name": "A", | | | "query": "" | | | } | | | ], | | | "queryType": "builder" | | | }, | |
| "selectedLogFields": [], | |
| "selectedTracesFields": [], | |
| "softMax": 0, | | | "softMin": 0, | | | "stackedBarChart": false, | | | "thresholds": [ | | | { | | | "color": "#EF4444", | | | "isEditEnabled": false, | | | "label": "Break-even", | | | "value": 1 | | | } | | | ], | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Cost Leverage Over Time", | | | "yAxisUnit": "none" | | | }, | | | { | | | "id": "row-logs", | | | "panelTypes": "row", | |
| "query": {}, | |
| "title": "Log Insights (from Events)" | |
| }, | | | { | | | "description": "Which tools are used most often", | | | "id": "tool-usage-frequency", | | | "panelTypes": "bar", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateOperator": "count", | | | "dataSource": "logs", | | | "disabled": false, | | | "expression": "A", | | | "filter": { | | | "expression": "body = 'claude_code.tool_result'" | | | }, | | | "groupBy": [ | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "tool_name", | | | "type": "tag" | | | } | | | ], | | | "legend": "{{tool_name}}", | | | "queryName": "A", | | | "stepInterval": 60 | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Tool Usage Frequency" | | | }, | | | { | | | "description": "Success vs failure rate", | | | "id": "tool-success-rate", | | | "panelTypes": "pie", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateOperator": "count", | | | "dataSource": "logs", | | | "disabled": false, | | | "expression": "A", | | | "filter": { | | | "expression": "body = 'claude_code.tool_result'" | | | }, | | | "groupBy": [ | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "success", | | | "type": "tag" | | | } | | | ], | | | "legend": "{{success}}", | | | "queryName": "A", | | | "stepInterval": 60 | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Tool Success" | | | }, | | | { | | | "description": "Recent API calls with cost", | | | "id": "api-requests-table", | | | "panelTypes": "list", | |
| "query": { | |
| "builder": { | |
| "queryData": [ | |
| { | | | "aggregateOperator": "noop", | | | "dataSource": "logs", | | | "disabled": false, | | | "expression": "A", | | | "filter": { | | | "expression": "body = 'claude_code.api_request'" | | | }, | | | "limit": 10, | | | "orderBy": [ | | | { | | | "columnName": "timestamp", | | | "order": "desc" | | | }, | | | { | | | "columnName": "id", | | | "order": "desc" | | | } | | | ], | | | "queryName": "A", | | | "selectColumns": [ | | | { | | | "dataType": "string", | | | "isColumn": true, | | | "key": "timestamp", | | | "type": "tag" | | | }, | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "model", | | | "type": "tag" | | | }, | | | { | | | "dataType": "string", | | | "isColumn": false, | | | "key": "cost_usd", | | | "type": "tag" | | | } | | | ], | | | "stepInterval": 60 | | | } | | | ], | | | "queryFormulas": [] | | | }, | | | "queryType": "builder" | | | }, | | | "timePreferance": "GLOBAL_TIME", | | | "title": "Recent API Calls" | | | } | | | ] | | | } |