toad-eye 2.9.2 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/alerts/channels.js +4 -1
- package/dist/alerts/conditions.js +3 -2
- package/dist/alerts/grafana.js +1 -0
- package/dist/alerts/manager.js +2 -0
- package/dist/cli.js +76 -8
- package/dist/core/console-exporter.d.ts +17 -0
- package/dist/core/console-exporter.js +55 -0
- package/dist/core/metrics.d.ts +1 -0
- package/dist/core/metrics.js +12 -0
- package/dist/core/span-end-processor.js +1 -1
- package/dist/core/spans.d.ts +4 -0
- package/dist/core/spans.js +21 -1
- package/dist/core/tracer.js +27 -16
- package/dist/instrumentations/create.js +0 -1
- package/dist/instrumentations/mcp.d.ts +5 -1
- package/dist/instrumentations/mcp.js +15 -6
- package/dist/mcp/client.d.ts +5 -1
- package/dist/mcp/client.js +29 -6
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/metrics.d.ts +1 -0
- package/dist/mcp/metrics.js +11 -0
- package/dist/mcp/middleware.js +14 -4
- package/dist/types/config.d.ts +2 -0
- package/dist/types/metrics.d.ts +2 -0
- package/dist/types/metrics.js +3 -0
- package/package.json +1 -1
- package/templates/docker-compose.yml +4 -4
- package/templates/grafana/dashboards/agent-workflow.json +32 -47
- package/templates/grafana/dashboards/cost-breakdown.json +14 -7
- package/templates/grafana/dashboards/error-drilldown.json +12 -6
- package/templates/grafana/dashboards/finops-attribution.json +39 -8
- package/templates/grafana/dashboards/latency-analysis.json +8 -4
- package/templates/grafana/dashboards/llm-overview.json +22 -11
- package/templates/grafana/dashboards/mcp-analytics.json +177 -43
- package/templates/grafana/dashboards/mcp-e2e.json +198 -51
- package/templates/grafana/dashboards/mcp-server.json +46 -9
- package/templates/grafana/dashboards/model-comparison.json +10 -5
- package/templates/grafana/dashboards/provider-health.json +15 -8
|
@@ -12,8 +12,16 @@
|
|
|
12
12
|
"title": "Total Request Rate",
|
|
13
13
|
"description": "Combined rate of MCP client + server operations",
|
|
14
14
|
"type": "stat",
|
|
15
|
-
"gridPos": {
|
|
16
|
-
|
|
15
|
+
"gridPos": {
|
|
16
|
+
"h": 4,
|
|
17
|
+
"w": 6,
|
|
18
|
+
"x": 0,
|
|
19
|
+
"y": 0
|
|
20
|
+
},
|
|
21
|
+
"datasource": {
|
|
22
|
+
"type": "prometheus",
|
|
23
|
+
"uid": "prometheus"
|
|
24
|
+
},
|
|
17
25
|
"targets": [
|
|
18
26
|
{
|
|
19
27
|
"expr": "sum(rate(gen_ai_mcp_tool_calls_total[5m])) + sum(rate(gen_ai_client_requests_total[5m])) or vector(0)",
|
|
@@ -26,11 +34,21 @@
|
|
|
26
34
|
"decimals": 2,
|
|
27
35
|
"thresholds": {
|
|
28
36
|
"steps": [
|
|
29
|
-
{
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
{
|
|
38
|
+
"color": "green",
|
|
39
|
+
"value": null
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"color": "yellow",
|
|
43
|
+
"value": 50
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"color": "red",
|
|
47
|
+
"value": 100
|
|
48
|
+
}
|
|
32
49
|
]
|
|
33
|
-
}
|
|
50
|
+
},
|
|
51
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
34
52
|
},
|
|
35
53
|
"overrides": []
|
|
36
54
|
}
|
|
@@ -39,11 +57,19 @@
|
|
|
39
57
|
"title": "LLM Avg Latency",
|
|
40
58
|
"description": "Average LLM call duration (client-side)",
|
|
41
59
|
"type": "stat",
|
|
42
|
-
"gridPos": {
|
|
43
|
-
|
|
60
|
+
"gridPos": {
|
|
61
|
+
"h": 4,
|
|
62
|
+
"w": 6,
|
|
63
|
+
"x": 6,
|
|
64
|
+
"y": 0
|
|
65
|
+
},
|
|
66
|
+
"datasource": {
|
|
67
|
+
"type": "prometheus",
|
|
68
|
+
"uid": "prometheus"
|
|
69
|
+
},
|
|
44
70
|
"targets": [
|
|
45
71
|
{
|
|
46
|
-
"expr": "sum(rate(
|
|
72
|
+
"expr": "sum(rate(gen_ai_client_operation_duration_milliseconds_sum[5m])) / sum(rate(gen_ai_client_operation_duration_milliseconds_count[5m])) or vector(0)",
|
|
47
73
|
"refId": "A"
|
|
48
74
|
}
|
|
49
75
|
],
|
|
@@ -53,11 +79,21 @@
|
|
|
53
79
|
"decimals": 0,
|
|
54
80
|
"thresholds": {
|
|
55
81
|
"steps": [
|
|
56
|
-
{
|
|
57
|
-
|
|
58
|
-
|
|
82
|
+
{
|
|
83
|
+
"color": "green",
|
|
84
|
+
"value": null
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"color": "yellow",
|
|
88
|
+
"value": 1000
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"color": "red",
|
|
92
|
+
"value": 5000
|
|
93
|
+
}
|
|
59
94
|
]
|
|
60
|
-
}
|
|
95
|
+
},
|
|
96
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
61
97
|
},
|
|
62
98
|
"overrides": []
|
|
63
99
|
}
|
|
@@ -66,8 +102,16 @@
|
|
|
66
102
|
"title": "Tool Avg Latency",
|
|
67
103
|
"description": "Average MCP tool execution duration (server-side)",
|
|
68
104
|
"type": "stat",
|
|
69
|
-
"gridPos": {
|
|
70
|
-
|
|
105
|
+
"gridPos": {
|
|
106
|
+
"h": 4,
|
|
107
|
+
"w": 6,
|
|
108
|
+
"x": 12,
|
|
109
|
+
"y": 0
|
|
110
|
+
},
|
|
111
|
+
"datasource": {
|
|
112
|
+
"type": "prometheus",
|
|
113
|
+
"uid": "prometheus"
|
|
114
|
+
},
|
|
71
115
|
"targets": [
|
|
72
116
|
{
|
|
73
117
|
"expr": "sum(rate(gen_ai_mcp_tool_duration_sum[5m])) / sum(rate(gen_ai_mcp_tool_duration_count[5m])) or vector(0)",
|
|
@@ -80,11 +124,21 @@
|
|
|
80
124
|
"decimals": 0,
|
|
81
125
|
"thresholds": {
|
|
82
126
|
"steps": [
|
|
83
|
-
{
|
|
84
|
-
|
|
85
|
-
|
|
127
|
+
{
|
|
128
|
+
"color": "green",
|
|
129
|
+
"value": null
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"color": "yellow",
|
|
133
|
+
"value": 500
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"color": "red",
|
|
137
|
+
"value": 2000
|
|
138
|
+
}
|
|
86
139
|
]
|
|
87
|
-
}
|
|
140
|
+
},
|
|
141
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
88
142
|
},
|
|
89
143
|
"overrides": []
|
|
90
144
|
}
|
|
@@ -93,8 +147,16 @@
|
|
|
93
147
|
"title": "End-to-End Error Rate",
|
|
94
148
|
"description": "Combined error rate across LLM + MCP",
|
|
95
149
|
"type": "stat",
|
|
96
|
-
"gridPos": {
|
|
97
|
-
|
|
150
|
+
"gridPos": {
|
|
151
|
+
"h": 4,
|
|
152
|
+
"w": 6,
|
|
153
|
+
"x": 18,
|
|
154
|
+
"y": 0
|
|
155
|
+
},
|
|
156
|
+
"datasource": {
|
|
157
|
+
"type": "prometheus",
|
|
158
|
+
"uid": "prometheus"
|
|
159
|
+
},
|
|
98
160
|
"targets": [
|
|
99
161
|
{
|
|
100
162
|
"expr": "(sum(rate(gen_ai_client_errors_total[5m])) + sum(rate(gen_ai_mcp_tool_errors_total[5m]))) / (sum(rate(gen_ai_client_requests_total[5m])) + sum(rate(gen_ai_mcp_tool_calls_total[5m]))) or vector(0)",
|
|
@@ -107,11 +169,21 @@
|
|
|
107
169
|
"decimals": 2,
|
|
108
170
|
"thresholds": {
|
|
109
171
|
"steps": [
|
|
110
|
-
{
|
|
111
|
-
|
|
112
|
-
|
|
172
|
+
{
|
|
173
|
+
"color": "green",
|
|
174
|
+
"value": null
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"color": "yellow",
|
|
178
|
+
"value": 0.05
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"color": "red",
|
|
182
|
+
"value": 0.1
|
|
183
|
+
}
|
|
113
184
|
]
|
|
114
|
-
}
|
|
185
|
+
},
|
|
186
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
115
187
|
},
|
|
116
188
|
"overrides": []
|
|
117
189
|
}
|
|
@@ -120,11 +192,19 @@
|
|
|
120
192
|
"title": "Latency Breakdown: LLM vs Tool",
|
|
121
193
|
"description": "Compare LLM call latency vs MCP tool execution latency over time",
|
|
122
194
|
"type": "timeseries",
|
|
123
|
-
"gridPos": {
|
|
124
|
-
|
|
195
|
+
"gridPos": {
|
|
196
|
+
"h": 8,
|
|
197
|
+
"w": 12,
|
|
198
|
+
"x": 0,
|
|
199
|
+
"y": 4
|
|
200
|
+
},
|
|
201
|
+
"datasource": {
|
|
202
|
+
"type": "prometheus",
|
|
203
|
+
"uid": "prometheus"
|
|
204
|
+
},
|
|
125
205
|
"targets": [
|
|
126
206
|
{
|
|
127
|
-
"expr": "sum(rate(
|
|
207
|
+
"expr": "sum(rate(gen_ai_client_operation_duration_milliseconds_sum[5m])) / sum(rate(gen_ai_client_operation_duration_milliseconds_count[5m]))",
|
|
128
208
|
"legendFormat": "LLM Avg Latency",
|
|
129
209
|
"refId": "A"
|
|
130
210
|
},
|
|
@@ -143,24 +223,37 @@
|
|
|
143
223
|
"fillOpacity": 20,
|
|
144
224
|
"pointSize": 5,
|
|
145
225
|
"showPoints": "auto"
|
|
146
|
-
}
|
|
226
|
+
},
|
|
227
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
147
228
|
},
|
|
148
229
|
"overrides": [
|
|
149
230
|
{
|
|
150
|
-
"matcher": {
|
|
231
|
+
"matcher": {
|
|
232
|
+
"id": "byName",
|
|
233
|
+
"options": "LLM Avg Latency"
|
|
234
|
+
},
|
|
151
235
|
"properties": [
|
|
152
236
|
{
|
|
153
237
|
"id": "color",
|
|
154
|
-
"value": {
|
|
238
|
+
"value": {
|
|
239
|
+
"fixedColor": "orange",
|
|
240
|
+
"mode": "fixed"
|
|
241
|
+
}
|
|
155
242
|
}
|
|
156
243
|
]
|
|
157
244
|
},
|
|
158
245
|
{
|
|
159
|
-
"matcher": {
|
|
246
|
+
"matcher": {
|
|
247
|
+
"id": "byName",
|
|
248
|
+
"options": "Tool Avg Latency"
|
|
249
|
+
},
|
|
160
250
|
"properties": [
|
|
161
251
|
{
|
|
162
252
|
"id": "color",
|
|
163
|
-
"value": {
|
|
253
|
+
"value": {
|
|
254
|
+
"fixedColor": "blue",
|
|
255
|
+
"mode": "fixed"
|
|
256
|
+
}
|
|
164
257
|
}
|
|
165
258
|
]
|
|
166
259
|
}
|
|
@@ -172,15 +265,25 @@
|
|
|
172
265
|
"placement": "bottom",
|
|
173
266
|
"calcs": ["mean", "max"]
|
|
174
267
|
},
|
|
175
|
-
"tooltip": {
|
|
268
|
+
"tooltip": {
|
|
269
|
+
"mode": "multi"
|
|
270
|
+
}
|
|
176
271
|
}
|
|
177
272
|
},
|
|
178
273
|
{
|
|
179
274
|
"title": "Tool Call Waterfall by Tool",
|
|
180
275
|
"description": "Duration per tool over time — identify slow tools",
|
|
181
276
|
"type": "timeseries",
|
|
182
|
-
"gridPos": {
|
|
183
|
-
|
|
277
|
+
"gridPos": {
|
|
278
|
+
"h": 8,
|
|
279
|
+
"w": 12,
|
|
280
|
+
"x": 12,
|
|
281
|
+
"y": 4
|
|
282
|
+
},
|
|
283
|
+
"datasource": {
|
|
284
|
+
"type": "prometheus",
|
|
285
|
+
"uid": "prometheus"
|
|
286
|
+
},
|
|
184
287
|
"targets": [
|
|
185
288
|
{
|
|
186
289
|
"expr": "sum by (gen_ai_tool_name) (rate(gen_ai_mcp_tool_duration_sum[5m])) / sum by (gen_ai_tool_name) (rate(gen_ai_mcp_tool_duration_count[5m]))",
|
|
@@ -194,9 +297,14 @@
|
|
|
194
297
|
"custom": {
|
|
195
298
|
"drawStyle": "bars",
|
|
196
299
|
"fillOpacity": 60,
|
|
197
|
-
"stacking": {
|
|
300
|
+
"stacking": {
|
|
301
|
+
"mode": "normal"
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"color": {
|
|
305
|
+
"mode": "palette-classic"
|
|
198
306
|
},
|
|
199
|
-
"
|
|
307
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
200
308
|
},
|
|
201
309
|
"overrides": []
|
|
202
310
|
},
|
|
@@ -206,15 +314,25 @@
|
|
|
206
314
|
"placement": "bottom",
|
|
207
315
|
"calcs": ["mean", "sum"]
|
|
208
316
|
},
|
|
209
|
-
"tooltip": {
|
|
317
|
+
"tooltip": {
|
|
318
|
+
"mode": "multi"
|
|
319
|
+
}
|
|
210
320
|
}
|
|
211
321
|
},
|
|
212
322
|
{
|
|
213
323
|
"title": "Error Propagation: LLM vs Tool",
|
|
214
324
|
"description": "Error rates split by LLM errors and MCP tool errors",
|
|
215
325
|
"type": "timeseries",
|
|
216
|
-
"gridPos": {
|
|
217
|
-
|
|
326
|
+
"gridPos": {
|
|
327
|
+
"h": 8,
|
|
328
|
+
"w": 12,
|
|
329
|
+
"x": 0,
|
|
330
|
+
"y": 12
|
|
331
|
+
},
|
|
332
|
+
"datasource": {
|
|
333
|
+
"type": "prometheus",
|
|
334
|
+
"uid": "prometheus"
|
|
335
|
+
},
|
|
218
336
|
"targets": [
|
|
219
337
|
{
|
|
220
338
|
"expr": "sum(rate(gen_ai_client_errors_total[5m]))",
|
|
@@ -236,24 +354,37 @@
|
|
|
236
354
|
"fillOpacity": 30,
|
|
237
355
|
"pointSize": 5,
|
|
238
356
|
"showPoints": "auto"
|
|
239
|
-
}
|
|
357
|
+
},
|
|
358
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
240
359
|
},
|
|
241
360
|
"overrides": [
|
|
242
361
|
{
|
|
243
|
-
"matcher": {
|
|
362
|
+
"matcher": {
|
|
363
|
+
"id": "byName",
|
|
364
|
+
"options": "LLM Errors"
|
|
365
|
+
},
|
|
244
366
|
"properties": [
|
|
245
367
|
{
|
|
246
368
|
"id": "color",
|
|
247
|
-
"value": {
|
|
369
|
+
"value": {
|
|
370
|
+
"fixedColor": "red",
|
|
371
|
+
"mode": "fixed"
|
|
372
|
+
}
|
|
248
373
|
}
|
|
249
374
|
]
|
|
250
375
|
},
|
|
251
376
|
{
|
|
252
|
-
"matcher": {
|
|
377
|
+
"matcher": {
|
|
378
|
+
"id": "byName",
|
|
379
|
+
"options": "Tool Errors"
|
|
380
|
+
},
|
|
253
381
|
"properties": [
|
|
254
382
|
{
|
|
255
383
|
"id": "color",
|
|
256
|
-
"value": {
|
|
384
|
+
"value": {
|
|
385
|
+
"fixedColor": "purple",
|
|
386
|
+
"mode": "fixed"
|
|
387
|
+
}
|
|
257
388
|
}
|
|
258
389
|
]
|
|
259
390
|
}
|
|
@@ -265,15 +396,25 @@
|
|
|
265
396
|
"placement": "bottom",
|
|
266
397
|
"calcs": ["sum"]
|
|
267
398
|
},
|
|
268
|
-
"tooltip": {
|
|
399
|
+
"tooltip": {
|
|
400
|
+
"mode": "multi"
|
|
401
|
+
}
|
|
269
402
|
}
|
|
270
403
|
},
|
|
271
404
|
{
|
|
272
405
|
"title": "Cost: LLM Calls",
|
|
273
406
|
"description": "Total LLM cost over time — visible when tools call LLMs via sampling",
|
|
274
407
|
"type": "timeseries",
|
|
275
|
-
"gridPos": {
|
|
276
|
-
|
|
408
|
+
"gridPos": {
|
|
409
|
+
"h": 8,
|
|
410
|
+
"w": 12,
|
|
411
|
+
"x": 12,
|
|
412
|
+
"y": 12
|
|
413
|
+
},
|
|
414
|
+
"datasource": {
|
|
415
|
+
"type": "prometheus",
|
|
416
|
+
"uid": "prometheus"
|
|
417
|
+
},
|
|
277
418
|
"targets": [
|
|
278
419
|
{
|
|
279
420
|
"expr": "sum by (gen_ai_request_model) (rate(gen_ai_client_request_cost_USD_sum[5m]))",
|
|
@@ -292,7 +433,10 @@
|
|
|
292
433
|
"pointSize": 5,
|
|
293
434
|
"showPoints": "auto"
|
|
294
435
|
},
|
|
295
|
-
"color": {
|
|
436
|
+
"color": {
|
|
437
|
+
"mode": "palette-classic"
|
|
438
|
+
},
|
|
439
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
296
440
|
},
|
|
297
441
|
"overrides": []
|
|
298
442
|
},
|
|
@@ -302,7 +446,9 @@
|
|
|
302
446
|
"placement": "bottom",
|
|
303
447
|
"calcs": ["sum"]
|
|
304
448
|
},
|
|
305
|
-
"tooltip": {
|
|
449
|
+
"tooltip": {
|
|
450
|
+
"mode": "multi"
|
|
451
|
+
}
|
|
306
452
|
}
|
|
307
453
|
}
|
|
308
454
|
],
|
|
@@ -315,6 +461,7 @@
|
|
|
315
461
|
"from": "now-1h",
|
|
316
462
|
"to": "now"
|
|
317
463
|
},
|
|
464
|
+
"refresh": "30s",
|
|
318
465
|
"timepicker": {},
|
|
319
466
|
"timezone": "browser",
|
|
320
467
|
"title": "MCP End-to-End",
|
|
@@ -46,7 +46,8 @@
|
|
|
46
46
|
"value": 100
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
|
-
}
|
|
49
|
+
},
|
|
50
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
50
51
|
},
|
|
51
52
|
"overrides": []
|
|
52
53
|
}
|
|
@@ -89,7 +90,8 @@
|
|
|
89
90
|
"value": 2000
|
|
90
91
|
}
|
|
91
92
|
]
|
|
92
|
-
}
|
|
93
|
+
},
|
|
94
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
93
95
|
},
|
|
94
96
|
"overrides": []
|
|
95
97
|
}
|
|
@@ -132,7 +134,8 @@
|
|
|
132
134
|
"value": 0.1
|
|
133
135
|
}
|
|
134
136
|
]
|
|
135
|
-
}
|
|
137
|
+
},
|
|
138
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
136
139
|
},
|
|
137
140
|
"overrides": []
|
|
138
141
|
}
|
|
@@ -167,7 +170,36 @@
|
|
|
167
170
|
"value": null
|
|
168
171
|
}
|
|
169
172
|
]
|
|
170
|
-
}
|
|
173
|
+
},
|
|
174
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
175
|
+
},
|
|
176
|
+
"overrides": []
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"title": "Tool Hallucination Rate",
|
|
181
|
+
"description": "Agent tried to call a non-existent tool (JSON-RPC -32601). Spikes indicate the LLM lost track of available tools.",
|
|
182
|
+
"type": "stat",
|
|
183
|
+
"gridPos": { "h": 3, "w": 24, "x": 0, "y": 4 },
|
|
184
|
+
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
185
|
+
"targets": [
|
|
186
|
+
{
|
|
187
|
+
"expr": "sum(rate(gen_ai_mcp_tool_hallucinations_total[5m])) or vector(0)",
|
|
188
|
+
"legendFormat": "hallucinations/s",
|
|
189
|
+
"refId": "A"
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
"fieldConfig": {
|
|
193
|
+
"defaults": {
|
|
194
|
+
"unit": "reqps",
|
|
195
|
+
"thresholds": {
|
|
196
|
+
"steps": [
|
|
197
|
+
{ "color": "green", "value": null },
|
|
198
|
+
{ "color": "yellow", "value": 0.01 },
|
|
199
|
+
{ "color": "red", "value": 0.1 }
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
"noValue": "No hallucinations detected"
|
|
171
203
|
},
|
|
172
204
|
"overrides": []
|
|
173
205
|
}
|
|
@@ -201,7 +233,8 @@
|
|
|
201
233
|
"fillOpacity": 15,
|
|
202
234
|
"pointSize": 5,
|
|
203
235
|
"showPoints": "auto"
|
|
204
|
-
}
|
|
236
|
+
},
|
|
237
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
205
238
|
},
|
|
206
239
|
"overrides": []
|
|
207
240
|
},
|
|
@@ -250,7 +283,8 @@
|
|
|
250
283
|
"fillOpacity": 10,
|
|
251
284
|
"pointSize": 5,
|
|
252
285
|
"showPoints": "auto"
|
|
253
|
-
}
|
|
286
|
+
},
|
|
287
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
254
288
|
},
|
|
255
289
|
"overrides": []
|
|
256
290
|
},
|
|
@@ -297,7 +331,8 @@
|
|
|
297
331
|
},
|
|
298
332
|
"color": {
|
|
299
333
|
"mode": "palette-classic"
|
|
300
|
-
}
|
|
334
|
+
},
|
|
335
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
301
336
|
},
|
|
302
337
|
"overrides": []
|
|
303
338
|
},
|
|
@@ -341,7 +376,8 @@
|
|
|
341
376
|
"fillOpacity": 15,
|
|
342
377
|
"pointSize": 5,
|
|
343
378
|
"showPoints": "auto"
|
|
344
|
-
}
|
|
379
|
+
},
|
|
380
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
345
381
|
},
|
|
346
382
|
"overrides": []
|
|
347
383
|
},
|
|
@@ -423,7 +459,8 @@
|
|
|
423
459
|
"defaults": {
|
|
424
460
|
"custom": {
|
|
425
461
|
"align": "center"
|
|
426
|
-
}
|
|
462
|
+
},
|
|
463
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
427
464
|
},
|
|
428
465
|
"overrides": [
|
|
429
466
|
{
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"drawStyle": "line",
|
|
36
36
|
"fillOpacity": 15,
|
|
37
37
|
"lineWidth": 2
|
|
38
|
-
}
|
|
38
|
+
},
|
|
39
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
39
40
|
},
|
|
40
41
|
"overrides": []
|
|
41
42
|
}
|
|
@@ -67,7 +68,8 @@
|
|
|
67
68
|
"drawStyle": "line",
|
|
68
69
|
"fillOpacity": 15,
|
|
69
70
|
"lineWidth": 2
|
|
70
|
-
}
|
|
71
|
+
},
|
|
72
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
71
73
|
},
|
|
72
74
|
"overrides": []
|
|
73
75
|
}
|
|
@@ -99,7 +101,8 @@
|
|
|
99
101
|
"drawStyle": "line",
|
|
100
102
|
"fillOpacity": 15,
|
|
101
103
|
"lineWidth": 2
|
|
102
|
-
}
|
|
104
|
+
},
|
|
105
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
103
106
|
},
|
|
104
107
|
"overrides": []
|
|
105
108
|
}
|
|
@@ -131,7 +134,8 @@
|
|
|
131
134
|
"drawStyle": "line",
|
|
132
135
|
"fillOpacity": 15,
|
|
133
136
|
"lineWidth": 2
|
|
134
|
-
}
|
|
137
|
+
},
|
|
138
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
135
139
|
},
|
|
136
140
|
"overrides": []
|
|
137
141
|
}
|
|
@@ -163,7 +167,8 @@
|
|
|
163
167
|
"drawStyle": "line",
|
|
164
168
|
"fillOpacity": 15,
|
|
165
169
|
"lineWidth": 2
|
|
166
|
-
}
|
|
170
|
+
},
|
|
171
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
167
172
|
},
|
|
168
173
|
"overrides": []
|
|
169
174
|
}
|
|
@@ -83,7 +83,8 @@
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
]
|
|
86
|
+
],
|
|
87
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
87
88
|
},
|
|
88
89
|
"overrides": []
|
|
89
90
|
}
|
|
@@ -113,7 +114,8 @@
|
|
|
113
114
|
"unit": "reqps",
|
|
114
115
|
"custom": {
|
|
115
116
|
"fillOpacity": 15
|
|
116
|
-
}
|
|
117
|
+
},
|
|
118
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
117
119
|
},
|
|
118
120
|
"overrides": []
|
|
119
121
|
}
|
|
@@ -160,13 +162,14 @@
|
|
|
160
162
|
"value": 0.5
|
|
161
163
|
}
|
|
162
164
|
]
|
|
163
|
-
}
|
|
165
|
+
},
|
|
166
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
164
167
|
},
|
|
165
168
|
"overrides": []
|
|
166
169
|
}
|
|
167
170
|
},
|
|
168
171
|
{
|
|
169
|
-
"title": "Error Breakdown by
|
|
172
|
+
"title": "Error Breakdown by Model",
|
|
170
173
|
"type": "timeseries",
|
|
171
174
|
"gridPos": {
|
|
172
175
|
"h": 8,
|
|
@@ -180,8 +183,8 @@
|
|
|
180
183
|
},
|
|
181
184
|
"targets": [
|
|
182
185
|
{
|
|
183
|
-
"expr": "sum by (gen_ai_provider_name,
|
|
184
|
-
"legendFormat": "{{gen_ai_provider_name}} — {{
|
|
186
|
+
"expr": "sum by (gen_ai_provider_name, gen_ai_request_model) (rate(gen_ai_client_errors_total{job=~\"$service\", gen_ai_provider_name=~\"$provider\"}[5m]))",
|
|
187
|
+
"legendFormat": "{{gen_ai_provider_name}} — {{gen_ai_request_model}}",
|
|
185
188
|
"refId": "A"
|
|
186
189
|
}
|
|
187
190
|
],
|
|
@@ -193,7 +196,8 @@
|
|
|
193
196
|
"stacking": {
|
|
194
197
|
"mode": "normal"
|
|
195
198
|
}
|
|
196
|
-
}
|
|
199
|
+
},
|
|
200
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
197
201
|
},
|
|
198
202
|
"overrides": []
|
|
199
203
|
}
|
|
@@ -241,7 +245,8 @@
|
|
|
241
245
|
"fieldConfig": {
|
|
242
246
|
"defaults": {
|
|
243
247
|
"unit": "percentunit",
|
|
244
|
-
"decimals": 2
|
|
248
|
+
"decimals": 2,
|
|
249
|
+
"noValue": "No data yet — run: npx toad-eye demo"
|
|
245
250
|
},
|
|
246
251
|
"overrides": []
|
|
247
252
|
}
|
|
@@ -276,6 +281,7 @@
|
|
|
276
281
|
},
|
|
277
282
|
"query": "label_values(gen_ai_client_requests_total, gen_ai_provider_name)",
|
|
278
283
|
"includeAll": true,
|
|
284
|
+
"allValue": ".*",
|
|
279
285
|
"multi": true,
|
|
280
286
|
"current": {
|
|
281
287
|
"text": "All",
|
|
@@ -289,6 +295,7 @@
|
|
|
289
295
|
"from": "now-6h",
|
|
290
296
|
"to": "now"
|
|
291
297
|
},
|
|
298
|
+
"refresh": "30s",
|
|
292
299
|
"timepicker": {},
|
|
293
300
|
"timezone": "utc",
|
|
294
301
|
"title": "toad-eye / Provider Health",
|