Ao configurar objetivos de nível de serviço (SLOs) para uma aplicação no Service Mesh (ASM), o sistema gera automaticamente uma regra do Prometheus. Essa regra define regras de gravação para métricas de SLO e regras de alerta para taxas de consumo do budget de erro. Para ativar esses SLOs, importe a regra gerada para o seu sistema Prometheus.
O procedimento a seguir aborda a importação da regra para uma instância gerenciada pelo Prometheus Operator e a verificação do funcionamento correto das métricas e dos alertas de SLO.
Pré-requisitos
Antes de começar, verifique se você tem:
Monitoramento Prometheus ativado para o cluster do Container Service for Kubernetes (ACK). Para obter detalhes, consulte Usar o Prometheus open source para monitorar um cluster ACK e Monitorar instâncias do ASM usando uma instância auto-gerenciada do Prometheus
Como o Prometheus Operator seleciona regras
O Prometheus Operator utiliza definições de recursos personalizados (CRDs) para gerenciar configurações do Prometheus. Para adicionar regras de gravação e de alerta, crie um recurso personalizado (CR) PrometheusRule. O Prometheus Operator determina quais objetos PrometheusRule carregar com base no campo ruleSelector do CR do Prometheus:
Se o
ruleSelectorespecificarmatchLabels, oPrometheusRuledeve conter os mesmos rótulos.Caso o
ruleSelectoresteja vazio, os rótulos são opcionais.
Se a sua implantação do Prometheus não utilizar o Prometheus Operator, importe a regra gerada usando um método adequado à sua configuração. Consulte a documentação do Prometheus para obter orientações.
Etapa 1: Obter os rótulos do ruleSelector
Verifique o campo ruleSelector no CR do Prometheus para determinar quais rótulos o Prometheus Operator exige nos objetos PrometheusRule.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em nome do cluster que deseja gerenciar e escolha Workloads > Custom Resources no painel de navegação à esquerda.
Na aba CRDs, clique em PrometheusRule.
Na aba Resource Objects, selecione monitoring na lista suspensa Namespace. Localize ack-prometheus-operator-prometheus e clique em Edit YAML na coluna Actions.
-
Localize o campo
ruleSelector. Uma configuração típica se parece com o exemplo abaixo. Nesse caso, qualquerPrometheusRuledeve incluir ambos os rótulos (app: ack-prometheus-operatorerelease: ack-prometheus-operator) para ser selecionado.ruleSelector: matchLabels: app: ack-prometheus-operator release: ack-prometheus-operator
Etapa 2: Implantar o PrometheusRule
-
Crie um arquivo chamado
prometheusrule.yamlcom o seguinte conteúdo:Defina o campo
labelspara corresponder aos valores dematchLabelsda Etapa 1.Substitua o conteúdo de
specpela regra do Prometheus gerada no console do ASM.
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: labels: app: ack-prometheus-operator release: ack-prometheus-operator name: asm-rules namespace: monitoring spec: # Replace with the generated Prometheus rule. -
Aplique o
PrometheusRuleao cluster ACK:kubectl apply -f prometheusrule.yaml
Etapa 3: Verificar se a regra foi carregada
Após a aplicação do PrometheusRule, o controlador do Prometheus Operator grava automaticamente as configurações da regra no ConfigMap do Prometheus. Verifique isso por meio do console do ACK ou da linha de comando.
Opção A: Console do ACK
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em nome do cluster que deseja gerenciar e escolha Configurations > ConfigMaps no painel de navegação à esquerda.
Na página ConfigMap, selecione monitoring na lista suspensa Namespace. Em seguida, localize o ConfigMap do Prometheus e clique em Edit YAML na coluna Actions.
-
Confirme se as regras de SLO do ASM aparecem no ConfigMap. A figura a seguir mostra uma importação bem-sucedida.

