Skip to content

Commit

Permalink
Show rejected distributor requests in the dashboard. (#6556)
Browse files Browse the repository at this point in the history
* Show rejected distributor requests in the dashboard.

Signed-off-by: Peter Štibraný <[email protected]>

* CHANGELOG.md

Signed-off-by: Peter Štibraný <[email protected]>

* CHANGELOG.md

Signed-off-by: Peter Štibraný <[email protected]>

* make build-helm-tests

Signed-off-by: Peter Štibraný <[email protected]>

---------

Signed-off-by: Peter Štibraný <[email protected]>
  • Loading branch information
pstibrany authored Nov 6, 2023
1 parent 0f6d6e5 commit dc6d3f0
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 11 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@

### Mixin

* [ENHANCEMENT] Dashboards: Optionally show rejected requests on Mimir Writes dashboard. Useful when used together with "early request rejection". #6132
* [ENHANCEMENT] Dashboards: Optionally show rejected requests on Mimir Writes dashboard. Useful when used together with "early request rejection" in ingester and distributor. #6132 #6556
* [ENHANCEMENT] Alerts: added a critical alert for `CompactorSkippedBlocksWithOutOfOrderChunks` when multiple blocks are affected. #6410
* [ENHANCEMENT] Dashboards: Added the min-replicas for autoscaling dashboards. #6528
* [BUGFIX] Alerts: fixed issue where `GossipMembersMismatch` warning message referred to per-instance labels that were not produced by the alert query. #6146
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39540,6 +39540,7 @@ data:
"dashLength": 10,
"dashes": false,
"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",
"fill": 10,
"id": 7,
"legend": {
Expand Down Expand Up @@ -39778,7 +39779,7 @@ data:
"dashLength": 10,
"dashes": false,
"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 and 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",
"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",
"fill": 10,
"id": 10,
"legend": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@
"dashLength": 10,
"dashes": false,
"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",
"fill": 10,
"id": 7,
"legend": {
Expand Down Expand Up @@ -705,7 +706,7 @@
"dashLength": 10,
"dashes": false,
"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 and 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",
"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",
"fill": 10,
"id": 10,
"legend": {
Expand Down
3 changes: 2 additions & 1 deletion operations/mimir-mixin-compiled/dashboards/mimir-writes.json
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@
"dashLength": 10,
"dashes": false,
"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",
"fill": 10,
"id": 7,
"legend": {
Expand Down Expand Up @@ -705,7 +706,7 @@
"dashLength": 10,
"dashes": false,
"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 and 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",
"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",
"fill": 10,
"id": 10,
"legend": {
Expand Down
10 changes: 5 additions & 5 deletions operations/mimir-mixin/config.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -648,12 +648,12 @@
// Used to add additional services to dashboards that support it.
extraServiceNames: [],

// When using rejecting inflight requests in ingesters early (using -ingester.limit-inflight-requests-using-grpc-method-limiter option),
// rejected requests will not count towards standard Mimir metrics like cortex_request_duration_seconds_count.
// Enabling this will make them visible on the dashboard again.
// When using early rejection of inflight requests in ingesters and distributors (using -ingester.limit-inflight-requests-using-grpc-method-limiter
// and -distributor.limit-inflight-requests-using-grpc-method-limiter options), rejected requests will not count towards standard Mimir metrics
// like cortex_request_duration_seconds_count. Enabling this will make them visible on the dashboard again.
//
// Disabled by default, because when -ingester.limit-inflight-requests-using-grpc-method-limiter is not used (default), then rejected requests
// are already counted as failures.
// Disabled by default, because when -ingester.limit-inflight-requests-using-grpc-method-limiter and -distributor.limit-inflight-requests-using-grpc-method-limiter is
// not used (default), then rejected requests are already counted as failures.
show_rejected_requests_on_writes_dashboard: false,
},
}
28 changes: 26 additions & 2 deletions operations/mimir-mixin/dashboards/writes.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,31 @@ local filename = 'mimir-writes.json';
$.row('Distributor')
.addPanel(
$.panel('Requests / sec') +
$.qpsPanel($.queries.distributor.writeRequestsPerSecond)
$.panelDescription(
'Requests / sec',
|||
The rate of successful, failed and rejected requests to distributor.
Rejected requests are requests that distributor fails to handle because of distributor instance limits.
When distributor is configured to use "early" request rejection, then rejected requests are NOT included in other metrics.
When distributor is not configured to use "early" request rejection, then rejected requests are also counted as "errors".
|||
) +
$.qpsPanel($.queries.distributor.writeRequestsPerSecond) +
if $._config.show_rejected_requests_on_writes_dashboard then {
targets: [
{
legendLink: null,
expr: 'sum (rate(cortex_distributor_instance_rejected_requests_total{%s}[$__rate_interval]))' % [$.jobMatcher($._config.job_names.distributor)],
format: 'time_series',
intervalFactor: 2,
legendFormat: 'rejected',
refId: 'B',
},
] + super.targets,
aliasColors+: {
rejected: '#EAB839',
},
} else {},
)
.addPanel(
$.panel('Latency') +
Expand All @@ -146,7 +170,7 @@ local filename = 'mimir-writes.json';
'Requests / sec',
|||
The rate of successful, failed and rejected requests to ingester.
Rejected requests are requests that ingester fails to handle because of ingester instance limits (ingester-max-inflight-push-requests and ingester-max-ingestion-rate).
Rejected 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).
When ingester is configured to use "early" request rejection, then rejected requests are NOT included in other metrics.
When ingester is not configured to use "early" request rejection, then rejected requests are also counted as "errors".
|||
Expand Down

0 comments on commit dc6d3f0

Please sign in to comment.