1928 lines
61 KiB
YAML
1928 lines
61 KiB
YAML
# services/monitoring/grafana-dashboard-ai.yaml
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: grafana-dashboard-ai
|
|
labels:
|
|
grafana_dashboard: "1"
|
|
data:
|
|
atlas-ai.json: |
|
|
{
|
|
"uid": "atlas-ai",
|
|
"title": "Atlas AI Operations",
|
|
"folderUid": "atlas-internal",
|
|
"editable": true,
|
|
"panels": [
|
|
{
|
|
"id": 1,
|
|
"type": "stat",
|
|
"title": "Codex 5h Remaining",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((min by (provider) (last_over_time(atlas_ai_quota_remaining_percent{provider=\"openai\",window=\"five_hour\"}[20m])) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"openai\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 0
|
|
},
|
|
{
|
|
"color": "dark-orange",
|
|
"value": 15
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 30
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 50
|
|
}
|
|
]
|
|
},
|
|
"unit": "percent",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Lowest remaining percentage across the provider's active first-party quota buckets for this window. This conservative value shows the limit most likely to constrain new work. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 2,
|
|
"type": "stat",
|
|
"title": "Codex 5h Reset In",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 4,
|
|
"y": 0
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((clamp_min(min by (provider) (last_over_time(atlas_ai_quota_reset_timestamp_seconds{provider=\"openai\",window=\"five_hour\"}[20m])) - time(), 0) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"openai\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-blue",
|
|
"value": 0
|
|
}
|
|
]
|
|
},
|
|
"unit": "s",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Time until the earliest active first-party quota reset for this provider and window. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 3,
|
|
"type": "stat",
|
|
"title": "Codex 7d Remaining",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 8,
|
|
"y": 0
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((min by (provider) (last_over_time(atlas_ai_quota_remaining_percent{provider=\"openai\",window=\"seven_day\"}[20m])) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"openai\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 0
|
|
},
|
|
{
|
|
"color": "dark-orange",
|
|
"value": 15
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 30
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 50
|
|
}
|
|
]
|
|
},
|
|
"unit": "percent",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Lowest remaining percentage across the provider's active first-party quota buckets for this window. This conservative value shows the limit most likely to constrain new work. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 4,
|
|
"type": "stat",
|
|
"title": "Codex 7d Reset In",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 12,
|
|
"y": 0
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((clamp_min(min by (provider) (last_over_time(atlas_ai_quota_reset_timestamp_seconds{provider=\"openai\",window=\"seven_day\"}[20m])) - time(), 0) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"openai\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"openai\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-blue",
|
|
"value": 0
|
|
}
|
|
]
|
|
},
|
|
"unit": "s",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Time until the earliest active first-party quota reset for this provider and window. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 5,
|
|
"type": "stat",
|
|
"title": "Codex Routed Tokens (24h)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 16,
|
|
"y": 0
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "(sum(increase(switchyard_prompt_tokens_total{model=~\"(route|worker)/codex/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_cached_tokens_total{model=~\"(route|worker)/codex/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_cache_creation_tokens_total{model=~\"(route|worker)/codex/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_reasoning_tokens_total{model=~\"(route|worker)/codex/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_completion_tokens_total{model=~\"(route|worker)/codex/.+\"}[24h])) or on() vector(0))",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "rgba(115, 115, 115, 1)",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 1
|
|
}
|
|
]
|
|
},
|
|
"unit": "short",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 0
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Prompt, cache-read, cache-creation, reasoning, and completion tokens observed by Switchyard for this provider, including interactive and worker routes."
|
|
},
|
|
{
|
|
"id": 6,
|
|
"type": "stat",
|
|
"title": "Codex Routed Tokens (7d)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 20,
|
|
"y": 0
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "(sum(increase(switchyard_prompt_tokens_total{model=~\"(route|worker)/codex/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_cached_tokens_total{model=~\"(route|worker)/codex/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_cache_creation_tokens_total{model=~\"(route|worker)/codex/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_reasoning_tokens_total{model=~\"(route|worker)/codex/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_completion_tokens_total{model=~\"(route|worker)/codex/.+\"}[7d])) or on() vector(0))",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "rgba(115, 115, 115, 1)",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 1
|
|
}
|
|
]
|
|
},
|
|
"unit": "short",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 0
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Prompt, cache-read, cache-creation, reasoning, and completion tokens observed by Switchyard for this provider, including interactive and worker routes."
|
|
},
|
|
{
|
|
"id": 7,
|
|
"type": "stat",
|
|
"title": "Claude 5h Remaining",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 0,
|
|
"y": 4
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((min by (provider) (last_over_time(atlas_ai_quota_remaining_percent{provider=\"anthropic\",window=\"five_hour\"}[20m])) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"anthropic\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 0
|
|
},
|
|
{
|
|
"color": "dark-orange",
|
|
"value": 15
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 30
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 50
|
|
}
|
|
]
|
|
},
|
|
"unit": "percent",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Lowest remaining percentage across the provider's active first-party quota buckets for this window. This conservative value shows the limit most likely to constrain new work. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 8,
|
|
"type": "stat",
|
|
"title": "Claude 5h Reset In",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 4,
|
|
"y": 4
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((clamp_min(min by (provider) (last_over_time(atlas_ai_quota_reset_timestamp_seconds{provider=\"anthropic\",window=\"five_hour\"}[20m])) - time(), 0) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"anthropic\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-blue",
|
|
"value": 0
|
|
}
|
|
]
|
|
},
|
|
"unit": "s",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Time until the earliest active first-party quota reset for this provider and window. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 9,
|
|
"type": "stat",
|
|
"title": "Claude 7d Remaining",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 8,
|
|
"y": 4
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((min by (provider) (last_over_time(atlas_ai_quota_remaining_percent{provider=\"anthropic\",window=\"seven_day\"}[20m])) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"anthropic\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"legendFormat": "Overall weekly",
|
|
"instant": true
|
|
},
|
|
{
|
|
"expr": "((min by (provider) (last_over_time(atlas_ai_quota_remaining_percent{provider=\"anthropic\",window=\"seven_day_fable\"}[20m])) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"anthropic\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "B",
|
|
"legendFormat": "Fable 5 weekly",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 0
|
|
},
|
|
{
|
|
"color": "dark-orange",
|
|
"value": 15
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 30
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 50
|
|
}
|
|
]
|
|
},
|
|
"unit": "percent",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value_and_name"
|
|
},
|
|
"description": "Overall weekly and Fable 5 weekly remaining percentages from Claude Code's first-party scoped usage ledger. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 10,
|
|
"type": "stat",
|
|
"title": "Claude 7d Reset In",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 12,
|
|
"y": 4
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "((clamp_min(min by (provider) (last_over_time(atlas_ai_quota_reset_timestamp_seconds{provider=\"anthropic\",window=\"seven_day\"}[20m])) - time(), 0) and on(provider) ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) and on(provider) (time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds{provider=\"anthropic\"}[20m]) < 1200))) or on() ((last_over_time(atlas_ai_provider_authenticated{provider=\"anthropic\"}[20m]) == 1) * 0 - 2)) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-2": {
|
|
"text": "not exposed",
|
|
"color": "dark-blue"
|
|
},
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-blue",
|
|
"value": 0
|
|
}
|
|
]
|
|
},
|
|
"unit": "s",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Time until the earliest active first-party quota reset for this provider and window. A last-good snapshot remains visible for up to 20 minutes through a transient fetch miss. Not exposed means access is healthy but the credential cannot read this quota; unavailable means access is unhealthy or the snapshot is stale."
|
|
},
|
|
{
|
|
"id": 11,
|
|
"type": "stat",
|
|
"title": "Claude Routed Tokens (24h)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 16,
|
|
"y": 4
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "(sum(increase(switchyard_prompt_tokens_total{model=~\"(route|worker)/claude/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_cached_tokens_total{model=~\"(route|worker)/claude/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_cache_creation_tokens_total{model=~\"(route|worker)/claude/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_reasoning_tokens_total{model=~\"(route|worker)/claude/.+\"}[24h])) or on() vector(0)) + (sum(increase(switchyard_completion_tokens_total{model=~\"(route|worker)/claude/.+\"}[24h])) or on() vector(0))",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "rgba(115, 115, 115, 1)",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 1
|
|
}
|
|
]
|
|
},
|
|
"unit": "short",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 0
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Prompt, cache-read, cache-creation, reasoning, and completion tokens observed by Switchyard for this provider, including interactive and worker routes."
|
|
},
|
|
{
|
|
"id": 12,
|
|
"type": "stat",
|
|
"title": "Claude Routed Tokens (7d)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 4,
|
|
"x": 20,
|
|
"y": 4
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "(sum(increase(switchyard_prompt_tokens_total{model=~\"(route|worker)/claude/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_cached_tokens_total{model=~\"(route|worker)/claude/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_cache_creation_tokens_total{model=~\"(route|worker)/claude/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_reasoning_tokens_total{model=~\"(route|worker)/claude/.+\"}[7d])) or on() vector(0)) + (sum(increase(switchyard_completion_tokens_total{model=~\"(route|worker)/claude/.+\"}[7d])) or on() vector(0))",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "rgba(115, 115, 115, 1)",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 1
|
|
}
|
|
]
|
|
},
|
|
"unit": "short",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 0
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Prompt, cache-read, cache-creation, reasoning, and completion tokens observed by Switchyard for this provider, including interactive and worker routes."
|
|
},
|
|
{
|
|
"id": 13,
|
|
"type": "stat",
|
|
"title": "Provider Access Healthy",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 0,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(last_over_time(atlas_ai_provider_authenticated[20m])) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "dark-red",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 1
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 2
|
|
}
|
|
]
|
|
},
|
|
"unit": "none",
|
|
"custom": {
|
|
"displayMode": "auto",
|
|
"valueSuffix": " / 2"
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Authenticated first-party provider boundaries observed within 20 minutes. Quota visibility is tracked separately from model access."
|
|
},
|
|
{
|
|
"id": 14,
|
|
"type": "stat",
|
|
"title": "Quota Fetch Healthy",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 3,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(last_over_time(atlas_ai_quota_fetch_success[20m])) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "dark-red",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 1
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 2
|
|
}
|
|
]
|
|
},
|
|
"unit": "none",
|
|
"custom": {
|
|
"displayMode": "auto",
|
|
"valueSuffix": " / 2"
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Provider quota collectors whose latest refresh observed within 20 minutes completed successfully."
|
|
},
|
|
{
|
|
"id": 15,
|
|
"type": "stat",
|
|
"title": "Oldest Quota Sample",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 6,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "max(time() - last_over_time(atlas_ai_quota_last_success_timestamp_seconds[20m])) or on() vector(-1)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [
|
|
{
|
|
"type": "value",
|
|
"options": {
|
|
"-1": {
|
|
"text": "unavailable",
|
|
"color": "gray"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "gray",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 0
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 600
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 1200
|
|
}
|
|
]
|
|
},
|
|
"unit": "s",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Age of the stalest successful provider quota snapshot."
|
|
},
|
|
{
|
|
"id": 16,
|
|
"type": "stat",
|
|
"title": "Switchyard Requests",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 9,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(increase(switchyard_requests_total[$__range])) or on() vector(0)",
|
|
"refId": "A",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "rgba(115, 115, 115, 1)",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 1
|
|
}
|
|
]
|
|
},
|
|
"unit": "short",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 0
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Hosted model requests observed by Switchyard in the selected dashboard range."
|
|
},
|
|
{
|
|
"id": 17,
|
|
"type": "stat",
|
|
"title": "Prompt Cache Share",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 12,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "100 * sum(rate(switchyard_cached_tokens_total[5m])) / clamp_min(sum(rate(switchyard_prompt_tokens_total[5m])) + sum(rate(switchyard_cached_tokens_total[5m])), 1)",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "rgba(115, 115, 115, 1)",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 1
|
|
}
|
|
]
|
|
},
|
|
"unit": "percent",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Cached tokens as a share of prompt plus cached tokens; higher generally means less repeated provider work."
|
|
},
|
|
{
|
|
"id": 18,
|
|
"type": "stat",
|
|
"title": "Client Success Rate",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 15,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "100 * sum(increase(switchyard_client_responses_total{outcome=\"success\"}[$__range])) / clamp_min(sum(increase(switchyard_client_responses_total[$__range])), 1)",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "dark-red",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 95
|
|
},
|
|
{
|
|
"color": "dark-green",
|
|
"value": 99
|
|
}
|
|
]
|
|
},
|
|
"unit": "percent",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 1
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Successful client-facing Switchyard responses in the selected range."
|
|
},
|
|
{
|
|
"id": 19,
|
|
"type": "stat",
|
|
"title": "Classifier Fail-Open",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 18,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(increase(switchyard_classifier_fail_open_total[$__range])) or on() vector(0)",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "dark-green",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 1
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 5
|
|
}
|
|
]
|
|
},
|
|
"unit": "none",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 0
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Local classifier failures that safely fell back to the conservative hosted route."
|
|
},
|
|
{
|
|
"id": 20,
|
|
"type": "stat",
|
|
"title": "Upstream Errors",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 4,
|
|
"w": 3,
|
|
"x": 21,
|
|
"y": 8
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(increase(switchyard_errors_total[$__range])) or on() vector(0)",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": {
|
|
"mode": "thresholds"
|
|
},
|
|
"mappings": [],
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "dark-green",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 1
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 5
|
|
}
|
|
]
|
|
},
|
|
"unit": "none",
|
|
"custom": {
|
|
"displayMode": "auto"
|
|
},
|
|
"decimals": 0
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "center",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
},
|
|
"textMode": "value"
|
|
},
|
|
"description": "Hosted model attempts that returned errors in the selected range."
|
|
},
|
|
{
|
|
"id": 21,
|
|
"type": "timeseries",
|
|
"title": "Model Selection Rate",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 12
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (selected_model) (rate(switchyard_decisions_total[5m]))",
|
|
"refId": "A",
|
|
"legendFormat": "{{selected_model}}"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "reqps"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "table",
|
|
"placement": "right"
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi"
|
|
}
|
|
},
|
|
"description": "AUTO and fixed-route decisions by selected provider, model family, and reasoning effort."
|
|
},
|
|
{
|
|
"id": 22,
|
|
"type": "bargauge",
|
|
"title": "Provider Selections (Range)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 12
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sort_desc(sum by (provider) (label_replace(increase(switchyard_decisions_total{selected_model=~\"(route|worker)/(codex|claude|local)/.*\"}[$__range]), \"provider\", \"$2\", \"selected_model\", \"^(route|worker)/(codex|claude|local)/.*\")))",
|
|
"refId": "A",
|
|
"legendFormat": "{{provider}}",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "short",
|
|
"min": 0,
|
|
"max": null,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "dark-green",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 50
|
|
},
|
|
{
|
|
"color": "dark-orange",
|
|
"value": 70
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 85
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"displayMode": "basic",
|
|
"orientation": "horizontal",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
}
|
|
},
|
|
"description": "Switchyard selections grouped by provider over the selected dashboard range.",
|
|
"transformations": [
|
|
{
|
|
"id": "sortBy",
|
|
"options": {
|
|
"fields": [
|
|
"Value"
|
|
],
|
|
"order": "desc"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 23,
|
|
"type": "timeseries",
|
|
"title": "Token Throughput",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 20
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(switchyard_prompt_tokens_total[5m]))",
|
|
"refId": "A",
|
|
"legendFormat": "prompt"
|
|
},
|
|
{
|
|
"expr": "sum(rate(switchyard_cached_tokens_total[5m]))",
|
|
"refId": "B",
|
|
"legendFormat": "cached"
|
|
},
|
|
{
|
|
"expr": "sum(rate(switchyard_cache_creation_tokens_total[5m]))",
|
|
"refId": "C",
|
|
"legendFormat": "cache creation"
|
|
},
|
|
{
|
|
"expr": "sum(rate(switchyard_reasoning_tokens_total[5m]))",
|
|
"refId": "D",
|
|
"legendFormat": "reasoning"
|
|
},
|
|
{
|
|
"expr": "sum(rate(switchyard_completion_tokens_total[5m]))",
|
|
"refId": "E",
|
|
"legendFormat": "completion"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "tps"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "table",
|
|
"placement": "bottom"
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi"
|
|
}
|
|
},
|
|
"description": "Prompt, cache, reasoning, and completion token rates reported by hosted Switchyard calls."
|
|
},
|
|
{
|
|
"id": 24,
|
|
"type": "timeseries",
|
|
"title": "Model Call p95 Latency",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 20
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "histogram_quantile(0.95, sum by (le, model) (rate(switchyard_model_call_latency_ms_bucket[5m])))",
|
|
"refId": "A",
|
|
"legendFormat": "{{model}}"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "ms"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "table",
|
|
"placement": "right"
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi"
|
|
}
|
|
},
|
|
"description": "95th percentile upstream latency for each selected model route."
|
|
},
|
|
{
|
|
"id": 25,
|
|
"type": "timeseries",
|
|
"title": "Local Classifier Calls",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 8,
|
|
"x": 0,
|
|
"y": 28
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (outcome) (rate(switchyard_llm_calls_total{selected_model=~\"qwen.*\"}[5m]))",
|
|
"refId": "A",
|
|
"legendFormat": "{{outcome}}"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "reqps"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "table",
|
|
"placement": "bottom"
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi"
|
|
}
|
|
},
|
|
"description": "Local Qwen routing-classifier activity, split by successful and failed calls."
|
|
},
|
|
{
|
|
"id": 26,
|
|
"type": "timeseries",
|
|
"title": "Routing Overhead p95",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 8,
|
|
"x": 8,
|
|
"y": 28
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "histogram_quantile(0.95, sum by (le, algorithm) (rate(switchyard_routing_overhead_ms_bucket[5m])))",
|
|
"refId": "A",
|
|
"legendFormat": "{{algorithm}}"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "ms"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "table",
|
|
"placement": "bottom"
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi"
|
|
}
|
|
},
|
|
"description": "95th percentile time Switchyard spends selecting a model before the upstream call."
|
|
},
|
|
{
|
|
"id": 27,
|
|
"type": "bargauge",
|
|
"title": "Traffic Lanes (Range)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 8,
|
|
"x": 16,
|
|
"y": 28
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sort_desc(sum by (lane) (label_replace(increase(switchyard_requests_total{model=~\"(route|worker)/.*\"}[$__range]), \"lane\", \"$1\", \"model\", \"^(route|worker)/.*\")))",
|
|
"refId": "A",
|
|
"legendFormat": "{{lane}}",
|
|
"instant": true
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "short",
|
|
"min": 0,
|
|
"max": null,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "dark-green",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "dark-yellow",
|
|
"value": 50
|
|
},
|
|
{
|
|
"color": "dark-orange",
|
|
"value": 70
|
|
},
|
|
{
|
|
"color": "dark-red",
|
|
"value": 85
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"displayMode": "basic",
|
|
"orientation": "horizontal",
|
|
"reduceOptions": {
|
|
"calcs": [
|
|
"lastNotNull"
|
|
],
|
|
"fields": "",
|
|
"values": false
|
|
}
|
|
},
|
|
"description": "Request volume split between interactive route traffic and durable worker traffic.",
|
|
"transformations": [
|
|
{
|
|
"id": "sortBy",
|
|
"options": {
|
|
"fields": [
|
|
"Value"
|
|
],
|
|
"order": "desc"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": 28,
|
|
"type": "text",
|
|
"title": "Cost Semantics",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 36
|
|
},
|
|
"datasource": null,
|
|
"options": {
|
|
"mode": "markdown",
|
|
"content": "Codex and Claude currently run through first-party subscription OAuth lanes, so providers expose quota utilization rather than per-call dollar invoices. This dashboard does not invent API costs from tokens. If a metered API-key lane is added, its provider billing metric should be displayed separately from subscription usage."
|
|
}
|
|
},
|
|
{
|
|
"id": 29,
|
|
"type": "timeseries",
|
|
"title": "Hermes Workload CPU (Attribution Proxy)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "atlas-vm"
|
|
},
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 36
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (pod, container) (rate(container_cpu_usage_seconds_total{namespace=\"hermes\",pod=~\"hermes-(agent|chat-tenant|switchyard|model-gate).*\",container!=\"\",image!=\"\"}[5m]))",
|
|
"refId": "A",
|
|
"legendFormat": "{{pod}} \u00b7 {{container}}"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "cores"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "table",
|
|
"placement": "right"
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi"
|
|
}
|
|
},
|
|
"description": "Compute use by Hermes pod/container. Switchyard currently exposes model and worker-vs-route attribution, but not tenant-slot token labels; CPU is clearly marked as a proxy rather than token usage."
|
|
}
|
|
],
|
|
"time": {
|
|
"from": "now-24h",
|
|
"to": "now"
|
|
},
|
|
"refresh": "1m",
|
|
"annotations": {
|
|
"list": []
|
|
},
|
|
"schemaVersion": 39,
|
|
"style": "dark",
|
|
"tags": [
|
|
"atlas",
|
|
"ai",
|
|
"hermes",
|
|
"switchyard"
|
|
]
|
|
}
|