2673 lines
113 KiB
JSON
2673 lines
113 KiB
JSON
{
|
|
"__requires": [
|
|
{
|
|
"id": "grafana",
|
|
"name": "Grafana",
|
|
"type": "grafana",
|
|
"version": "8.0.0"
|
|
}
|
|
],
|
|
"annotations": {
|
|
"list": [ ]
|
|
},
|
|
"editable": true,
|
|
"gnetId": null,
|
|
"graphTooltip": 1,
|
|
"hideControls": false,
|
|
"links": [
|
|
{
|
|
"asDropdown": true,
|
|
"icon": "external link",
|
|
"includeVars": true,
|
|
"keepTime": true,
|
|
"tags": [
|
|
"mimir"
|
|
],
|
|
"targetBlank": false,
|
|
"title": "Mimir dashboards",
|
|
"type": "dashboards"
|
|
}
|
|
],
|
|
"refresh": "10s",
|
|
"rows": [
|
|
{
|
|
"collapse": false,
|
|
"height": "25px",
|
|
"panels": [
|
|
{
|
|
"content": "<p>\n This dashboard shows various metrics detailed by tenant (user) selected above.\n</p>\n",
|
|
"datasource": null,
|
|
"description": "",
|
|
"id": 1,
|
|
"mode": "markdown",
|
|
"span": 12,
|
|
"title": "",
|
|
"transparent": true,
|
|
"type": "text"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": false,
|
|
"title": "Tenants dashboard description",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### All series\nNumber of active, in-memory, and owned series per user, and active series matching custom trackers (in parenthesis).\nNote that these counts include all series regardless of the type of data (counter, gauge, native histogram, etc.).\nNote that active series matching custom trackers are included in the total active series count.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "limit"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.fillOpacity",
|
|
"value": 0
|
|
},
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 2,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 4,
|
|
"targets": [
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, ) ((\n cortex_ingester_memory_series_created_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}\n - cortex_ingester_memory_series_removed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}\n)\n)\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, ) (\n max by (ingester_id, cluster, namespace, ) (\n label_replace(\n (\n cortex_ingester_memory_series_created_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}\n - cortex_ingester_memory_series_removed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}\n)\n,\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "in-memory",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "max(cortex_limits_overrides{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"max_global_series_per_user\", user=\"$user\"})\nor\nmax(cortex_limits_defaults{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"max_global_series_per_user\"})\n",
|
|
"format": "time_series",
|
|
"legendFormat": "limit",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cortex_ingester_active_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, ) (\n max by (ingester_id, cluster, namespace, ) (\n label_replace(\n cortex_ingester_active_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "active",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cortex_ingester_owned_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, ) (\n max by (ingester_id, cluster, namespace, ) (\n label_replace(\n cortex_ingester_owned_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "owned",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, name) (cortex_ingester_active_series_custom_tracker{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, name) (\n max by (ingester_id, cluster, namespace, name) (\n label_replace(\n cortex_ingester_active_series_custom_tracker{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "active ({{ name }})",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "All series",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### In-memory series per ingester\nLocal tenant series limit and number of in-memory series per ingester.\nBecause series can be unevenly distributed across ingesters, ingesters may hit the local limit at different times.\nNote that in-memory series may exceed the local limit if limiting based on owned series is enabled.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 0,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byRegexp",
|
|
"options": "/local limit .+/"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
},
|
|
{
|
|
"id": "color",
|
|
"value": {
|
|
"fixedColor": "yellow",
|
|
"mode": "fixed"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 3,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"span": 4,
|
|
"targets": [
|
|
{
|
|
"expr": "min by (job) (cortex_ingester_local_limits{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", limit=\"max_global_series_per_user\", user=\"$user\"})\n",
|
|
"format": "time_series",
|
|
"legendFormat": "local limit ({{job}})",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "cortex_ingester_memory_series_created_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}\n- cortex_ingester_memory_series_removed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}\n",
|
|
"format": "time_series",
|
|
"legendFormat": "{{pod}}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "In-memory series per ingester",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Owned series per ingester\nLocal tenant series limit and number of owned series per ingester.\nBecause series can be unevenly distributed across ingesters, ingesters may hit the local limit at different times.\nOwned series are the subset of an ingester's in-memory series that currently map to it in the ring\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 0,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byRegexp",
|
|
"options": "/local limit .+/"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
},
|
|
{
|
|
"id": "color",
|
|
"value": {
|
|
"fixedColor": "yellow",
|
|
"mode": "fixed"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 4,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"span": 4,
|
|
"targets": [
|
|
{
|
|
"expr": "min by (job) (cortex_ingester_local_limits{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", limit=\"max_global_series_per_user\", user=\"$user\"})\n",
|
|
"format": "time_series",
|
|
"legendFormat": "local limit ({{job}})",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "cortex_ingester_owned_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}\n",
|
|
"format": "time_series",
|
|
"legendFormat": "{{pod}}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Owned series per ingester",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Tenant series counts",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Series with exemplars\nNumber of series with exemplars currently in storage.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 5,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cortex_ingester_tsdb_exemplar_series_with_exemplars_in_storage{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, ) (\n max by (ingester_id, cluster, namespace, ) (\n label_replace(\n cortex_ingester_tsdb_exemplar_series_with_exemplars_in_storage{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "series",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Series with exemplars",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Oldest exemplar age\nThe age of the oldest exemplar stored in circular storage.\nUseful to check for what time range the current exemplar buffer limit allows.\nThis usually means the max age for all exemplars for a typical setup.\nThis is not true though if one of the series timestamp is in future compared to rest series.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "s"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 6,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "time() - min(cortex_ingester_tsdb_exemplar_last_exemplars_timestamp_seconds{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"} > 0)",
|
|
"format": "time_series",
|
|
"legendFormat": "age",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Oldest exemplar age",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Native histogram series\nNumber of active native histogram series per user, and active native histogram series matching custom trackers (in parenthesis).\nNote that active series matching custom trackers are included in the total active series count.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "limit"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.fillOpacity",
|
|
"value": 0
|
|
},
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 7,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cortex_ingester_active_native_histogram_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, ) (\n max by (ingester_id, cluster, namespace, ) (\n label_replace(\n cortex_ingester_active_native_histogram_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "active",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, name) (cortex_ingester_active_native_histogram_series_custom_tracker{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, name) (\n max by (ingester_id, cluster, namespace, name) (\n label_replace(\n cortex_ingester_active_native_histogram_series_custom_tracker{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "active ({{ name }})",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Native histogram series",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Total number of buckets used by native histogram series\nTotal number of buckets in active native histogram series per user, and total active native histogram buckets matching custom trackers (in parenthesis).\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "limit"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.fillOpacity",
|
|
"value": 0
|
|
},
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 8,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cortex_ingester_active_native_histogram_buckets{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, ) (\n max by (ingester_id, cluster, namespace, ) (\n label_replace(\n cortex_ingester_active_native_histogram_buckets{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "buckets",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, name) (cortex_ingester_active_native_histogram_buckets_custom_tracker{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, name) (\n max by (ingester_id, cluster, namespace, name) (\n label_replace(\n cortex_ingester_active_native_histogram_buckets_custom_tracker{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "buckets ({{ name }})",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Total number of buckets used by native histogram series",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Exemplars and native histograms",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor requests incoming rate\nThe rate of requests that have come in to the distributor, including rejected requests.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 9,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_requests_in_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor requests incoming rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor requests received (accepted) rate\nThe rate of received requests, excluding rejected requests.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "limit"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.fillOpacity",
|
|
"value": 0
|
|
},
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 10,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_received_requests_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "max(cortex_limits_overrides{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"request_rate\", user=\"$user\"})\nor\nmax(cortex_limits_defaults{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"request_rate\"})\n",
|
|
"format": "time_series",
|
|
"legendFormat": "limit",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor requests received (accepted) rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Newest seen sample age\nThe age of the newest received sample seen in the distributors.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "s"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 11,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "time() - max(cortex_distributor_latest_seen_sample_timestamp_seconds{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"} > 0)",
|
|
"format": "time_series",
|
|
"legendFormat": "age",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Newest seen sample age",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor discarded requests rate\nThe rate of each request's discarding reason.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 12,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (reason) (rate(cortex_discarded_requests_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ reason }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor discarded requests rate",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Distributor ingestion requests",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor samples incoming rate\nThe rate of samples that have come in to the distributor, including rejected or deduped exemplars.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 13,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_samples_in_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor samples incoming rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor samples received (accepted) rate\nThe rate of received samples, excluding rejected and deduped samples.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "limit"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.fillOpacity",
|
|
"value": 0
|
|
},
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 14,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_received_samples_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "max(cortex_limits_overrides{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"ingestion_rate\", user=\"$user\"})\nor\nmax(cortex_limits_defaults{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"ingestion_rate\"})\n",
|
|
"format": "time_series",
|
|
"legendFormat": "limit",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor samples received (accepted) rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor deduplicated/non-HA\nThe rate of deduplicated samples and the rate of received samples for a user that has HA tracking turned on, but the sample didn't contain both HA labels.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 15,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_deduped_samples_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "deduplicated",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_non_ha_samples_received_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "non-HA",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor deduplicated/non-HA",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor and ingester discarded samples rate\nThe rate of each sample's discarding reason.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 16,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (reason) (rate(cortex_discarded_samples_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ reason }} (distributor)",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "sum by (reason) (rate(cortex_discarded_samples_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ reason }} (ingester)",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor and ingester discarded samples rate",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Samples ingestion funnel",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor exemplars incoming rate\nThe rate of exemplars that have come in to the distributor, including rejected or deduped exemplars.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 17,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_exemplars_in_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor exemplars incoming rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor exemplars received (accepted) rate\nThe rate of received exemplars, excluding rejected and deduped exemplars.\nThis number can be sensibly lower than incoming rate because we dedupe the HA sent exemplars, and then reject based on time.\nSee discarded rate for reasons why exemplars are being discarded.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 18,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_distributor_received_exemplars_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor exemplars received (accepted) rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Distributor discarded exemplars rate\nThe rate of each exmplars' discarding reason.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 19,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (reason) (rate(cortex_discarded_exemplars_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ reason }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Distributor discarded exemplars rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Ingester appended exemplars rate\nTotal number of exemplars appended in the ingesters.\nThis can be lower than ingested exemplars rate since TSDB does not append the same exemplar twice, and those can be frequent.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 20,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (rate(cortex_ingester_tsdb_exemplar_exemplars_appended_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]))\n / on (cluster, namespace) group_left()\n max by (cluster, namespace) (cortex_distributor_replication_factor{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})\n)\nor\n( # Ingest storage\n sum by (cluster, namespace, ) (\n max by (ingester_id, cluster, namespace, ) (\n label_replace(\n rate(cortex_ingester_tsdb_exemplar_exemplars_appended_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"}[$__rate_interval]),\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Ingester appended exemplars rate",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Exemplars ingestion funnel",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": true,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Symbol table size for loaded blocks\nSize of symbol table in memory for loaded blocks, averaged by ingester.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "bytes"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 21,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (job) (cortex_ingester_tsdb_symbol_table_size_bytes{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ job }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Symbol table size for loaded blocks",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Space used by local blocks\nThe number of bytes that are currently used for local storage by all blocks.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "bytes"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 22,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (job) (cortex_ingester_tsdb_storage_blocks_bytes{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", user=\"$user\"})",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ job }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Space used by local blocks",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Ingesters' storage",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Number of groups\nTotal number of rule groups for a tenant.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "limit"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "custom.fillOpacity",
|
|
"value": 0
|
|
},
|
|
{
|
|
"id": "custom.lineStyle",
|
|
"value": {
|
|
"fill": "dash"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 23,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "count(sum by (rule_group) (cortex_prometheus_rule_group_rules{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"}))",
|
|
"format": "time_series",
|
|
"legendFormat": "groups",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "max(cortex_limits_overrides{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"ruler_max_rule_groups_per_tenant\", user=\"$user\"})\nor\nmax(cortex_limits_defaults{cluster=~\"$cluster\", job=~\"($namespace)/((overrides-exporter|mimir-backend.*))\", limit_name=\"ruler_max_rule_groups_per_tenant\"})\n",
|
|
"format": "time_series",
|
|
"legendFormat": "limit",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Number of groups",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Number of rules\nTotal number of rules for a tenant.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 24,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(cortex_prometheus_rule_group_rules{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"})",
|
|
"format": "time_series",
|
|
"legendFormat": "rules",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Number of rules",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 25,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_prometheus_rule_evaluations_total{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Total evaluations rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "normal"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 26,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 3,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (rule_group) (rate(cortex_prometheus_rule_evaluation_failures_total{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval])) > 0",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ rule_group }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Failed evaluations rate",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Rules",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": true,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"aliasColors": { },
|
|
"bars": false,
|
|
"dashLength": 10,
|
|
"dashes": false,
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "Time"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "displayName",
|
|
"value": "Time"
|
|
},
|
|
{
|
|
"id": "custom.hidden",
|
|
"value": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "Value #A"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "displayName",
|
|
"value": "rules"
|
|
},
|
|
{
|
|
"id": "decimals",
|
|
"value": 2
|
|
},
|
|
{
|
|
"id": "unit",
|
|
"value": "short"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"fill": 1,
|
|
"id": 27,
|
|
"legend": {
|
|
"avg": false,
|
|
"current": false,
|
|
"max": false,
|
|
"min": false,
|
|
"show": true,
|
|
"total": false,
|
|
"values": false
|
|
},
|
|
"lines": true,
|
|
"linewidth": 1,
|
|
"links": [ ],
|
|
"nullPointMode": "null as zero",
|
|
"percentage": false,
|
|
"pointradius": 5,
|
|
"points": false,
|
|
"renderer": "flot",
|
|
"seriesOverrides": [ ],
|
|
"sort": {
|
|
"col": 2,
|
|
"desc": true
|
|
},
|
|
"spaceLength": 10,
|
|
"span": 6,
|
|
"stack": false,
|
|
"steppedLine": false,
|
|
"targets": [
|
|
{
|
|
"expr": "topk($limit, sum by (rule_group) (cortex_prometheus_rule_group_rules{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"}))",
|
|
"format": "table",
|
|
"instant": true,
|
|
"legendFormat": "",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"thresholds": [ ],
|
|
"timeFrom": null,
|
|
"timeShift": null,
|
|
"title": "Top $limit biggest groups",
|
|
"tooltip": {
|
|
"shared": false,
|
|
"sort": 0,
|
|
"value_type": "individual"
|
|
},
|
|
"transform": "table",
|
|
"type": "table",
|
|
"xaxis": {
|
|
"buckets": null,
|
|
"mode": "time",
|
|
"name": null,
|
|
"show": true,
|
|
"values": [ ]
|
|
},
|
|
"yaxes": [
|
|
{
|
|
"format": "short",
|
|
"label": null,
|
|
"logBase": 1,
|
|
"max": null,
|
|
"min": 0,
|
|
"show": true
|
|
},
|
|
{
|
|
"format": "short",
|
|
"label": null,
|
|
"logBase": 1,
|
|
"max": null,
|
|
"min": null,
|
|
"show": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"aliasColors": { },
|
|
"bars": false,
|
|
"dashLength": 10,
|
|
"dashes": false,
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "Time"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "displayName",
|
|
"value": "Time"
|
|
},
|
|
{
|
|
"id": "custom.hidden",
|
|
"value": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "Value #A"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "displayName",
|
|
"value": "seconds"
|
|
},
|
|
{
|
|
"id": "decimals",
|
|
"value": 2
|
|
},
|
|
{
|
|
"id": "unit",
|
|
"value": "short"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"fill": 1,
|
|
"id": 28,
|
|
"legend": {
|
|
"avg": false,
|
|
"current": false,
|
|
"max": false,
|
|
"min": false,
|
|
"show": true,
|
|
"total": false,
|
|
"values": false
|
|
},
|
|
"lines": true,
|
|
"linewidth": 1,
|
|
"links": [ ],
|
|
"nullPointMode": "null as zero",
|
|
"percentage": false,
|
|
"pointradius": 5,
|
|
"points": false,
|
|
"renderer": "flot",
|
|
"seriesOverrides": [ ],
|
|
"sort": {
|
|
"col": 2,
|
|
"desc": true
|
|
},
|
|
"spaceLength": 10,
|
|
"span": 6,
|
|
"stack": false,
|
|
"steppedLine": false,
|
|
"targets": [
|
|
{
|
|
"expr": "topk($limit, sum by (rule_group) (cortex_prometheus_rule_group_last_duration_seconds{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"}))",
|
|
"format": "table",
|
|
"instant": true,
|
|
"legendFormat": "",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"thresholds": [ ],
|
|
"timeFrom": null,
|
|
"timeShift": null,
|
|
"title": "Top $limit slowest groups (last evaluation)",
|
|
"tooltip": {
|
|
"shared": false,
|
|
"sort": 0,
|
|
"value_type": "individual"
|
|
},
|
|
"transform": "table",
|
|
"type": "table",
|
|
"xaxis": {
|
|
"buckets": null,
|
|
"mode": "time",
|
|
"name": null,
|
|
"show": true,
|
|
"values": [ ]
|
|
},
|
|
"yaxes": [
|
|
{
|
|
"format": "short",
|
|
"label": null,
|
|
"logBase": 1,
|
|
"max": null,
|
|
"min": 0,
|
|
"show": true
|
|
},
|
|
{
|
|
"format": "short",
|
|
"label": null,
|
|
"logBase": 1,
|
|
"max": null,
|
|
"min": null,
|
|
"show": false
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Top rules",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 29,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_prometheus_notifications_sent_total{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Sent notifications rate",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "rate"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "color",
|
|
"value": {
|
|
"fixedColor": "#E24D42",
|
|
"mode": "fixed"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 30,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": false
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_prometheus_notifications_errors_total{cluster=~\"$cluster\", job=~\"($namespace)/((ruler|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "rate",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Failed notifications rate",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Notifications",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 31,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 4,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (user) (cortex_alertmanager_alerts{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"})",
|
|
"format": "time_series",
|
|
"legendFormat": "alerts",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "sum by (user) (cortex_alertmanager_silences{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"})",
|
|
"format": "time_series",
|
|
"legendFormat": "silences",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Alerts",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "failed"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "color",
|
|
"value": {
|
|
"fixedColor": "#E24D42",
|
|
"mode": "fixed"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": {
|
|
"id": "byName",
|
|
"options": "successful"
|
|
},
|
|
"properties": [
|
|
{
|
|
"id": "color",
|
|
"value": {
|
|
"fixedColor": "#7EB26D",
|
|
"mode": "fixed"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"id": 32,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 4,
|
|
"targets": [
|
|
{
|
|
"expr": "(\nsum(rate(cortex_alertmanager_notifications_total{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval]))\n-\non() (sum(rate(cortex_alertmanager_notifications_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval])) or on () vector(0))\n) > 0\n",
|
|
"format": "time_series",
|
|
"legendFormat": "successful",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "sum(rate(cortex_alertmanager_notifications_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "failed",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "NPS",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 33,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 4,
|
|
"targets": [
|
|
{
|
|
"expr": "(\nsum(rate(cortex_alertmanager_notifications_total{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval])) by(integration)\n-\n(sum(rate(cortex_alertmanager_notifications_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval])) by(integration) or\n (sum(rate(cortex_alertmanager_notifications_total{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval])) by(integration) * 0)\n)) > 0\n",
|
|
"format": "time_series",
|
|
"legendFormat": "success - {{ integration }}",
|
|
"legendLink": null
|
|
},
|
|
{
|
|
"expr": "sum(rate(cortex_alertmanager_notifications_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((alertmanager|cortex|mimir|mimir-backend.*))\", user=\"$user\"}[$__rate_interval])) by(integration)",
|
|
"format": "time_series",
|
|
"legendFormat": "failed - {{ integration }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "NPS by integration",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Alertmanager",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 34,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_query_frontend_queries_total{cluster=~\"$cluster\", job=~\"($namespace)/((query-frontend.*|cortex|mimir|mimir-read.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "Queries / Sec",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Rate of Read Requests - query-frontend",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 35,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(cortex_query_scheduler_queue_length{cluster=~\"$cluster\", job=~\"($namespace)/((query-scheduler.*|mimir-backend.*))\", user=\"$user\"})",
|
|
"format": "time_series",
|
|
"legendFormat": "Queue Length",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Number of Queries Queued - query-scheduler",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Read Path - Queries (User)",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": false,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 36,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(cortex_query_frontend_queries_total{cluster=~\"$cluster\", job=~\"($namespace)/((ruler-query-frontend.*))\", user=\"$user\"}[$__rate_interval]))",
|
|
"format": "time_series",
|
|
"legendFormat": "Queries / Sec",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Rate of Read Requests - ruler-query-frontend",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 37,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum(cortex_query_scheduler_queue_length{cluster=~\"$cluster\", job=~\"($namespace)/((ruler-query-scheduler.*))\", user=\"$user\"})",
|
|
"format": "time_series",
|
|
"legendFormat": "Queue Length",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Number of Queries Queued - ruler-query-scheduler",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Read Path - Queries (Ruler)",
|
|
"titleSize": "h6"
|
|
},
|
|
{
|
|
"collapse": true,
|
|
"height": "250px",
|
|
"panels": [
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Estimated Compaction Jobs\nEstimated number of compaction jobs for selected user, based on latest version of bucket index. When user sends data, ingesters upload new user blocks every 2 hours\n(shortly after 01:00 UTC, 03:00 UTC, 05:00 UTC, etc.), and compactors should process all of the blocks within 2h interval.\nIf this graph regularly goes to zero (or close to zero) in 2 hour intervals, then compaction for this user works correctly.\n\nDepending on the configuration, there are two types of jobs: `split` jobs and `merge` jobs. Split jobs will only show up when user is configured with positive number of `compactor_split_and_merge_shards`.\nValues for split and merge jobs are stacked.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 50,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "normal"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 38,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (type) (cortex_bucket_index_estimated_compaction_jobs{cluster=~\"$cluster\", job=~\"($namespace)/((compactor.*|cortex|mimir|mimir-backend.*))\", user=\"$user\"})\nand ignoring(type)\n(sum(rate(cortex_bucket_index_estimated_compaction_jobs_errors_total{cluster=~\"$cluster\", job=~\"($namespace)/((compactor.*|cortex|mimir|mimir-backend.*))\"}[$__rate_interval])) == 0)\n",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ job }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Estimated Compaction Jobs",
|
|
"type": "timeseries"
|
|
},
|
|
{
|
|
"datasource": "$datasource",
|
|
"description": "### Number of blocks\nNumber of blocks stored in long-term storage for this user.\n\n",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 1,
|
|
"lineWidth": 1,
|
|
"pointSize": 5,
|
|
"showPoints": "never",
|
|
"spanNulls": false,
|
|
"stacking": {
|
|
"group": "A",
|
|
"mode": "none"
|
|
}
|
|
},
|
|
"min": 0,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [ ]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": [ ]
|
|
},
|
|
"id": 39,
|
|
"links": [ ],
|
|
"options": {
|
|
"legend": {
|
|
"showLegend": true
|
|
},
|
|
"tooltip": {
|
|
"mode": "single",
|
|
"sort": "none"
|
|
}
|
|
},
|
|
"span": 6,
|
|
"targets": [
|
|
{
|
|
"expr": "max by (user) (cortex_bucket_blocks_count{cluster=~\"$cluster\", job=~\"($namespace)/((compactor.*|cortex|mimir|mimir-backend.*))\", user=\"$user\"})\n",
|
|
"format": "time_series",
|
|
"legendFormat": "{{ job }}",
|
|
"legendLink": null
|
|
}
|
|
],
|
|
"title": "Blocks",
|
|
"type": "timeseries"
|
|
}
|
|
],
|
|
"repeat": null,
|
|
"repeatIteration": null,
|
|
"repeatRowId": null,
|
|
"showTitle": true,
|
|
"title": "Compactions",
|
|
"titleSize": "h6"
|
|
}
|
|
],
|
|
"schemaVersion": 14,
|
|
"style": "dark",
|
|
"tags": [
|
|
"mimir"
|
|
],
|
|
"templating": {
|
|
"list": [
|
|
{
|
|
"current": {
|
|
"text": "default",
|
|
"value": "default"
|
|
},
|
|
"hide": 0,
|
|
"label": "Data source",
|
|
"name": "datasource",
|
|
"options": [ ],
|
|
"query": "prometheus",
|
|
"refresh": 1,
|
|
"regex": "",
|
|
"type": "datasource"
|
|
},
|
|
{
|
|
"allValue": ".+",
|
|
"current": {
|
|
"selected": true,
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"datasource": "$datasource",
|
|
"hide": 0,
|
|
"includeAll": true,
|
|
"label": "cluster",
|
|
"multi": true,
|
|
"name": "cluster",
|
|
"options": [ ],
|
|
"query": "label_values(cortex_build_info, cluster)",
|
|
"refresh": 1,
|
|
"regex": "",
|
|
"sort": 1,
|
|
"tagValuesQuery": "",
|
|
"tags": [ ],
|
|
"tagsQuery": "",
|
|
"type": "query",
|
|
"useTags": false
|
|
},
|
|
{
|
|
"allValue": ".+",
|
|
"current": {
|
|
"selected": true,
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"datasource": "$datasource",
|
|
"hide": 0,
|
|
"includeAll": true,
|
|
"label": "namespace",
|
|
"multi": true,
|
|
"name": "namespace",
|
|
"options": [ ],
|
|
"query": "label_values(cortex_build_info{cluster=~\"$cluster\"}, namespace)",
|
|
"refresh": 1,
|
|
"regex": "",
|
|
"sort": 1,
|
|
"tagValuesQuery": "",
|
|
"tags": [ ],
|
|
"tagsQuery": "",
|
|
"type": "query",
|
|
"useTags": false
|
|
},
|
|
{
|
|
"allValue": null,
|
|
"current": {
|
|
"text": "prod",
|
|
"value": "prod"
|
|
},
|
|
"datasource": "$datasource",
|
|
"hide": 0,
|
|
"includeAll": false,
|
|
"label": "user",
|
|
"multi": false,
|
|
"name": "user",
|
|
"options": [ ],
|
|
"query": "label_values(cortex_ingester_active_series{cluster=~\"$cluster\", namespace=~\"$namespace\"}, user)",
|
|
"refresh": 1,
|
|
"regex": "",
|
|
"sort": 1,
|
|
"tagValuesQuery": "",
|
|
"tags": [ ],
|
|
"tagsQuery": "",
|
|
"type": "query",
|
|
"useTags": false
|
|
},
|
|
{
|
|
"current": {
|
|
"selected": true,
|
|
"text": "10",
|
|
"value": "10"
|
|
},
|
|
"hide": 0,
|
|
"includeAll": false,
|
|
"multi": false,
|
|
"name": "limit",
|
|
"options": [
|
|
{
|
|
"selected": true,
|
|
"text": "10",
|
|
"value": "10"
|
|
},
|
|
{
|
|
"selected": false,
|
|
"text": "50",
|
|
"value": "50"
|
|
},
|
|
{
|
|
"selected": false,
|
|
"text": "100",
|
|
"value": "100"
|
|
},
|
|
{
|
|
"selected": false,
|
|
"text": "500",
|
|
"value": "500"
|
|
},
|
|
{
|
|
"selected": false,
|
|
"text": "1000",
|
|
"value": "1000"
|
|
}
|
|
],
|
|
"type": "custom"
|
|
}
|
|
]
|
|
},
|
|
"time": {
|
|
"from": "now-1h",
|
|
"to": "now"
|
|
},
|
|
"timepicker": {
|
|
"refresh_intervals": [
|
|
"5s",
|
|
"10s",
|
|
"30s",
|
|
"1m",
|
|
"5m",
|
|
"15m",
|
|
"30m",
|
|
"1h",
|
|
"2h",
|
|
"1d"
|
|
],
|
|
"time_options": [
|
|
"5m",
|
|
"15m",
|
|
"1h",
|
|
"6h",
|
|
"12h",
|
|
"24h",
|
|
"2d",
|
|
"7d",
|
|
"30d"
|
|
]
|
|
},
|
|
"timezone": "utc",
|
|
"title": "Mimir / Tenants",
|
|
"uid": "35fa247ce651ba189debf33d7ae41611",
|
|
"version": 0
|
|
} |