incus-contrib/bin/data/observability-dashboards/core/prometheus-health.json

749 lines
23 KiB
JSON

{
"uid": "incus-prometheus-health",
"title": "Prometheus Health",
"description": "Prometheus self-monitoring: targets up/down, scrape duration, samples ingested, TSDB size, head series, WAL stats.",
"tags": ["incus", "prometheus", "operations"],
"timezone": "browser",
"schemaVersion": 39,
"refresh": "30s",
"time": { "from": "now-1h", "to": "now" },
"fiscalYearStartMonth": 0,
"liveNow": false,
"editable": true,
"graphTooltip": 1,
"links": [
{
"asDropdown": true,
"icon": "external link",
"includeVars": true,
"keepTime": true,
"tags": ["incus"],
"targetBlank": false,
"title": "Incus Dashboards",
"tooltip": "Navigate to other Incus dashboards",
"type": "dashboards"
}
],
"templating": {
"list": []
},
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": { "type": "grafana", "uid": "-- Grafana --" },
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"panels": [
{
"type": "row",
"title": "Targets",
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 },
"id": 1,
"panels": []
},
{
"type": "stat",
"title": "Targets Up",
"description": "Number of scrape targets currently reporting as healthy (up == 1).",
"gridPos": { "h": 4, "w": 6, "x": 0, "y": 1 },
"id": 2,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "count(up == 1)",
"legendFormat": "Up",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"thresholds": {
"mode": "absolute",
"steps": [
{ "color": "green", "value": null }
]
},
"unit": "none",
"color": { "mode": "thresholds" }
},
"overrides": []
},
"options": {
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
}
},
{
"type": "stat",
"title": "Targets Down",
"description": "Number of scrape targets currently unreachable or failing (up == 0). Any value above 0 requires investigation.",
"gridPos": { "h": 4, "w": 6, "x": 6, "y": 1 },
"id": 3,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "count(up == 0)",
"legendFormat": "Down",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"thresholds": {
"mode": "absolute",
"steps": [
{ "color": "green", "value": null },
{ "color": "red", "value": 1 }
]
},
"unit": "none",
"color": { "mode": "thresholds" }
},
"overrides": []
},
"options": {
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto"
}
},
{
"type": "stat",
"title": "Avg Scrape Duration",
"description": "Average time Prometheus takes to scrape all targets. High values may indicate slow or overloaded exporters.",
"gridPos": { "h": 4, "w": 6, "x": 12, "y": 1 },
"id": 4,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "avg(scrape_duration_seconds)",
"legendFormat": "Avg Duration",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"thresholds": {
"mode": "absolute",
"steps": [
{ "color": "green", "value": null },
{ "color": "yellow", "value": 1 },
{ "color": "red", "value": 5 }
]
},
"unit": "s",
"color": { "mode": "thresholds" }
},
"overrides": []
},
"options": {
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto"
}
},
{
"type": "stat",
"title": "Samples Ingested/s",
"description": "Total rate of samples being scraped and ingested across all targets per second.",
"gridPos": { "h": 4, "w": 6, "x": 18, "y": 1 },
"id": 5,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "sum(rate(scrape_samples_scraped[$__rate_interval]))",
"legendFormat": "Samples/s",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"thresholds": {
"mode": "absolute",
"steps": [
{ "color": "green", "value": null }
]
},
"unit": "short",
"color": { "mode": "thresholds" }
},
"overrides": []
},
"options": {
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
}
},
{
"type": "table",
"title": "Target Health",
"description": "Per-target health status showing each scrape target's current state. UP (1) means healthy, DOWN (0) means unreachable or failing.",
"gridPos": { "h": 8, "w": 24, "x": 0, "y": 5 },
"id": 6,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "up",
"legendFormat": "",
"refId": "A",
"format": "table",
"instant": true
}
],
"fieldConfig": {
"defaults": {
"custom": {
"align": "auto",
"displayMode": "auto",
"inspect": false,
"filterable": true
},
"thresholds": {
"mode": "absolute",
"steps": [
{ "color": "green", "value": null }
]
},
"color": { "mode": "thresholds" }
},
"overrides": [
{
"matcher": { "id": "byName", "options": "instance" },
"properties": [
{ "id": "displayName", "value": "Instance" },
{ "id": "custom.width", "value": 300 }
]
},
{
"matcher": { "id": "byName", "options": "job" },
"properties": [
{ "id": "displayName", "value": "Job" },
{ "id": "custom.width", "value": 200 }
]
},
{
"matcher": { "id": "byName", "options": "Value" },
"properties": [
{ "id": "displayName", "value": "Status" },
{ "id": "custom.displayMode", "value": "color-background" },
{
"id": "mappings",
"value": [
{
"type": "value",
"options": {
"1": { "text": "UP", "color": "green" },
"0": { "text": "DOWN", "color": "red" }
}
}
]
}
]
}
]
},
"options": {
"showHeader": true,
"sortBy": [{ "displayName": "Job", "desc": false }],
"footer": { "show": false, "reducer": ["sum"], "fields": "" }
},
"transformations": [
{
"id": "organize",
"options": {
"excludeByName": { "Time": true, "__name__": true },
"indexByName": {
"instance": 0,
"job": 1,
"Value": 2
},
"renameByName": {}
}
}
]
},
{
"type": "row",
"title": "Scrape Performance",
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 13 },
"id": 7,
"panels": []
},
{
"type": "timeseries",
"title": "Scrape Duration by Job",
"description": "How long each scrape takes per job. Spikes indicate slow exporters or network issues between Prometheus and targets.",
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 14 },
"id": 8,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "scrape_duration_seconds",
"legendFormat": "{{job}} - {{instance}}",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "s",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
},
{
"type": "timeseries",
"title": "Samples Scraped by Job",
"description": "Rate of samples scraped per job. Sudden drops may indicate target failures; spikes may indicate new metrics being exposed.",
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 14 },
"id": 9,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "rate(scrape_samples_scraped[$__rate_interval])",
"legendFormat": "{{job}} - {{instance}}",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "short",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
},
{
"type": "row",
"title": "TSDB",
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 22 },
"id": 10,
"panels": []
},
{
"type": "stat",
"title": "TSDB Size",
"description": "Current on-disk size of the Prometheus TSDB storage directory including all blocks and WAL.",
"gridPos": { "h": 4, "w": 6, "x": 0, "y": 23 },
"id": 11,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "prometheus_tsdb_storage_size_bytes",
"legendFormat": "TSDB Size",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"thresholds": {
"mode": "absolute",
"steps": [
{ "color": "green", "value": null },
{ "color": "yellow", "value": 1073741824 },
{ "color": "red", "value": 5368709120 }
]
},
"unit": "bytes",
"color": { "mode": "thresholds" }
},
"overrides": []
},
"options": {
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
}
},
{
"type": "stat",
"title": "Head Series",
"description": "Number of active time series in the TSDB head block. High cardinality here impacts query performance and memory usage.",
"gridPos": { "h": 4, "w": 6, "x": 6, "y": 23 },
"id": 12,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "prometheus_tsdb_head_series",
"legendFormat": "Head Series",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"thresholds": {
"mode": "absolute",
"steps": [
{ "color": "green", "value": null },
{ "color": "yellow", "value": 100000 },
{ "color": "red", "value": 500000 }
]
},
"unit": "short",
"color": { "mode": "thresholds" }
},
"overrides": []
},
"options": {
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto"
}
},
{
"type": "timeseries",
"title": "Head Chunks",
"description": "Number of chunks in the TSDB head block. Growth correlates with active series count and scrape frequency.",
"gridPos": { "h": 8, "w": 6, "x": 12, "y": 23 },
"id": 13,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "prometheus_tsdb_head_chunks",
"legendFormat": "Head Chunks",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "short",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
},
{
"type": "timeseries",
"title": "WAL Size",
"description": "Size of the Prometheus write-ahead log (WAL). The WAL buffers recent writes before compaction into blocks.",
"gridPos": { "h": 8, "w": 6, "x": 18, "y": 23 },
"id": 14,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "prometheus_tsdb_wal_storage_size_bytes",
"legendFormat": "WAL Size",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "bytes",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
},
{
"type": "row",
"title": "TSDB Trends",
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 31 },
"id": 15,
"panels": []
},
{
"type": "timeseries",
"title": "TSDB Size Over Time",
"description": "Prometheus TSDB total storage size trend. Useful for capacity planning and detecting unexpected growth.",
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 32 },
"id": 16,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "prometheus_tsdb_storage_size_bytes",
"legendFormat": "TSDB Size",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "bytes",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
},
{
"type": "timeseries",
"title": "Samples Ingested Trend",
"description": "Rate of new samples appended to the TSDB head block. Correlates with scrape frequency and number of active series.",
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 32 },
"id": 17,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "rate(prometheus_tsdb_head_samples_appended_total[$__rate_interval])",
"legendFormat": "Samples/s",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "short",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
},
{
"type": "timeseries",
"title": "Compactions",
"description": "Rate of TSDB compaction operations. Compactions merge head block data into persistent blocks on disk for efficient storage.",
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 40 },
"id": 18,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "rate(prometheus_tsdb_compactions_total[$__rate_interval])",
"legendFormat": "Compactions/s",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "short",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
},
{
"type": "timeseries",
"title": "Head Series Count",
"description": "Number of active time series in the TSDB head block over time. Trend helps identify cardinality growth or label explosion.",
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 40 },
"id": 19,
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"targets": [
{
"expr": "prometheus_tsdb_head_series",
"legendFormat": "Head Series",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 15,
"gradientMode": "none",
"spanNulls": false,
"showPoints": "never",
"pointSize": 5,
"stacking": { "mode": "none", "group": "A" },
"axisPlacement": "auto",
"axisLabel": "",
"scaleDistribution": { "type": "linear" },
"thresholdsStyle": { "mode": "off" }
},
"unit": "short",
"color": { "mode": "palette-classic" },
"thresholds": {
"mode": "absolute",
"steps": [{ "color": "green", "value": null }]
}
},
"overrides": []
},
"options": {
"tooltip": { "mode": "multi", "sort": "desc" },
"legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }
}
}
]
}