Service Mesh (ASM) oferece suporte a circuit breaking, limitação de taxa e monitoramento de tráfego de forma não intrusiva. Este tópico aborda configurações comuns de painéis e regras de alerta para circuit breaking e limitação de taxa.
Circuit breaking
O circuit breaking é um mecanismo de proteção contra sobrecarga que impede a falha do sistema devido a picos repentinos de tráfego. Em arquiteturas com tráfego leste-oeste entre serviços nativos da nuvem, a falha em um único serviço — como respostas lentas ou alta taxa de erros — pode desencadear falhas em cascata por toda a cadeia de chamadas.
Ao configurar uma regra de circuit breaking para o tráfego leste-oeste entre serviços, você rejeita automaticamente requisições dos serviços upstream quando a taxa de falhas ou a contagem de timeouts de resposta atinge um determinado limiar. Essa abordagem protege os serviços upstream e evita que as falhas se propaguem por toda a cadeia de chamadas.
Após configurar uma regra de circuit breaking, cada proxy do ASM calcula independentemente a taxa de falhas de requisição ou a contagem de timeouts de resposta com base nas requisições que gerencia. Portanto, para o mesmo serviço upstream com falha, diferentes proxies ASM no lado do cliente podem acionar o circuit breaker em momentos ligeiramente distintos.
Exemplo de painel

A tabela a seguir descreve cada painel:
|
Painel |
Descrição |
|
Requests |
Fornece uma visão geral das requisições, incluindo as seguintes métricas:
|
|
Requests OK percent |
Percentual de requisições bem-sucedidas em relação ao total. |
|
Requests throttled percent |
Percentual de requisições limitadas em relação ao total. |
Importe o seguinte json no Grafana para crie um painel de circuit breaking para seu cluster. Também é possível modifique este json ou usá-lo como modelo para criar seu próprio painel.
Exemplo de regra de alerta
|
Configuração |
Exemplo |
Descrição |
|
Expressão PromQL personalizada |
(sum by(cluster, namespace) (increase(envoy_asm_circuit_breaker_total_broken_requests[1m]))) > 10 |
Calcula o número de requisições limitadas no último minuto, agrupadas por cluster e namespace. Aciona um alerta se a contagem exceder 10. |
|
Conteúdo do alerta |
Ocorreu circuit breaking no nível de serviço! Namespace: {{$labels.namespace}}, Serviço alvo: {{$labels.cluster}}. Número de requisições limitadas no último minuto: {{ $value }} |
Define o formato da mensagem de alerta. A mensagem inclui o namespace, o serviço alvo e a contagem de requisições limitadas no último minuto. |
Limitação de taxa global
No proxy Envoy, a limitação de taxa global é um mecanismo que controla a taxa de requisições em todo o service mesh. Ele utiliza o serviço de limitação de taxa do Envoy para processar o tráfego centralmente e aplicar limites com base em regras e cotas predefinidas.
A limitação de taxa global pode ser combinada com a limitação local para fornecer proteção em camadas.
Exemplo de painel

A tabela a seguir descreve cada painel.
|
Painel |
Descrição |
|
Requests |
Fornece uma visão geral das requisições, incluindo as seguintes métricas:
|
|
Requests OK Percent |
Percentual de requisições permitidas. |
|
Requests Reached Limits Percent |
Percentual de requisições limitadas. |
Importe o seguinte json em um painel do Grafana para crie um painel de limitação de taxa global para seu cluster. Também é possível modifique este json ou usá-lo para criar o seu próprio.
Exemplo de regra de alerta
|
Configuração de alerta |
Exemplo |
Descrição |
|
Expressão PromQL |
sum (increase(envoy_cluster_ratelimit_over_limit[1m])) by (namespace, service_istio_io_canonical_name) > 10 |
Calcula o número de requisições limitadas no último minuto, agrupadas por namespace e nome do serviço. Aciona um alerta se a contagem exceder 10. |
|
Mensagem de alerta |
Limitação de taxa acionada! Namespace: {{$labels.namespace}}, Serviço alvo: {{$labels.service_istio_io_canonical_name}}. Número de requisições limitadas no último minuto: {{ $value }} |
Define o formato da mensagem de alerta. A mensagem inclui o namespace, o nome do serviço e o número de requisições limitadas no último minuto. |
Limitação de taxa local
O proxy Envoy usa o algoritmo de token bucket para implementar a limitação de taxa local. Esse algoritmo limita o número de requisições enviadas a um serviço mantendo um bucket de tokens, reabastecido a uma taxa constante. Cada requisição ao serviço consome um token. Se o bucket estiver vazio, o proxy Envoy rejeita a requisição.
Combine a limitação de taxa local com a limitação global para obter proteção em camadas.
Exemplo de painel

A tabela a seguir descreve cada painel:
|
Painel |
Descrição |
|
Requests |
Mostra uma visão geral das requisições, incluindo estas métricas:
|
|
Requests OK Percent |
Percentual do total de requisições permitidas. |
|
Requests Reached Limits Percent |
Percentual do total de requisições limitadas. |
Importe o seguinte json em um painel do Grafana para crie um painel de limitação de taxa local para seu cluster. Também é possível modifique este json ou usá-lo como modelo para criar um painel personalizado.
Exemplo de regra de alerta
|
Parâmetro |
Exemplo |
Descrição |
|
Expressão PromQL |
sum (increase(envoy_http_local_rate_limiter_http_local_rate_limit_enforced[1m])) by (namespace, service_istio_io_canonical_name) > 10 |
Consulta o número de requisições limitadas no último minuto, agrupadas por namespace e nome do serviço. O alerta dispara se a contagem exceder 10. |
|
Mensagem de alerta |
Limitação de taxa acionada! Namespace: {{$labels.namespace}}, Serviço alvo: {{$labels.service_istio_io_canonical_name}}. Número de requisições limitadas no último minuto: {{ $value }} |
Define o formato da mensagem de alerta. Exibe o namespace, o nome do serviço e o número de requisições limitadas no último minuto. |
Operações relacionadas
Importar um painel do Grafana
Faça login no console do ARMS.
No painel de navegação à esquerda, clique em Integration Management.
-
Na aba Integrated Environments, selecione Container Service, pesquise o ambiente alvo pelo nome do cluster e clique nele. Em seguida, clique em Dashboard Directory.
O Dashboard Directory está localizado na seção Basic Information da página de detalhes do Container Service. Clique no valor correspondente para abrir o diretório de painéis do Grafana.
No lado direito da aba Dashboards, clique em Import.
-
Cole o conteúdo json na caixa Import via panel json e clique em Load. Mantenha as configurações padrão e clique em Import.
NotaTambém é possível importar o painel fazendo upload de um arquivo json.