From 00e2c83bebb6bb5acb01d9b6f3c9603f9caaab5d Mon Sep 17 00:00:00 2001 From: kvanbezouw Date: Tue, 2 Jun 2026 11:46:19 +0200 Subject: [PATCH] Import part 1 --- .gitignore | 3 + grafana/ubiops-sre/README.md | 36 + grafana/ubiops-sre/dashboard.json | 2828 +++++++++++++++++++++++++++ grafana/ubiops-sre/image.png | Bin 0 -> 158958 bytes grafana/vllm-metrics/README.md | 37 + grafana/vllm-metrics/dashboard.json | 2618 +++++++++++++++++++++++++ 6 files changed, 5522 insertions(+) create mode 100644 .gitignore create mode 100644 grafana/ubiops-sre/README.md create mode 100644 grafana/ubiops-sre/dashboard.json create mode 100644 grafana/ubiops-sre/image.png create mode 100644 grafana/vllm-metrics/README.md create mode 100644 grafana/vllm-metrics/dashboard.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3fa69c5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Large benchmark output logs — reproducible, not versioned +llm-throughput-tests-mindef-metadateren/results/**/benchmark_io.log +*.log diff --git a/grafana/ubiops-sre/README.md b/grafana/ubiops-sre/README.md new file mode 100644 index 0000000..cf6e56c --- /dev/null +++ b/grafana/ubiops-sre/README.md @@ -0,0 +1,36 @@ +# UbiOps Deployments Dashboard + +Grafana dashboard (`dashboard.json`) for monitoring UbiOps deployment pods on Kubernetes — health, resource usage, restarts, and limits. Data comes from Prometheus (`kube-state-metrics` + cAdvisor `container_*` metrics). + +## Variables + +| Variable | Source | Purpose | +|----------|--------|---------| +| `datasource` | Prometheus datasource picker | Select the Prometheus instance | +| `namespace` | `label_values(kube_pod_info, namespace)` | Namespace to scope to | +| `deployment` | `label_values(kube_deployment_metadata_generation{namespace=$namespace}, deployment)` | Deployment to inspect (defaults to all, `.*`) | + +Pods are matched by `pod=~"$deployment.*"`, so a deployment selection covers all of its pods. + +## Rows & panels + +**Overview** — at-a-glance stat tiles: Running / Pending / Failed pods, Restarts (1h), OOMKilled (1h), Waiting containers. + +**Resource Usage** — CPU and memory working-set usage per pod over time. + +**Deployment Status** — desired vs. available replicas, and container restart rate. + +**Resource Limits** — usage vs. limits for CPU and memory (aggregate and per-pod), plus per-pod limits and **% of limit** (green/yellow/red at 70%/90%) to spot pods approaching OOM. + +**Pod Details** — table of every pod with restart count and memory % of limit, sorted by restarts. + +## Usage + +Default time range is the last 1h with 30s auto-refresh. Import into Grafana (schema `dashboard.grafana.app/v2`, built on Grafana v13), then pick a datasource, namespace, and deployment. + +## Key things to watch + +- **OOMKilled (1h)** and **Memory % of Limit** — memory pressure / under-provisioned limits. +- **Restarts** and **Container Restart Rate** — crash loops. +- **Pending / Failed pods** — scheduling or startup problems. +- **Replicas** (desired vs. available) — incomplete rollouts. diff --git a/grafana/ubiops-sre/dashboard.json b/grafana/ubiops-sre/dashboard.json new file mode 100644 index 0000000..8bb830b --- /dev/null +++ b/grafana/ubiops-sre/dashboard.json @@ -0,0 +1,2828 @@ +{ + "apiVersion": "dashboard.grafana.app/v2", + "kind": "Dashboard", + "metadata": { + "name": "ubiops-deployments-v2", + "namespace": "default", + "uid": "lcNkD29gToeEqZyG02ufxUS3KmhAV3Q5V68hyuObpzwX", + "resourceVersion": "1780386365528981", + "generation": 5, + "creationTimestamp": "2026-02-09T14:48:27Z", + "labels": { + "grafana.app/deprecatedInternalID": "4601" + }, + "annotations": { + "grafana.app/createdBy": "user:ffc8gwlm9q2gwb", + "grafana.app/folder": "", + "grafana.app/saved-from-ui": "Grafana v13.0.1 (a100054f)", + "grafana.app/updatedBy": "user:ffc8gwlm9q2gwb", + "grafana.app/updatedTimestamp": "2026-06-02T07:46:05Z" + } + }, + "spec": { + "annotations": [ + { + "kind": "AnnotationQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "grafana", + "version": "v0", + "datasource": { + "name": "-- Grafana --" + }, + "spec": {} + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "builtIn": true + } + } + ], + "cursorSync": "Crosshair", + "description": "Monitor UbiOps deployment pods: status, resource usage, restarts, and limits.", + "editable": true, + "elements": { + "panel-10": { + "kind": "Panel", + "spec": { + "id": 10, + "title": "Memory Usage by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod) (container_memory_working_set_bytes{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"})", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "13.0.1", + "spec": { + "options": { + "annotations": { + "clustering": -1, + "multiLane": false + }, + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "bytes", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-12": { + "kind": "Panel", + "spec": { + "id": 12, + "title": "Deployment Replicas", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (deployment) (kube_deployment_status_replicas_available{namespace=\"$namespace\", deployment=~\"$deployment\"})", + "legendFormat": "{{ deployment }} available" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (deployment) (kube_deployment_spec_replicas{namespace=\"$namespace\", deployment=~\"$deployment\"})", + "legendFormat": "{{ deployment }} desired" + } + }, + "refId": "B", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "13.0.1", + "spec": { + "options": { + "annotations": { + "clustering": -1, + "multiLane": false + }, + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-13": { + "kind": "Panel", + "spec": { + "id": 13, + "title": "Container Restart Rate", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod, container) (increase(kube_pod_container_status_restarts_total{namespace=\"$namespace\", pod=~\"$deployment.*\"}[$__rate_interval]))", + "legendFormat": "{{ pod }}/{{ container }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "13.0.1", + "spec": { + "options": { + "annotations": { + "clustering": -1, + "multiLane": false + }, + "legend": { + "calcs": [ + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-15": { + "kind": "Panel", + "spec": { + "id": 15, + "title": "Memory: Usage vs Limits", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(container_memory_working_set_bytes{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"} * on(namespace, pod) group_left max by(namespace, pod) (kube_pod_info{namespace=\"$namespace\", pod=~\"$deployment.*\"}))", + "legendFormat": "usage" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(kube_pod_container_resource_limits{namespace=\"$namespace\", pod=~\"$deployment.*\", resource=\"memory\"})", + "legendFormat": "limit" + } + }, + "refId": "B", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "bytes", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": ".*limit.*" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "dash": [ + 10, + 10 + ], + "fill": "dash" + } + } + ] + } + ] + } + } + } + } + }, + "panel-16": { + "kind": "Panel", + "spec": { + "id": 16, + "title": "CPU: Usage vs Limits", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"}[$__rate_interval]) * on(namespace, pod) group_left max by(namespace, pod) (kube_pod_info{namespace=\"$namespace\", pod=~\"$deployment.*\"}))", + "legendFormat": "usage" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(kube_pod_container_resource_limits{namespace=\"$namespace\", pod=~\"$deployment.*\", resource=\"cpu\"})", + "legendFormat": "limit" + } + }, + "refId": "B", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": ".*limit.*" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "dash": [ + 10, + 10 + ], + "fill": "dash" + } + } + ] + } + ] + } + } + } + } + }, + "panel-18": { + "kind": "Panel", + "spec": { + "id": 18, + "title": "Pod Status", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "kube_pod_info{namespace=\"$namespace\", pod=~\"$deployment.*\"}", + "format": "table", + "instant": true + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod) (kube_pod_container_status_restarts_total{namespace=\"$namespace\", pod=~\"$deployment.*\"})", + "format": "table", + "instant": true + } + }, + "refId": "B", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "100 * sum by (pod) (container_memory_working_set_bytes{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"}) / sum by (pod) (kube_pod_container_resource_limits{namespace=\"$namespace\", pod=~\"$deployment.*\", resource=\"memory\"})", + "format": "table", + "instant": true + } + }, + "refId": "C", + "hidden": false + } + } + ], + "transformations": [ + { + "kind": "Transformation", + "group": "seriesToColumns", + "spec": { + "options": { + "byField": "pod" + } + } + }, + { + "kind": "Transformation", + "group": "organize", + "spec": { + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "__name__": true, + "container_id": true, + "created_by_kind": true, + "created_by_name": true, + "host_ip": true, + "host_network": true, + "instance": true, + "job": true, + "namespace": true, + "node": true, + "pod_ip": true, + "priority_class": true, + "uid": true + }, + "renameByName": { + "Value #B": "Restarts", + "Value #C": "Memory %", + "pod": "Pod" + } + } + } + } + ], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "table", + "version": "12.3.2", + "spec": { + "options": { + "cellHeight": "sm", + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Restarts" + } + ] + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "footer": { + "reducers": [] + }, + "inspect": false + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Restarts" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "mode": "gradient", + "type": "gauge" + } + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "yellow", + "value": 1 + }, + { + "color": "red", + "value": 5 + } + ] + } + }, + { + "id": "max", + "value": 10 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Memory %" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + }, + { + "id": "custom.cellOptions", + "value": { + "mode": "gradient", + "type": "gauge" + } + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "yellow", + "value": 70 + }, + { + "color": "red", + "value": 90 + } + ] + } + }, + { + "id": "max", + "value": 100 + } + ] + } + ] + } + } + } + } + }, + "panel-19": { + "kind": "Panel", + "spec": { + "id": 19, + "title": "Memory Usage by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod) (container_memory_working_set_bytes{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"})", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "bytes", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "deployment-061e7070-acdc-4f44-bf34-098776c66ca1-f9ddd06e" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": true + } + } + ] + } + ] + } + } + } + } + }, + "panel-2": { + "kind": "Panel", + "spec": { + "id": 2, + "title": "Running Pods", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(kube_pod_status_phase{namespace=\"$namespace\", pod=~\"$deployment.*\", phase=\"Running\"})", + "legendFormat": "Running" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "13.0.1", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-20": { + "kind": "Panel", + "spec": { + "id": 20, + "title": "CPU Usage by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod) (rate(container_cpu_usage_seconds_total{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"}[$__rate_interval]))", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-21": { + "kind": "Panel", + "spec": { + "id": 21, + "title": "Memory Limits by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod) (kube_pod_container_resource_limits{namespace=\"$namespace\", pod=~\"$deployment.*\", resource=\"memory\"})", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "bytes", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineStyle": { + "dash": [ + 10, + 10 + ], + "fill": "dash" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "deployment-061e7070-acdc-4f44-bf34-098776c66ca1-f9ddd06e" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": true + } + } + ] + } + ] + } + } + } + } + }, + "panel-22": { + "kind": "Panel", + "spec": { + "id": 22, + "title": "Memory % of Limit by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "100 * sum by (pod) (container_memory_working_set_bytes{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"}) / sum by (pod) (kube_pod_container_resource_limits{namespace=\"$namespace\", pod=~\"$deployment.*\", resource=\"memory\"})", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "percent", + "min": 0, + "max": 100, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 70, + "color": "yellow" + }, + { + "value": 90, + "color": "red" + } + ] + }, + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "deployment-061e7070-acdc-4f44-bf34-098776c66ca1-f9ddd06e" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": true, + "viz": true + } + } + ] + } + ] + } + } + } + } + }, + "panel-23": { + "kind": "Panel", + "spec": { + "id": 23, + "title": "CPU Limits by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod) (kube_pod_container_resource_limits{namespace=\"$namespace\", pod=~\"$deployment.*\", resource=\"cpu\"})", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineStyle": { + "dash": [ + 10, + 10 + ], + "fill": "dash" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-24": { + "kind": "Panel", + "spec": { + "id": 24, + "title": "CPU % of Limit by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "100 * sum by (pod) (rate(container_cpu_usage_seconds_total{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"}[$__rate_interval])) / sum by (pod) (kube_pod_container_resource_limits{namespace=\"$namespace\", pod=~\"$deployment.*\", resource=\"cpu\"})", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.2", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "percent", + "min": 0, + "max": 100, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 70, + "color": "yellow" + }, + { + "value": 90, + "color": "red" + } + ] + }, + "color": { + "mode": "thresholds" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-3": { + "kind": "Panel", + "spec": { + "id": 3, + "title": "Pending Pods", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(kube_pod_status_phase{namespace=\"$namespace\", pod=~\"$deployment.*\", phase=\"Pending\"}) or vector(0)", + "legendFormat": "Pending" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "13.0.1", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 1, + "color": "yellow" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-4": { + "kind": "Panel", + "spec": { + "id": 4, + "title": "Failed Pods", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(kube_pod_status_phase{namespace=\"$namespace\", pod=~\"$deployment.*\", phase=\"Failed\"}) or vector(0)", + "legendFormat": "Failed" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "13.0.1", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 1, + "color": "red" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-5": { + "kind": "Panel", + "spec": { + "id": 5, + "title": "Restarts (1h)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(increase(kube_pod_container_status_restarts_total{namespace=\"$namespace\", pod=~\"$deployment.*\"}[1h]))", + "legendFormat": "Restarts" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "13.0.1", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 1, + "color": "yellow" + }, + { + "value": 5, + "color": "red" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-6": { + "kind": "Panel", + "spec": { + "id": 6, + "title": "OOMKilled (1h)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(increase(kube_pod_container_status_restarts_total{namespace=\"$namespace\", pod=~\"$deployment.*\"}[1h]) * on(namespace, pod, container) group_left kube_pod_container_status_last_terminated_reason{namespace=\"$namespace\", pod=~\"$deployment.*\", reason=\"OOMKilled\"}) or vector(0)", + "legendFormat": "OOMKilled" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "13.0.1", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 1, + "color": "red" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-7": { + "kind": "Panel", + "spec": { + "id": 7, + "title": "Waiting", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum(kube_pod_container_status_waiting{namespace=\"$namespace\", pod=~\"$deployment.*\"}) or vector(0)", + "legendFormat": "Waiting" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "13.0.1", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 1, + "color": "yellow" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-9": { + "kind": "Panel", + "spec": { + "id": 9, + "title": "CPU Usage by Pod", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "expr": "sum by (pod) (rate(container_cpu_usage_seconds_total{namespace=\"$namespace\", pod=~\"$deployment.*\", container!=\"\", container!=\"POD\"}[$__rate_interval]))", + "legendFormat": "{{ pod }}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "13.0.1", + "spec": { + "options": { + "annotations": { + "clustering": -1, + "multiLane": false + }, + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 80, + "color": "red" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + } + }, + "layout": { + "kind": "RowsLayout", + "spec": { + "rows": [ + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Overview", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-2" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 4, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-3" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 8, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-4" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-5" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 16, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-6" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 20, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-7" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Resource Usage", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-9" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-10" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Deployment Status", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-12" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-13" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Resource Limits", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-15" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-16" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 8, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-19" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 8, + "y": 8, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-21" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 16, + "y": 8, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-22" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 16, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-20" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 8, + "y": 16, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-23" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 16, + "y": 16, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-24" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Pod Details", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 24, + "height": 10, + "element": { + "kind": "ElementReference", + "name": "panel-18" + } + } + } + ] + } + } + } + } + ] + } + }, + "links": [], + "liveNow": false, + "preload": false, + "tags": [ + "ubiops", + "kubernetes", + "deployments" + ], + "timeSettings": { + "timezone": "browser", + "from": "now-1h", + "to": "now", + "autoRefresh": "30s", + "autoRefreshIntervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "hideTimepicker": false, + "fiscalYearStartMonth": 0 + }, + "title": "UbiOps Deployments Dev", + "variables": [ + { + "kind": "DatasourceVariable", + "spec": { + "name": "datasource", + "pluginId": "prometheus", + "refresh": "onDashboardLoad", + "regex": "", + "current": { + "text": "", + "value": "" + }, + "options": [], + "multi": false, + "includeAll": false, + "label": "Data Source", + "hide": "dontHide", + "skipUrlSync": false, + "allowCustomValue": true + } + }, + { + "kind": "QueryVariable", + "spec": { + "name": "namespace", + "current": { + "text": "", + "value": "" + }, + "label": "Namespace", + "hide": "dontHide", + "refresh": "onDashboardLoad", + "skipUrlSync": false, + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "query": "label_values(kube_pod_info, namespace)", + "refId": "A" + } + }, + "regex": "", + "regexApplyTo": "value", + "sort": "alphabeticalAsc", + "definition": "label_values(kube_pod_info, namespace)", + "options": [], + "multi": false, + "includeAll": false, + "allowCustomValue": true + } + }, + { + "kind": "QueryVariable", + "spec": { + "name": "deployment", + "current": { + "text": "", + "value": "" + }, + "label": "Deployment", + "hide": "dontHide", + "refresh": "onTimeRangeChanged", + "skipUrlSync": false, + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${datasource}" + }, + "spec": { + "query": "label_values(kube_deployment_metadata_generation{namespace=\"$namespace\"}, deployment)", + "refId": "A" + } + }, + "regex": "", + "regexApplyTo": "value", + "sort": "alphabeticalAsc", + "definition": "label_values(kube_deployment_metadata_generation{namespace=\"$namespace\"}, deployment)", + "options": [], + "multi": false, + "includeAll": true, + "allValue": ".*", + "allowCustomValue": true + } + } + ] + } +} \ No newline at end of file diff --git a/grafana/ubiops-sre/image.png b/grafana/ubiops-sre/image.png new file mode 100644 index 0000000000000000000000000000000000000000..5c00e2809a431e5a8a26a8abf0518b6df9af8e3c GIT binary patch literal 158958 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 (_ZR+qmCXY#h2KE5=Un=)7vc5@Fc9>9yp>Z{ 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

