Configure Grafana for circuit breaking and rate limiting
Service Mesh (ASM) supports non-intrusive circuit breaking, throttling, and traffic monitoring. This topic covers common dashboard configurations and alert rules for circuit breaking and throttling.
Circuit breaking
Circuit breaking is an overload protection mechanism that prevents a system from crashing due to sudden traffic spikes. In an architecture with east-west traffic between cloud-native services, a failure in a single service, such as slow responses or a high error rate, can trigger cascading failures across the call chain.
By configuring a circuit breaking rule for east-west traffic between services, you can automatically reject requests from upstream services when the request failure rate or the count of response timeouts reaches a threshold. This approach protects upstream services and prevents failures from spreading across the entire call chain.
After you configure a circuit breaking rule, each ASM proxy independently calculates the request failure rate or the count of response timeouts based on the requests it proxies. Therefore, for the same failing upstream service, different client-side ASM proxies might trip the circuit breaker at slightly different times.
Dashboard example

The following table describes each panel:
|
Panel |
Description |
|
Requests |
Provides an overview of requests, including the following metrics:
|
|
Requests OK percent |
The percentage of successful requests out of total requests. |
|
Requests throttled percent |
The percentage of throttled requests out of total requests. |
You can import the following JSON into Grafana to create a circuit breaking dashboard for your cluster. You can also modify this JSON or use it as a template to create your own dashboard.
Alert rule example
|
Configuration |
Example |
Description |
|
Custom PromQL expression |
(sum by(cluster, namespace) (increase(envoy_asm_circuit_breaker_total_broken_requests[1m]))) > 10 |
Calculates the number of throttled requests over the last minute, grouped by cluster and namespace. This triggers an alert if the count exceeds 10. |
|
Alert content |
Service-level circuit breaking has occurred! Namespace: {{$labels.namespace}}, Target service: {{$labels.cluster}}. Number of throttled requests in the last minute: {{ $value }} |
This defines the alert message format. The message includes the namespace, the target service, and the count of throttled requests in the last minute. |
Global throttling
In an Envoy proxy, global throttling is a mechanism that controls the request rate across an entire service mesh. It relies on Envoy's rate limit service to centrally process traffic and enforce limits based on predefined rules and quotas.
global throttling can be combined with local throttling to provide layered protection.
Dashboard example

The following table describes each panel.
|
Panel |
Description |
|
Requests |
Provides an overview of requests, including the following metrics:
|
|
Requests OK Percent |
The percentage of allowed requests. |
|
Requests Reached Limits Percent |
The percentage of throttled requests. |
You can import the following JSON into a Grafana dashboard to create a global throttling dashboard for your cluster. You can also modify this JSON or use it to create your own.
Alert rule example
|
Alert configuration |
Example |
Description |
|
PromQL expression |
sum (increase(envoy_cluster_ratelimit_over_limit[1m])) by (namespace, service_istio_io_canonical_name) > 10 |
Calculates the number of throttled requests over the last minute, grouped by namespace and service name. Triggers an alert if the count exceeds 10. |
|
Alert message |
Throttling triggered! Namespace: {{$labels.namespace}}, Target service: {{$labels.service_istio_io_canonical_name}}. Number of throttled requests in the last minute: {{ $value }} |
Defines the alert message format. The message includes the namespace, service name, and the number of throttled requests in the last minute. |
Local throttling
The Envoy proxy uses the token bucket algorithm to implement local throttling. The algorithm limits the number of requests sent to a service by maintaining a bucket of tokens, refilled at a constant rate. Each request to the service consumes one token. If the bucket is empty, the Envoy proxy rejects the request.
You can combine local throttling with global throttling to provide layered protection.
Dashboard example

The following table describes each panel:
|
Panel |
Description |
|
Requests |
Shows an overview of requests, including these metrics:
|
|
Requests OK Percent |
The percentage of total requests that are allowed. |
|
Requests Reached Limits Percent |
The percentage of total requests that are throttled. |
Import the following JSON into a Grafana dashboard to create a local throttling dashboard for your cluster. You can also modify this JSON or use it as a template to create a custom dashboard.
Alert rule example
|
Parameter |
Example |
Description |
|
PromQL expression |
sum (increase(envoy_http_local_rate_limiter_http_local_rate_limit_enforced[1m])) by (namespace, service_istio_io_canonical_name) > 10 |
Queries the number of throttled requests over the last minute, grouped by namespace and service name. The alert fires if the count exceeds 10. |
|
Alert message |
Throttling triggered! Namespace: {{$labels.namespace}}, Target service: {{$labels.service_istio_io_canonical_name}}. Number of throttled requests in the last minute: {{ $value }} |
Defines the format for the alert message. It displays the namespace, service name, and the number of throttled requests in the last minute. |
Related operations
Import a Grafana dashboard
-
Log on to the ARMS console.
-
In the navigation pane on the left, click Integration Management.
-
On the Integrated Environments tab, select Container Service, search for the target environment by its cluster name, and click it. Click Dashboard Directory.
The Dashboard Directory is in the Basic Information section of the Container Service details page. Click its value to open the Grafana dashboard directory.
-
On the right side of the Dashboards tab, click Import.
-
Paste the JSON content into the Import via panel json box and click Load. Keep the default settings and click Import.
NoteYou can also import the dashboard by uploading a JSON file.