Service Mesh (ASM) gera métricas de monitoramento para todo o tráfego que entra, sai e circula na malha de serviços, facilitando o monitoramento do comportamento dos serviços. Essas métricas incluem informações como volume de tráfego, taxa de erros e tempo de resposta. Com o tempo, grandes volumes de dados podem se acumular e aumentar o consumo de recursos do Envoy e do Prometheus. Para gerenciar esse cenário, o ASM oferece um recurso de limpeza periódica de métricas de monitoramento. Esse recurso remove automaticamente métricas não utilizadas armazenadas em cache no Envoy, reduzindo o consumo de memória e a carga de rede durante a coleta pelo Prometheus. Este tópico descreve como configurar esse recurso e fornece um exemplo funcional.
Pré-requisitos
Um cluster foi adicionado a uma instância do ASM versão 1.18 ou posterior. Para mais informações, consulte Adicionar um cluster a uma instância do ASM.
Procedimento
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Observability Settings, clique em aba Global. Na seção Metric Settings, insira um valor para Periodic Cleaning Time of Metrics e clique em Submit.
Ative a chave Enable Periodic Cleaning of Metrics.
ImportanteDefina o tempo de limpeza periódica como pelo menos o dobro do
scrape_intervaldo Prometheus. Isso garante que o Prometheus consiga coletar as métricas antes da remoção.
Exemplo
Implantar a aplicação de exemplo
-
Use o conteúdo YAML a seguir para implantar uma aplicação de exemplo no cluster do plano de dados. Para mais informações, consulte Criar um Deployment de carga de trabalho sem estado ou Criar recursos usando um arquivo YAML.
-
Execute o comando a seguir para verificar o status da aplicação:
kubectl get podSaída de exemplo:
NAME READY STATUS RESTARTS AGE httpbin-846bxxx694-xxxxx 2/2 Running 0 44s sleep-866xxx97f9-xxxxx 2/2 Running 0 44s
Ativar métricas e testar
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Observability Settings, clique em aba Global. Na seção Metric Settings, selecione a caixa de seleção Enabled da métrica REQUEST_COUNT na seção Server-side Metrics. Em seguida, clique em Submit.
-
Execute o comando a seguir para acessar a aplicação httpbin:
kubectl exec -it deploy/sleep -- sh -c 'for i in $(seq 1 10); do curl -s httpbin:8000/status/418 > /dev/null; done' -
Execute o comando a seguir para visualizar as métricas de monitoramento da aplicação httpbin:
kubectl exec -it deploy/httpbin -c istio-proxy -- curl 0.0.0.0:15020/stats/prometheus | grep istio_requests_total{Saída de exemplo:
istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",...,request_protocol="http",response_code="418",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls"} 20
Configurar limpeza periódica de métricas
-
Siga as etapas na seção Procedimento para definir o tempo de limpeza periódica das métricas de monitoramento como 10s.
A limpeza de métricas pode atrasar alguns segundos. Durante a verificação, ajuste o tempo de limpeza conforme necessário.
-
Após concluir a configuração, execute o comando a seguir para visualizar as métricas de monitoramento da aplicação httpbin:
kubectl exec -it deploy/httpbin -c istio-proxy -- sh -c ' for i in $(seq 1 2); do echo "# Current content of the istio_requests_total metric: "; curl -s 0.0.0.0:15020/stats/prometheus | grep istio_requests_total{; sleep 15; done'Saída de exemplo:
# Current content of the istio_requests_total metric: istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",...connection_security_policy="mutual_tls"} 30 # Current content of the istio_requests_total metric:O comando de teste faz duas requisições de sondagem. A primeira, realizada antes da limpeza, retorna uma linha de saída de métrica e uma linha de saída personalizada. Após 15 segundos, os dados da métrica são limpos e a requisição seguinte retorna apenas uma linha de saída personalizada.