Z`P1_xQyX4yE`w6+|8XP$PQx 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 literal 0 HcmV?d00001 diff --git a/grafana/vllm-metrics/README.md b/grafana/vllm-metrics/README.md new file mode 100644 index 0000000..be9fef2 --- /dev/null +++ b/grafana/vllm-metrics/README.md @@ -0,0 +1,37 @@ +# vLLM Performance Dashboard + +Grafana dashboard for monitoring [vLLM](https://github.com/vllm-project/vllm) inference servers running as UbiOps deployments — request throughput, queue depth, KV cache pressure, and token rates. Fed by the `vllm:*` Prometheus metrics that vLLM exposes. + +> **Note:** `dashboard.json` is currently empty (0 bytes) — the export did not save. These docs are reconstructed from `image.png`; re-export the dashboard to capture the panel/query definitions. + +## Variables + +- **Data Source** — Prometheus instance. +- **Namespace** — Kubernetes namespace (e.g. `default`). +- **Deployment** — the vLLM deployment / served model (e.g. `gpt-oss-120b`). + +## Rows & panels + +**Request Stats** +- *Requests Running* — requests currently being decoded. +- *Requests Waiting* — requests queued for a slot. +- *KV Cache Usage* — % of the GPU KV cache block pool in use (saturation → queuing). +- *Request Rate* — incoming requests over time. +- *Tokens Generated/sec* — output token throughput. +- *Request States Over Time* — running vs. waiting (and swapped) requests as a timeseries. +- *KV Cache Usage Over Time* — KV cache utilization trend. + +**Per-Minute Metrics (RPM / ITPM / OTPM)** +- *Requests Per Minute (RPM)*. +- *Input Tokens Per Minute (ITPM)* — prompt token volume. +- *Output Tokens Per Minute (OTPM)* — generated token volume. + +## Key things to watch + +- **KV Cache Usage** near 100% with rising **Requests Waiting** — the server is capacity-bound; scale up or shorten contexts. +- **Tokens Generated/sec** / **OTPM** dropping while RPM holds — degraded decode throughput. +- Sustained **Requests Waiting** — queue backlog and latency. + +## Usage + +Default range in the screenshot is the last 2 days with auto-refresh. Import into Grafana, then select datasource, namespace, and deployment. \ No newline at end of file diff --git a/grafana/vllm-metrics/dashboard.json b/grafana/vllm-metrics/dashboard.json new file mode 100644 index 0000000..88d3a45 --- /dev/null +++ b/grafana/vllm-metrics/dashboard.json @@ -0,0 +1,2618 @@ +{ + "apiVersion": "dashboard.grafana.app/v2", + "kind": "Dashboard", + "metadata": { + "name": "vllm-perf", + "namespace": "default", + "uid": "AaGqVjAfCOd8D9DSWglyypyK6YhbvBOrEUJn5zrryYIX", + "resourceVersion": "1775139425991994", + "generation": 12, + "creationTimestamp": "2026-02-24T11:40:30Z", + "labels": { + "grafana.app/deprecatedInternalID": "4994" + }, + "annotations": { + "grafana.app/createdBy": "user:ffc8gwlm9q2gwb", + "grafana.app/message": "Restored from version 4", + "grafana.app/saved-from-ui": "Grafana v12.4.2 (ebade4c739)", + "grafana.app/updatedBy": "user:ffc8gwlm9q2gwb", + "grafana.app/updatedTimestamp": "2026-04-02T14:17:05Z", + "grafana.app/folder": "" + } + }, + "spec": { + "annotations": [ + { + "kind": "AnnotationQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "grafana", + "version": "v0", + "datasource": { + "name": "-- Grafana --" + }, + "spec": {} + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "builtIn": true, + "legacyOptions": { + "type": "dashboard" + } + } + } + ], + "cursorSync": "Off", + "editable": true, + "elements": { + "panel-10": { + "kind": "Panel", + "spec": { + "id": 10, + "title": "Time to First Token (TTFT)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.50, rate(vllm:time_to_first_token_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P50" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:time_to_first_token_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P95" + } + }, + "refId": "B", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.99, rate(vllm:time_to_first_token_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P99" + } + }, + "refId": "C", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "s", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-11": { + "kind": "Panel", + "spec": { + "id": 11, + "title": "Inter-Token Latency (TPOT)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.50, rate(vllm:inter_token_latency_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P50" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:inter_token_latency_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P95" + } + }, + "refId": "B", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.99, rate(vllm:inter_token_latency_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P99" + } + }, + "refId": "C", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "s", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-12": { + "kind": "Panel", + "spec": { + "id": 12, + "title": "End-to-End Request Latency", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.50, rate(vllm:e2e_request_latency_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P50" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:e2e_request_latency_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P95" + } + }, + "refId": "B", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.99, rate(vllm:e2e_request_latency_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "P99" + } + }, + "refId": "C", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "s", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-13": { + "kind": "Panel", + "spec": { + "id": 13, + "title": "Request Processing Times (P95)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:request_queue_time_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "Queue Time P95" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:request_prefill_time_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "Prefill Time P95" + } + }, + "refId": "B", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:request_decode_time_seconds_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "Decode Time P95" + } + }, + "refId": "C", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "s", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-15": { + "kind": "Panel", + "spec": { + "id": 15, + "title": "Token Throughput", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:prompt_tokens_total{deployments=\"$deployments\"}[5m])", + "legendFormat": "Prompt Tokens/sec" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:generation_tokens_total{deployments=\"$deployments\"}[5m])", + "legendFormat": "Generation Tokens/sec" + } + }, + "refId": "B", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "ops", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-16": { + "kind": "Panel", + "spec": { + "id": 16, + "title": "Request Token Lengths", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.50, rate(vllm:request_prompt_tokens_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "Prompt Length P50" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:request_prompt_tokens_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "Prompt Length P95" + } + }, + "refId": "B", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.50, rate(vllm:request_generation_tokens_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "Generation Length P50" + } + }, + "refId": "C", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "histogram_quantile(0.95, rate(vllm:request_generation_tokens_bucket{deployments=\"$deployments\"}[5m]))", + "legendFormat": "Generation Length P95" + } + }, + "refId": "D", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-18": { + "kind": "Panel", + "spec": { + "id": 18, + "title": "Prefix Cache Activity", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:prefix_cache_queries_total{deployments=\"$deployments\"}[5m])", + "legendFormat": "Queries" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:prefix_cache_hits_total{deployments=\"$deployments\"}[5m])", + "legendFormat": "Hits" + } + }, + "refId": "B", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.3.3", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "ops", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-19": { + "kind": "Panel", + "spec": { + "id": 19, + "title": "Prefix Cache Hit Rate", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:prefix_cache_hits_total{deployments=\"$deployments\"}[5m]) / rate(vllm:prefix_cache_queries_total{deployments=\"$deployments\"}[5m])" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "gauge", + "version": "12.3.3", + "spec": { + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit", + "min": 0, + "max": 1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "red" + }, + { + "value": 0.5, + "color": "yellow" + }, + { + "value": 0.8, + "color": "green" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-2": { + "kind": "Panel", + "spec": { + "id": 2, + "title": "Requests Running", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "vllm:num_requests_running{deployments=\"$deployments\"}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "12.4.0", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 5, + "color": "yellow" + }, + { + "value": 20, + "color": "red" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-21": { + "kind": "Panel", + "spec": { + "id": 21, + "title": "Requests Per Minute (RPM)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "editorMode": "code", + "expr": "sum(rate(vllm:request_success_total{deployments=\"$deployments\"}[1m])) * 60", + "legendFormat": "RPM", + "range": true + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "reqpm", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Requests/min", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-22": { + "kind": "Panel", + "spec": { + "id": 22, + "title": "Input Tokens Per Minute (ITPM)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:prompt_tokens_total{deployments=\"$deployments\"}[1m]) * 60", + "legendFormat": "ITPM" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Input Tokens/min", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-23": { + "kind": "Panel", + "spec": { + "id": 23, + "title": "Output Tokens Per Minute (OTPM)", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:generation_tokens_total{deployments=\"$deployments\"}[1m]) * 60", + "legendFormat": "OTPM" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "last" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Output Tokens/min", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-3": { + "kind": "Panel", + "spec": { + "id": 3, + "title": "Requests Waiting", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "vllm:num_requests_waiting{deployments=\"$deployments\"}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "12.4.0", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + }, + { + "value": 10, + "color": "yellow" + }, + { + "value": 50, + "color": "red" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-4": { + "kind": "Panel", + "spec": { + "id": 4, + "title": "KV Cache Usage", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "vllm:kv_cache_usage_perc{deployments=\"$deployments\"}" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "12.4.0", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-5": { + "kind": "Panel", + "spec": { + "id": 5, + "title": "Request Rate", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "editorMode": "code", + "expr": "rate(vllm:request_success_total{deployments=\"$deployments\"}[$__rate_interval])", + "range": true + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "fieldConfig": { + "defaults": { + "unit": "reqps", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-6": { + "kind": "Panel", + "spec": { + "id": 6, + "title": "Tokens Generated/sec", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "rate(vllm:generation_tokens_total{deployments=\"$deployments\"}[5m])" + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "stat", + "version": "12.4.0", + "spec": { + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "fieldConfig": { + "defaults": { + "unit": "ops", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "thresholds" + } + }, + "overrides": [] + } + } + } + } + }, + "panel-7": { + "kind": "Panel", + "spec": { + "id": 7, + "title": "Request States Over Time", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "vllm:num_requests_running{deployments=\"$deployments\"}", + "legendFormat": "Running" + } + }, + "refId": "A", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "vllm:num_requests_waiting{deployments=\"$deployments\"}", + "legendFormat": "Waiting" + } + }, + "refId": "B", + "hidden": false + } + }, + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "expr": "vllm:num_requests_swapped{deployments=\"$deployments\"}", + "legendFormat": "Swapped" + } + }, + "refId": "C", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": {} + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + }, + "panel-8": { + "kind": "Panel", + "spec": { + "id": 8, + "title": "KV Cache Usage Over Time", + "description": "", + "links": [], + "data": { + "kind": "QueryGroup", + "spec": { + "queries": [ + { + "kind": "PanelQuery", + "spec": { + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "editorMode": "code", + "expr": "vllm:kv_cache_usage_perc{deployments=\"$deployments\"}", + "legendFormat": "KV Cache Usage", + "range": true + } + }, + "refId": "A", + "hidden": false + } + } + ], + "transformations": [], + "queryOptions": { + "maxDataPoints": 11000, + "interval": "1m" + } + } + }, + "vizConfig": { + "kind": "VizConfig", + "group": "timeseries", + "version": "12.4.0", + "spec": { + "options": { + "legend": { + "calcs": [ + "mean", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Name", + "sortDesc": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": 0, + "color": "green" + } + ] + }, + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + } + }, + "overrides": [] + } + } + } + } + } + }, + "layout": { + "kind": "RowsLayout", + "spec": { + "rows": [ + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Request Stats", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-2" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 4, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-3" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 8, + "y": 0, + "width": 4, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-4" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 6, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-5" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 18, + "y": 0, + "width": 6, + "height": 4, + "element": { + "kind": "ElementReference", + "name": "panel-6" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 4, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-7" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 4, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-8" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Per-Minute Metrics (RPM/ITPM/OTPM)", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-21" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 8, + "y": 0, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-22" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 16, + "y": 0, + "width": 8, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-23" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Latency Metrics", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-10" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-11" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 8, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-12" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 8, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-13" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Token Metrics", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-15" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-16" + } + } + } + ] + } + } + } + }, + { + "kind": "RowsLayoutRow", + "spec": { + "title": "Prefix Cache", + "collapse": false, + "layout": { + "kind": "GridLayout", + "spec": { + "items": [ + { + "kind": "GridLayoutItem", + "spec": { + "x": 0, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-18" + } + } + }, + { + "kind": "GridLayoutItem", + "spec": { + "x": 12, + "y": 0, + "width": 12, + "height": 8, + "element": { + "kind": "ElementReference", + "name": "panel-19" + } + } + } + ] + } + } + } + } + ] + } + }, + "links": [], + "liveNow": false, + "preload": false, + "tags": [ + "vllm", + "llm", + "inference" + ], + "timeSettings": { + "timezone": "browser", + "from": "now-1h", + "to": "now", + "autoRefresh": "5s", + "autoRefreshIntervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "hideTimepicker": false, + "fiscalYearStartMonth": 0 + }, + "title": "vLLM Performance Dashboard", + "variables": [ + { + "kind": "DatasourceVariable", + "spec": { + "name": "DS_PROMETHEUS", + "pluginId": "prometheus", + "refresh": "onDashboardLoad", + "regex": "", + "current": { + "text": "default", + "value": "default" + }, + "options": [], + "multi": false, + "includeAll": false, + "label": "Data Source", + "hide": "dontHide", + "skipUrlSync": false, + "allowCustomValue": true + } + }, + { + "kind": "QueryVariable", + "spec": { + "name": "deployments", + "current": { + "text": "mistral-medium", + "value": "mistral-medium" + }, + "label": "Deployment", + "hide": "dontHide", + "refresh": "onDashboardLoad", + "skipUrlSync": false, + "query": { + "kind": "DataQuery", + "group": "prometheus", + "version": "v0", + "datasource": { + "name": "${DS_PROMETHEUS}" + }, + "spec": { + "query": "label_values(vllm:num_requests_running, deployments)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + } + }, + "regex": "", + "regexApplyTo": "value", + "sort": "disabled", + "definition": "label_values(vllm:num_requests_running, deployments)", + "options": [], + "multi": false, + "includeAll": false, + "allowCustomValue": true + } + } + ] + } +} \ No newline at end of file