3253 lines
138 KiB
JSON
3253 lines
138 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": "125px",
|
||
"panels": [
|
||
{
|
||
"content": "<p>\n This dashboard shows various health metrics for the write path.\n It is broken into sections for each service on the write path,\n and organized by the order in which the write request flows.\n <br/>\n Incoming metrics data travels from the gateway → distributor → ingester.\n <br/>\n For each service, there are 3 panels showing\n (1) requests per second to that service,\n (2) average, median, and p99 latency of requests to that service, and\n (3) p99 latency of requests to each instance of that service.\n</p>\n<p>\n It also includes metrics for the key-value (KV) stores used to manage\n the high-availability tracker and the ingesters.\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": "Writes dashboard description",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "100px",
|
||
"panels": [
|
||
{
|
||
"aliasColors": { },
|
||
"bars": false,
|
||
"dashLength": 10,
|
||
"dashes": false,
|
||
"datasource": "$datasource",
|
||
"fill": 1,
|
||
"format": "short",
|
||
"id": 2,
|
||
"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": [ ],
|
||
"spaceLength": 10,
|
||
"span": 2,
|
||
"stack": false,
|
||
"steppedLine": false,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(cluster_namespace_job:cortex_distributor_received_samples:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})",
|
||
"format": "time_series",
|
||
"instant": true,
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"thresholds": "70,80",
|
||
"timeFrom": null,
|
||
"timeShift": null,
|
||
"title": "Samples / sec",
|
||
"tooltip": {
|
||
"shared": false,
|
||
"sort": 0,
|
||
"value_type": "individual"
|
||
},
|
||
"type": "singlestat",
|
||
"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",
|
||
"description": "### Exemplars / sec\nThe total number of received exemplars by the distributors, excluding rejected and deduped exemplars, but not necessarily ingested by the ingesters.\n\n",
|
||
"fill": 1,
|
||
"format": "short",
|
||
"id": 3,
|
||
"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": [ ],
|
||
"spaceLength": 10,
|
||
"span": 2,
|
||
"stack": false,
|
||
"steppedLine": false,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(cluster_namespace_job:cortex_distributor_received_exemplars:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})",
|
||
"format": "time_series",
|
||
"instant": true,
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"thresholds": "70,80",
|
||
"timeFrom": null,
|
||
"timeShift": null,
|
||
"title": "Exemplars / sec",
|
||
"tooltip": {
|
||
"shared": false,
|
||
"sort": 0,
|
||
"value_type": "individual"
|
||
},
|
||
"type": "singlestat",
|
||
"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",
|
||
"description": "### In-memory series\nThe number of series not yet flushed to object storage that are held in ingester memory.\nWith classic storage we the sum of series from all ingesters is divided by the replication factor.\nWith ingest storage we take the maximum series of each ingest partition.\n\n",
|
||
"fill": 1,
|
||
"format": "short",
|
||
"id": 4,
|
||
"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": [ ],
|
||
"spaceLength": 10,
|
||
"span": 2,
|
||
"stack": false,
|
||
"steppedLine": false,
|
||
"targets": [
|
||
{
|
||
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cortex_ingester_memory_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"})\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_memory_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
||
"format": "time_series",
|
||
"instant": true,
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"thresholds": "70,80",
|
||
"timeFrom": null,
|
||
"timeShift": null,
|
||
"title": "In-memory series",
|
||
"tooltip": {
|
||
"shared": false,
|
||
"sort": 0,
|
||
"value_type": "individual"
|
||
},
|
||
"type": "singlestat",
|
||
"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",
|
||
"description": "### Exemplars in ingesters\nNumber of TSDB exemplars currently in ingesters' storage.\nWith classic storage we the sum of exemplars from all ingesters is divided by the replication factor.\nWith ingest storage we take the maximum exemplars of each ingest partition.\n\n",
|
||
"fill": 1,
|
||
"format": "short",
|
||
"id": 5,
|
||
"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": [ ],
|
||
"spaceLength": 10,
|
||
"span": 2,
|
||
"stack": false,
|
||
"steppedLine": false,
|
||
"targets": [
|
||
{
|
||
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cortex_ingester_tsdb_exemplar_exemplars_in_storage{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"})\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_exemplars_in_storage{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
||
"format": "time_series",
|
||
"instant": true,
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"thresholds": "70,80",
|
||
"timeFrom": null,
|
||
"timeShift": null,
|
||
"title": "Exemplars in ingesters",
|
||
"tooltip": {
|
||
"shared": false,
|
||
"sort": 0,
|
||
"value_type": "individual"
|
||
},
|
||
"type": "singlestat",
|
||
"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",
|
||
"fill": 1,
|
||
"format": "short",
|
||
"id": 6,
|
||
"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": [ ],
|
||
"spaceLength": 10,
|
||
"span": 2,
|
||
"stack": false,
|
||
"steppedLine": false,
|
||
"targets": [
|
||
{
|
||
"expr": "count(count by(user) (cortex_ingester_active_series{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}))",
|
||
"format": "time_series",
|
||
"instant": true,
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"thresholds": "70,80",
|
||
"timeFrom": null,
|
||
"timeShift": null,
|
||
"title": "Tenants",
|
||
"tooltip": {
|
||
"shared": false,
|
||
"sort": 0,
|
||
"value_type": "individual"
|
||
},
|
||
"type": "singlestat",
|
||
"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": false,
|
||
"title": "Headlines",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Requests / sec\nThe rate of successful, failed and rejected requests to distributor.\nRejected requests are requests that distributor fails to handle because of distributor instance limits.\nWhen distributor is configured to use \"early\" request rejection, then rejected requests are NOT included in other metrics.\nWhen distributor is not configured to use \"early\" request rejection, then rejected requests are also counted as \"errors\".\n\n",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"min": 0,
|
||
"thresholds": {
|
||
"mode": "absolute",
|
||
"steps": [ ]
|
||
},
|
||
"unit": "reqps"
|
||
},
|
||
"overrides": [
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "1xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EAB839",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "2xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "3xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#6ED0E0",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "4xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EF843C",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "5xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "OK"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "cancel"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#A9A9A9",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "error"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "success"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"id": 7,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 4,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (status) (\n label_replace(label_replace(rate(cortex_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", route=~\"/distributor.Distributor/Push|/httpgrpc.*|api_(v1|prom)_push|otlp_v1_metrics\"}[$__rate_interval]),\n \"status\", \"${1}xx\", \"status_code\", \"([0-9])..\"),\n \"status\", \"${1}\", \"status_code\", \"([a-zA-Z]+)\"))\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{status}}",
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"title": "Requests / sec",
|
||
"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": "ms"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 8,
|
||
"links": [ ],
|
||
"nullPointMode": "null as zero",
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 4,
|
||
"targets": [
|
||
{
|
||
"expr": "histogram_quantile(0.99, sum by (le) (cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", route=~\"/distributor.Distributor/Push|/httpgrpc.*|api_(v1|prom)_push|otlp_v1_metrics\"})) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "99th percentile",
|
||
"refId": "A"
|
||
},
|
||
{
|
||
"expr": "histogram_quantile(0.50, sum by (le) (cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", route=~\"/distributor.Distributor/Push|/httpgrpc.*|api_(v1|prom)_push|otlp_v1_metrics\"})) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "50th percentile",
|
||
"refId": "B"
|
||
},
|
||
{
|
||
"expr": "1e3 * sum(cluster_job_route:cortex_request_duration_seconds_sum:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", route=~\"/distributor.Distributor/Push|/httpgrpc.*|api_(v1|prom)_push|otlp_v1_metrics\"}) / sum(cluster_job_route:cortex_request_duration_seconds_count:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", route=~\"/distributor.Distributor/Push|/httpgrpc.*|api_(v1|prom)_push|otlp_v1_metrics\"})",
|
||
"format": "time_series",
|
||
"legendFormat": "Average",
|
||
"refId": "C"
|
||
}
|
||
],
|
||
"title": "Latency",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"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": "s"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 9,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"displayMode": "hidden",
|
||
"showLegend": false
|
||
},
|
||
"tooltip": {
|
||
"mode": "multi",
|
||
"sort": "desc"
|
||
}
|
||
},
|
||
"span": 4,
|
||
"targets": [
|
||
{
|
||
"exemplar": true,
|
||
"expr": "histogram_quantile(0.99, sum by(le, pod) (rate(cortex_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", route=~\"/distributor.Distributor/Push|/httpgrpc.*|api_(v1|prom)_push|otlp_v1_metrics\"}[$__rate_interval])))",
|
||
"format": "time_series",
|
||
"legendFormat": "",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Per pod p99 latency",
|
||
"type": "timeseries"
|
||
}
|
||
],
|
||
"repeat": null,
|
||
"repeatIteration": null,
|
||
"repeatRowId": null,
|
||
"showTitle": true,
|
||
"title": "Distributor",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Requests / sec\nThe rate of successful, failed and rejected requests to ingester.\nRejected requests are requests that ingester fails to handle because of ingester instance limits (ingester-max-inflight-push-requests, ingester-max-inflight-push-requests-bytes, ingester-max-ingestion-rate).\nWhen ingester is configured to use \"early\" request rejection, then rejected requests are NOT included in other metrics.\nWhen ingester is not configured to use \"early\" request rejection, then rejected requests are also counted as \"errors\".\n\n",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"min": 0,
|
||
"thresholds": {
|
||
"mode": "absolute",
|
||
"steps": [ ]
|
||
},
|
||
"unit": "reqps"
|
||
},
|
||
"overrides": [
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "1xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EAB839",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "2xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "3xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#6ED0E0",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "4xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EF843C",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "5xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "OK"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "cancel"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#A9A9A9",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "error"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "success"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"id": 10,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 4,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (status) (\n label_replace(label_replace(rate(cortex_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\",route=\"/cortex.Ingester/Push\"}[$__rate_interval]),\n \"status\", \"${1}xx\", \"status_code\", \"([0-9])..\"),\n \"status\", \"${1}\", \"status_code\", \"([a-zA-Z]+)\"))\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{status}}",
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"title": "Requests / sec",
|
||
"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": "ms"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 11,
|
||
"links": [ ],
|
||
"nullPointMode": "null as zero",
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 4,
|
||
"targets": [
|
||
{
|
||
"expr": "histogram_quantile(0.99, sum by (le) (cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", route=\"/cortex.Ingester/Push\"})) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "99th percentile",
|
||
"refId": "A"
|
||
},
|
||
{
|
||
"expr": "histogram_quantile(0.50, sum by (le) (cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", route=\"/cortex.Ingester/Push\"})) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "50th percentile",
|
||
"refId": "B"
|
||
},
|
||
{
|
||
"expr": "1e3 * sum(cluster_job_route:cortex_request_duration_seconds_sum:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", route=\"/cortex.Ingester/Push\"}) / sum(cluster_job_route:cortex_request_duration_seconds_count:sum_rate{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", route=\"/cortex.Ingester/Push\"})",
|
||
"format": "time_series",
|
||
"legendFormat": "Average",
|
||
"refId": "C"
|
||
}
|
||
],
|
||
"title": "Latency",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"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": "s"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 12,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"displayMode": "hidden",
|
||
"showLegend": false
|
||
},
|
||
"tooltip": {
|
||
"mode": "multi",
|
||
"sort": "desc"
|
||
}
|
||
},
|
||
"span": 4,
|
||
"targets": [
|
||
{
|
||
"exemplar": true,
|
||
"expr": "histogram_quantile(0.99, sum by(le, pod) (rate(cortex_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", route=\"/cortex.Ingester/Push\"}[$__rate_interval])))",
|
||
"format": "time_series",
|
||
"legendFormat": "",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Per pod p99 latency",
|
||
"type": "timeseries"
|
||
}
|
||
],
|
||
"repeat": null,
|
||
"repeatIteration": null,
|
||
"repeatRowId": null,
|
||
"showTitle": true,
|
||
"title": "Ingester",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Replicas\nThe maximum and current number of distributor replicas.<br /><br />\nNote: The current number of replicas can still show 1 replica even when scaled to 0.\nBecause HPA never reports 0 replicas, the query will report 0 only if the HPA is not active.\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": "byRegexp",
|
||
"options": "/Max .+/"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "custom.fillOpacity",
|
||
"value": 0
|
||
},
|
||
{
|
||
"id": "custom.lineStyle",
|
||
"value": {
|
||
"fill": "dash"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byRegexp",
|
||
"options": "/Current .+/"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "custom.fillOpacity",
|
||
"value": 0
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byRegexp",
|
||
"options": "/Min .+/"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "custom.fillOpacity",
|
||
"value": 0
|
||
},
|
||
{
|
||
"id": "custom.lineStyle",
|
||
"value": {
|
||
"fill": "dash"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"id": 13,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "max by (scaletargetref_name) (\n kube_horizontalpodautoscaler_spec_max_replicas{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"}\n # Add the scaletargetref_name label for readability\n + on (cluster, namespace, horizontalpodautoscaler) group_left (scaletargetref_name)\n 0*kube_horizontalpodautoscaler_info{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"}\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "Max {{ scaletargetref_name }}",
|
||
"legendLink": null
|
||
},
|
||
{
|
||
"expr": "max by (scaletargetref_name) (\n kube_horizontalpodautoscaler_status_current_replicas{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"}\n # HPA doesn't go to 0 replicas, so we multiply by 0 if the HPA is not active\n * on (cluster, namespace, horizontalpodautoscaler)\n kube_horizontalpodautoscaler_status_condition{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\", condition=\"ScalingActive\", status=\"true\"}\n # Add the scaletargetref_name label for readability\n + on (cluster, namespace, horizontalpodautoscaler) group_left (scaletargetref_name)\n 0*kube_horizontalpodautoscaler_info{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"}\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "Current {{ scaletargetref_name }}",
|
||
"legendLink": null
|
||
},
|
||
{
|
||
"expr": "max by (scaletargetref_name) (\n kube_horizontalpodautoscaler_spec_min_replicas{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"}\n # Add the scaletargetref_name label for readability\n + on (cluster, namespace, horizontalpodautoscaler) group_left (scaletargetref_name)\n 0*kube_horizontalpodautoscaler_info{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"}\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "Min {{ scaletargetref_name }}",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Replicas",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Scaling metric (CPU): Desired replicas\nThis panel shows the scaling metric exposed by KEDA divided by the target/threshold used.\nIt should represent the desired number of replicas, ignoring the min/max constraints applied later.\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": 14,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (scaler) (\n label_replace(\n keda_scaler_metrics_value{cluster=~\"$cluster\", exported_namespace=~\"$namespace\", scaler=~\".*cpu.*\"},\n \"namespace\", \"$1\", \"exported_namespace\", \"(.*)\"\n )\n /\n on(cluster, namespace, scaledObject, metric) group_left label_replace(\n label_replace(\n kube_horizontalpodautoscaler_spec_target_metric{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"},\n \"metric\", \"$1\", \"metric_name\", \"(.+)\"\n ),\n \"scaledObject\", \"$1\", \"horizontalpodautoscaler\", \"keda-hpa-(.*)\"\n )\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{ scaler }}",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Scaling metric (CPU): Desired replicas",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Scaling metric (memory): Desired replicas\nThis panel shows the scaling metric exposed by KEDA divided by the target/threshold used.\nIt should represent the desired number of replicas, ignoring the min/max constraints applied later.\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 by (scaler) (\n label_replace(\n keda_scaler_metrics_value{cluster=~\"$cluster\", exported_namespace=~\"$namespace\", scaler=~\".*memory.*\"},\n \"namespace\", \"$1\", \"exported_namespace\", \"(.*)\"\n )\n /\n on(cluster, namespace, scaledObject, metric) group_left label_replace(\n label_replace(\n kube_horizontalpodautoscaler_spec_target_metric{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"},\n \"metric\", \"$1\", \"metric_name\", \"(.+)\"\n ),\n \"scaledObject\", \"$1\", \"horizontalpodautoscaler\", \"keda-hpa-(.*)\"\n )\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{ scaler }}",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Scaling metric (memory): Desired replicas",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Autoscaler failures rate\nThe rate of failures in the KEDA custom metrics API server. Whenever an error occurs, the KEDA custom\nmetrics server is unable to query the scaling metric from Prometheus so the autoscaler woudln't work properly.\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(cluster, namespace, scaler, metric, scaledObject) (\n label_replace(\n rate(keda_scaler_errors[$__rate_interval]),\n \"namespace\", \"$1\", \"exported_namespace\", \"(.+)\"\n )\n) +\non(cluster, namespace, metric, scaledObject) group_left\nlabel_replace(\n label_replace(\n kube_horizontalpodautoscaler_spec_target_metric{cluster=~\"$cluster\", namespace=~\"$namespace\", horizontalpodautoscaler=~\"keda-hpa-distributor\"} * 0,\n \"scaledObject\", \"$1\", \"horizontalpodautoscaler\", \"keda-hpa-(.*)\"\n ),\n \"metric\", \"$1\", \"metric_name\", \"(.+)\"\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{scaler}} failures",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Autoscaler failures rate",
|
||
"type": "timeseries"
|
||
}
|
||
],
|
||
"repeat": null,
|
||
"repeatIteration": null,
|
||
"repeatRowId": null,
|
||
"showTitle": true,
|
||
"title": "Distributor – autoscaling",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"min": 0,
|
||
"thresholds": {
|
||
"mode": "absolute",
|
||
"steps": [ ]
|
||
},
|
||
"unit": "reqps"
|
||
},
|
||
"overrides": [
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "1xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EAB839",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "2xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "3xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#6ED0E0",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "4xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EF843C",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "5xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "OK"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "cancel"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#A9A9A9",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "error"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "success"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"id": 17,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (status) (\n label_replace(label_replace(rate(cortex_kv_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-hatracker\"}[$__rate_interval]),\n \"status\", \"${1}xx\", \"status_code\", \"([0-9])..\"),\n \"status\", \"${1}\", \"status_code\", \"([a-zA-Z]+)\"))\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{status}}",
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"title": "Requests / sec",
|
||
"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": "ms"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 18,
|
||
"links": [ ],
|
||
"nullPointMode": "null as zero",
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "histogram_quantile(0.99, sum(rate(cortex_kv_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-hatracker\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "99th Percentile",
|
||
"refId": "A"
|
||
},
|
||
{
|
||
"expr": "histogram_quantile(0.50, sum(rate(cortex_kv_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-hatracker\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "50th Percentile",
|
||
"refId": "B"
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_kv_request_duration_seconds_sum{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-hatracker\"}[$__rate_interval])) * 1e3 / sum(rate(cortex_kv_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-hatracker\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "Average",
|
||
"refId": "C"
|
||
}
|
||
],
|
||
"title": "Latency",
|
||
"type": "timeseries",
|
||
"yaxes": [
|
||
{
|
||
"format": "ms",
|
||
"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": "Distributor - key-value store for high-availability (HA) deduplication",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"min": 0,
|
||
"thresholds": {
|
||
"mode": "absolute",
|
||
"steps": [ ]
|
||
},
|
||
"unit": "reqps"
|
||
},
|
||
"overrides": [
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "1xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EAB839",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "2xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "3xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#6ED0E0",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "4xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EF843C",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "5xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "OK"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "cancel"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#A9A9A9",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "error"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "success"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"id": 19,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (status) (\n label_replace(label_replace(rate(cortex_kv_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-(lifecycler|ring)\"}[$__rate_interval]),\n \"status\", \"${1}xx\", \"status_code\", \"([0-9])..\"),\n \"status\", \"${1}\", \"status_code\", \"([a-zA-Z]+)\"))\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{status}}",
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"title": "Requests / sec",
|
||
"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": "ms"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 20,
|
||
"links": [ ],
|
||
"nullPointMode": "null as zero",
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "histogram_quantile(0.99, sum(rate(cortex_kv_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-(lifecycler|ring)\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "99th Percentile",
|
||
"refId": "A"
|
||
},
|
||
{
|
||
"expr": "histogram_quantile(0.50, sum(rate(cortex_kv_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-(lifecycler|ring)\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "50th Percentile",
|
||
"refId": "B"
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_kv_request_duration_seconds_sum{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-(lifecycler|ring)\"}[$__rate_interval])) * 1e3 / sum(rate(cortex_kv_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\", kv_name=~\"distributor-(lifecycler|ring)\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "Average",
|
||
"refId": "C"
|
||
}
|
||
],
|
||
"title": "Latency",
|
||
"type": "timeseries",
|
||
"yaxes": [
|
||
{
|
||
"format": "ms",
|
||
"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": "Distributor - key-value store for distributors ring",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"min": 0,
|
||
"thresholds": {
|
||
"mode": "absolute",
|
||
"steps": [ ]
|
||
},
|
||
"unit": "reqps"
|
||
},
|
||
"overrides": [
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "1xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EAB839",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "2xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "3xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#6ED0E0",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "4xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#EF843C",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "5xx"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "OK"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "cancel"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#A9A9A9",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "error"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "success"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#7EB26D",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"id": 21,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (status) (\n label_replace(label_replace(rate(cortex_kv_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", kv_name=~\"ingester-.*\"}[$__rate_interval]),\n \"status\", \"${1}xx\", \"status_code\", \"([0-9])..\"),\n \"status\", \"${1}\", \"status_code\", \"([a-zA-Z]+)\"))\n",
|
||
"format": "time_series",
|
||
"legendFormat": "{{status}}",
|
||
"refId": "A"
|
||
}
|
||
],
|
||
"title": "Requests / sec",
|
||
"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": "ms"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 22,
|
||
"links": [ ],
|
||
"nullPointMode": "null as zero",
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "histogram_quantile(0.99, sum(rate(cortex_kv_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", kv_name=~\"ingester-.*\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "99th Percentile",
|
||
"refId": "A"
|
||
},
|
||
{
|
||
"expr": "histogram_quantile(0.50, sum(rate(cortex_kv_request_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", kv_name=~\"ingester-.*\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "50th Percentile",
|
||
"refId": "B"
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_kv_request_duration_seconds_sum{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", kv_name=~\"ingester-.*\"}[$__rate_interval])) * 1e3 / sum(rate(cortex_kv_request_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\", kv_name=~\"ingester-.*\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "Average",
|
||
"refId": "C"
|
||
}
|
||
],
|
||
"title": "Latency",
|
||
"type": "timeseries",
|
||
"yaxes": [
|
||
{
|
||
"format": "ms",
|
||
"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": "Ingester - key-value store for the ingesters ring",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Uploaded blocks / sec\nThe rate of blocks being uploaded from the ingesters\nto object storage.\n\n",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"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": 23,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_shipper_uploads_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval])) - sum(rate(cortex_ingester_shipper_upload_failures_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "successful",
|
||
"legendLink": null
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_shipper_upload_failures_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "failed",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Uploaded blocks / sec",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Upload latency\nThe average, median (50th percentile), and 99th percentile time\nthe ingesters take to upload blocks to object 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": "ms"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 24,
|
||
"links": [ ],
|
||
"nullPointMode": "null as zero",
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "histogram_quantile(0.99, sum(rate(thanos_objstore_bucket_operation_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\",component=\"ingester\",operation=\"upload\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "99th Percentile",
|
||
"refId": "A"
|
||
},
|
||
{
|
||
"expr": "histogram_quantile(0.50, sum(rate(thanos_objstore_bucket_operation_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\",component=\"ingester\",operation=\"upload\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "50th Percentile",
|
||
"refId": "B"
|
||
},
|
||
{
|
||
"expr": "sum(rate(thanos_objstore_bucket_operation_duration_seconds_sum{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\",component=\"ingester\",operation=\"upload\"}[$__rate_interval])) * 1e3 / sum(rate(thanos_objstore_bucket_operation_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\",component=\"ingester\",operation=\"upload\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "Average",
|
||
"refId": "C"
|
||
}
|
||
],
|
||
"title": "Upload latency",
|
||
"type": "timeseries",
|
||
"yaxes": [
|
||
{
|
||
"format": "ms",
|
||
"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": "Ingester - shipper",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Compactions per second\nIngesters maintain a local TSDB per-tenant on disk. Each TSDB maintains a head block for each\nactive time series; these blocks get periodically compacted (by default, every 2h).\nThis panel shows the rate of compaction operations across all TSDBs on all ingesters.\n\n",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"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": 25,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_compactions_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "successful",
|
||
"legendLink": null
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_compactions_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "failed",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Compactions / sec",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Compaction latency\nThe average, median (50th percentile), and 99th percentile time ingesters take to compact TSDB head blocks\non the local filesystem.\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": "ms"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 26,
|
||
"links": [ ],
|
||
"nullPointMode": "null as zero",
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "histogram_quantile(0.99, sum(rate(cortex_ingester_tsdb_compaction_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "99th Percentile",
|
||
"refId": "A"
|
||
},
|
||
{
|
||
"expr": "histogram_quantile(0.50, sum(rate(cortex_ingester_tsdb_compaction_duration_seconds_bucket{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval])) by (le)) * 1e3",
|
||
"format": "time_series",
|
||
"legendFormat": "50th Percentile",
|
||
"refId": "B"
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_compaction_duration_seconds_sum{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval])) * 1e3 / sum(rate(cortex_ingester_tsdb_compaction_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "Average",
|
||
"refId": "C"
|
||
}
|
||
],
|
||
"title": "Compactions latency",
|
||
"type": "timeseries",
|
||
"yaxes": [
|
||
{
|
||
"format": "ms",
|
||
"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": "Ingester - TSDB head",
|
||
"titleSize": "h6"
|
||
},
|
||
{
|
||
"collapse": false,
|
||
"height": "250px",
|
||
"panels": [
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### WAL truncations per second\nThe WAL is truncated each time a new TSDB block is written. This panel measures the rate of\ntruncations.\n\n",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"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": 27,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_wal_truncations_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval])) - sum(rate(cortex_ingester_tsdb_wal_truncations_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "successful",
|
||
"legendLink": null
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_wal_truncations_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "failed",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "WAL truncations / sec",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Checkpoints created per second\nCheckpoints are created as part of the WAL truncation process.\nThis metric measures the rate of checkpoint creation.\n\n",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"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": 28,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_checkpoint_creations_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval])) - sum(rate(cortex_ingester_tsdb_checkpoint_creations_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "successful",
|
||
"legendLink": null
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_checkpoint_creations_failed_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "failed",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Checkpoints created / sec",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### WAL truncations latency (including checkpointing)\nAverage time taken to perform a full WAL truncation,\nincluding the time taken for the checkpointing to complete.\n\n",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 1,
|
||
"lineWidth": 1,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "none"
|
||
}
|
||
},
|
||
"min": 0,
|
||
"noValue": "0",
|
||
"thresholds": {
|
||
"mode": "absolute",
|
||
"steps": [ ]
|
||
},
|
||
"unit": "s"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 29,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_wal_truncate_duration_seconds_sum{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))\n/\nsum(rate(cortex_ingester_tsdb_wal_truncate_duration_seconds_count{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval])) >= 0\n",
|
||
"format": "time_series",
|
||
"legendFormat": "avg",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "WAL truncations latency (includes checkpointing)",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"fieldConfig": {
|
||
"defaults": {
|
||
"custom": {
|
||
"drawStyle": "line",
|
||
"fillOpacity": 100,
|
||
"lineWidth": 0,
|
||
"pointSize": 5,
|
||
"showPoints": "never",
|
||
"spanNulls": false,
|
||
"stacking": {
|
||
"group": "A",
|
||
"mode": "normal"
|
||
}
|
||
},
|
||
"min": 0,
|
||
"noValue": "0",
|
||
"thresholds": {
|
||
"mode": "absolute",
|
||
"steps": [ ]
|
||
},
|
||
"unit": "ops"
|
||
},
|
||
"overrides": [
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "WAL"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E24D42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": {
|
||
"id": "byName",
|
||
"options": "mmap-ed chunks"
|
||
},
|
||
"properties": [
|
||
{
|
||
"id": "color",
|
||
"value": {
|
||
"fixedColor": "#E28A42",
|
||
"mode": "fixed"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"id": 30,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_wal_corruptions_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "WAL",
|
||
"legendLink": null
|
||
},
|
||
{
|
||
"expr": "sum(rate(cortex_ingester_tsdb_mmap_chunk_corruptions_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "mmap-ed chunks",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Corruptions / sec",
|
||
"type": "timeseries"
|
||
}
|
||
],
|
||
"repeat": null,
|
||
"repeatIteration": null,
|
||
"repeatRowId": null,
|
||
"showTitle": true,
|
||
"title": "Ingester - TSDB write ahead log (WAL)",
|
||
"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": "ex/s"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 31,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(cluster_namespace_job:cortex_distributor_exemplars_in:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})",
|
||
"format": "time_series",
|
||
"legendFormat": "incoming exemplars",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Distributor exemplars incoming rate",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Distributor exemplars received 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, see `cortex_discarded_exemplars_total` for specific reasons rates.\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": "ex/s"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 32,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "sum(cluster_namespace_job:cortex_distributor_received_exemplars:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"})",
|
||
"format": "time_series",
|
||
"legendFormat": "received exemplars",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Distributor exemplars received rate",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Ingester ingested exemplars rate\nThe rate of exemplars ingested in the ingesters.\nEvery exemplar is replicated to a number of ingesters. With classic storage we the sum of rates from all ingesters is divided by the replication factor.\nWith ingest storage we take the maximum rate of each ingest partition.\nThis ingested exemplars rate should match the distributor's received exemplars rate.\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": "ex/s"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 33,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cluster_namespace_job:cortex_ingester_ingested_exemplars:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"})\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 cluster_namespace_job:cortex_ingester_ingested_exemplars:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "ingested exemplars",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Ingester ingested exemplars rate",
|
||
"type": "timeseries"
|
||
},
|
||
{
|
||
"datasource": "$datasource",
|
||
"description": "### Ingester appended exemplars rate\nThe rate 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": "ex/s"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 34,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 3,
|
||
"targets": [
|
||
{
|
||
"expr": "( # Classic storage\n sum by (cluster, namespace, ) (cluster_namespace_job:cortex_ingester_tsdb_exemplar_exemplars_appended:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"})\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 cluster_namespace_job:cortex_ingester_tsdb_exemplar_exemplars_appended:rate5m{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"},\n \"ingester_id\", \"$1\", \"pod\", \".*-([0-9]+)$\"\n )\n )\n )\n)\n",
|
||
"format": "time_series",
|
||
"legendFormat": "appended exemplars",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Ingester appended exemplars rate",
|
||
"type": "timeseries"
|
||
}
|
||
],
|
||
"repeat": null,
|
||
"repeatIteration": null,
|
||
"repeatRowId": null,
|
||
"showTitle": true,
|
||
"title": "Exemplars",
|
||
"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": "reqps"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 35,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (reason) (rate(cortex_distributor_instance_rejected_requests_total{cluster=~\"$cluster\", job=~\"($namespace)/((distributor.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "{{reason}}",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Rejected distributor requests",
|
||
"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": "reqps"
|
||
},
|
||
"overrides": [ ]
|
||
},
|
||
"id": 36,
|
||
"links": [ ],
|
||
"options": {
|
||
"legend": {
|
||
"showLegend": true
|
||
},
|
||
"tooltip": {
|
||
"mode": "single",
|
||
"sort": "none"
|
||
}
|
||
},
|
||
"span": 6,
|
||
"targets": [
|
||
{
|
||
"expr": "sum by (reason) (rate(cortex_ingester_instance_rejected_requests_total{cluster=~\"$cluster\", job=~\"($namespace)/((ingester.*|cortex|mimir|mimir-write.*))\"}[$__rate_interval]))",
|
||
"format": "time_series",
|
||
"legendFormat": "{{reason}}",
|
||
"legendLink": null
|
||
}
|
||
],
|
||
"title": "Rejected ingester requests",
|
||
"type": "timeseries"
|
||
}
|
||
],
|
||
"repeat": null,
|
||
"repeatIteration": null,
|
||
"repeatRowId": null,
|
||
"showTitle": true,
|
||
"title": "Instance Limits",
|
||
"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
|
||
}
|
||
]
|
||
},
|
||
"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 / Writes",
|
||
"uid": "8280707b8f16e7b87b840fc1cc92d4c5",
|
||
"version": 0
|
||
} |