Opção B: Linha de comando
Execute o seguinte comando para listar os recursos PrometheusRule:
kubectl get prometheusrules -n monitoring
A saída deve incluir o PrometheusRule asm-rules.
Etapa 4: Verificar se os SLOs estão ativos
Verificar regras de gravação e regras de alerta
-
Encaminhe a porta local 9090 para o serviço do Prometheus:
kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-prometheus 9090 Abra http://localhost:9090 em um navegador para acessar o console do Prometheus.
-
Na página Prometheus, insira
asm_slo_infona caixa de consulta e clique em Execute. Se a consulta retornar resultados, as regras de gravação estarão ativas.
-
Na barra de navegação superior, clique em Alerts para verificar se as regras de alerta foram carregadas.

Simular tráfego para validar métricas de SLO
Utilize os cenários a seguir para confirmar se as métricas e os alertas respondem corretamente.
Cenário 1: Tráfego normal (taxa de sucesso de 99,5%)
Este script envia 200 requisições, das quais apenas uma retorna um erro 500, simulando uma taxa de sucesso de 99,5%:
#!/bin/bash
for i in $(seq 200)
do
if (( $i == 100 ))
then
curl -I http://<ingress-gateway-ip>/status/500;
else
curl -I http://<ingress-gateway-ip>/;
fi
echo "OK"
sleep 0.01;
done;
Substitua <ingress-gateway-ip> pelo endereço IP do gateway de entrada. Para obter detalhes, consulte Implantar um serviço de gateway de entrada.
Após a conclusão do script, consulte slo:period_error_budget_remaining:ratio no console do Prometheus para verificar o budget de erro restante. Um valor próximo de 1 indica que a maior parte do budget permanece intacta.

Cenário 2: Tráfego com erros (taxa de falha de 50%)
Este script envia requisições alternadas entre sucesso e falha para simular uma taxa de erro de 50% e acionar alertas de taxa de consumo:
#!/bin/bash
for i in $(seq 200)
do
curl -I http://<ingress-gateway-ip>/
curl -I http://<ingress-gateway-ip>/status/500;
echo "OK"
sleep 0.01;
done;
Após a conclusão do script, abra a página Alerts no console do Prometheus. Se a taxa de consumo exceder o limiar, os alertas serão disparados.

Referência de métricas de SLO
A tabela a seguir descreve as métricas de SLO usadas para monitoramento. Para obter uma explicação detalhada sobre conceitos de SLO, como budgets de erro e alertas de taxa de consumo com múltiplas janelas, consulte Visão geral de SLO.
|
Métrica |
Descrição |
Interpretação |
|
|
Budget de erro restante como uma proporção durante o período de conformidade de 30 dias. |
1 = budget total disponível. 0 = budget esgotado. Valores entre 0 e 1 indicam consumo parcial. |
|
|
Taxa média de erro ao longo do período de conformidade de 30 dias. |
Valores menores indicam melhor confiabilidade do serviço. |
|
|
Taxa na qual o budget de erro é consumido durante o período de conformidade de 30 dias. |
1 = budget consumido exatamente na taxa esperada. Valores acima de 1 indicam um consumo mais rápido do que o sustentável. |
|
|
Taxa de consumo atual baseada em uma janela de tempo menor. |
Valores acima de 1 indicam que o budget está sendo consumido mais rapidamente do que o sustentável e podem acionar alertas. |
Visualizar alertas no Alertmanager
O Alertmanager coleta alertas do Prometheus e os encaminha para receptores configurados, como endpoints de e-mail ou webhook.
-
Encaminhe a porta local 9093 para o serviço do Alertmanager:
kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-alertmanager 9093 Abra http://localhost:9093 em um navegador para acessar o console do Alertmanager.
-
Na página Alertmanager, clique em ícone
para expandir e visualizar os detalhes do alerta.
Próximos passos
Configurar SLOs para aplicações no ASM para adicionar ou modificar metas de SLO
Visão geral de SLO para obter uma explicação detalhada sobre conceitos de SLO, métricas e alertas de taxa de consumo com múltiplas janelas