O Google Cloud Managed Service for Prometheus suporta a avaliação de regras e os alertas compatíveis com o Prometheus. Este documento descreve como configurar a avaliação de regras implementada automaticamente, incluindo o componente de avaliação de regras autónomo.
Só tem de seguir estas instruções se quiser executar regras e alertas no repositório de dados global.
Avaliação de regras para a recolha implementada autonomamente
Depois de implementar o Managed Service for Prometheus, pode continuar a
avaliar as regras localmente em cada instância implementada através do campo
rule_files
do ficheiro de configuração do Prometheus. No entanto, a janela de consulta máxima para as regras é limitada pelo tempo durante o qual o servidor mantém os dados locais.
A maioria das regras é executada apenas nos últimos minutos de dados, pelo que a execução de regras em cada servidor local é frequentemente uma estratégia válida. Nesse caso, não é necessária qualquer configuração adicional.
No entanto, por vezes, é útil poder avaliar as regras em relação ao back-end de métricas global, por exemplo, quando todos os dados de uma regra não estão localizados numa determinada instância do Prometheus. Para estes casos, o Managed Service for Prometheus também fornece um componente de avaliação de regras.
Antes de começar
Esta secção descreve a configuração necessária para as tarefas descritas neste documento.
Configure o seu ambiente
Para evitar introduzir repetidamente o ID do projeto ou o nome do cluster, faça a seguinte configuração:
Configure as ferramentas de linha de comandos da seguinte forma:
Configure a CLI gcloud para fazer referência ao ID do seu Google Cloud projeto:
gcloud config set project PROJECT_ID
Configure a CLI
kubectl
para usar o seu cluster:kubectl config set-cluster CLUSTER_NAME
Para mais informações sobre estas ferramentas, consulte o seguinte:
Configure um espaço de nomes
Crie o espaço de nomes do Kubernetes NAMESPACE_NAME
para os recursos que criar
como parte da aplicação de exemplo:
kubectl create ns NAMESPACE_NAME
Valide as credenciais da conta de serviço
Se o seu cluster do Kubernetes tiver a federação de identidade da carga de trabalho para o GKE ativada, pode ignorar esta secção.
Quando executado no GKE, o Managed Service for Prometheus
obtém automaticamente as credenciais do ambiente com base na
conta de serviço predefinida do Compute Engine. A conta de serviço predefinida tem as autorizações necessárias, monitoring.metricWriter
e monitoring.viewer
, por predefinição. Se não usar a Workload Identity Federation para o GKE e tiver removido anteriormente uma dessas funções da conta de serviço do nó predefinida, tem de readicionar essas autorizações em falta antes de continuar.
Configure uma conta de serviço para a federação de identidades da carga de trabalho para o GKE
Se o seu cluster do Kubernetes não tiver a Workload Identity Federation para o GKE ativada, pode ignorar esta secção.
O Managed Service for Prometheus captura dados de métricas através da API Cloud Monitoring. Se o seu cluster estiver a usar a Workload Identity Federation para o GKE, tem de conceder autorização à sua conta de serviço do Kubernetes para a API Monitoring. Esta secção descreve o seguinte:
- Criar uma Google Cloud conta de serviço> dedicada,
gmp-test-sa
. - Associar a Google Cloud conta de serviço à conta de serviço do Kubernetes predefinida num espaço de nomes de teste,
NAMESPACE_NAME
. - Conceder a autorização necessária à Google Cloud conta de serviço.
Crie e associe a conta de serviço
Este passo aparece em vários locais na documentação do Managed Service for Prometheus. Se já realizou este passo como parte de uma tarefa anterior, não precisa de o repetir. Avance para a secção Autorize a conta de serviço.
A seguinte sequência de comandos cria a conta de serviço gmp-test-sa
e associa-a à conta de serviço Kubernetes predefinida no espaço de nomes NAMESPACE_NAME
:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create gmp-test-sa \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Se estiver a usar um espaço de nomes ou uma conta de serviço do GKE diferente, ajuste os comandos adequadamente.
Autorize a conta de serviço
Os grupos de autorizações relacionadas são recolhidos em funções e concede as funções a um principal, neste exemplo, a Google Cloud conta de serviço. Para mais informações sobre as funções de monitorização, consulte o artigo Controlo de acesso.
O comando seguinte concede à Google Cloud conta de serviçogmp-test-sa
as funções da API Monitoring de que precisa para
ler e escrever
dados de métricas.
Se já tiver concedido à Google Cloud conta de serviço uma função específica como parte de uma tarefa anterior, não tem de o fazer novamente.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Depure a configuração da federação de identidades de cargas de trabalho para o GKE
Se tiver problemas com a federação de identidade da carga de trabalho para o GKE, consulte a documentação para validar a configuração da federação de identidade da carga de trabalho para o GKE e o guia de resolução de problemas da federação de identidade da carga de trabalho para o GKE.
Uma vez que os erros ortográficos e as operações de copiar e colar parciais são as origens mais comuns de erros ao configurar a Workload Identity Federation para o GKE, recomendamos vivamente que use as variáveis editáveis e os ícones de copiar e colar clicáveis incorporados nos exemplos de código nestas instruções.
Workload Identity Federation para o GKE em ambientes de produção
O exemplo descrito neste documento associa a conta de serviço à conta de serviço predefinida do Kubernetes e concede à conta de serviço todas as autorizações necessárias para usar a API Monitoring. Google Cloud Google Cloud
Num ambiente de produção, pode querer usar uma abordagem mais detalhada, com uma conta de serviço para cada componente, cada uma com autorizações mínimas. Para mais informações sobre a configuração de contas de serviço para a gestão de identidades da carga de trabalho, consulte o artigo Usar a federação de identidades da carga de trabalho para o GKE.
Implemente o avaliador de regras autónomo
O avaliador de regras do Managed Service for Prometheus avalia as regras de alerta e gravação do Prometheus em relação à API HTTP do Managed Service for Prometheus e escreve os resultados de volta no Monarch. Aceita o mesmo formato de ficheiro de configuração e formato de ficheiro de regras que o Prometheus. As bandeiras também são quase idênticas.
Crie uma implementação de exemplo do avaliador de regras pré-configurado para avaliar uma regra de alerta e uma regra de gravação:
kubectl apply -n NAMESPACE_NAME -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/manifests/rule-evaluator.yaml
Confirme se os pods do avaliador de regras foram implementados com êxito:
kubectl -n NAMESPACE_NAME get pod
Se a implementação tiver sido bem-sucedida, vê um resultado semelhante ao seguinte:
NAME READY STATUS RESTARTS AGE ... rule-evaluator-64475b696c-95z29 2/2 Running 0 1m
Depois de verificar se o avaliador de regras foi implementado com êxito, pode fazer ajustes aos manifestos instalados para fazer o seguinte:
- Adicione os ficheiros de regras personalizadas.
- Configure o avaliador de regras para enviar alertas para um Alertmanager do Prometheus implementado automaticamente usando o campo
alertmanager_config
do ficheiro de configuração.
Se o Alertmanager estiver localizado num cluster diferente do avaliador de regras, pode ter de configurar um recurso de pontos finais.
Por exemplo, se o seu OperatorConfig especificar que os pontos finais do Alertmanager podem ser encontrados no objeto Endpoints ns=alertmanager/name=alertmanager
, pode criar este objeto manualmente ou através de programação e preenchê-lo com IPs acessíveis do outro cluster.
Forneça credenciais explicitamente
Quando executado no GKE, o avaliador de regras obtém automaticamente as credenciais do ambiente com base na conta de serviço do nó ou na federação de identidades da carga de trabalho para a configuração do GKE.
Em clusters do Kubernetes que não sejam do GKE, as credenciais têm de ser fornecidas explicitamente ao avaliador de regras através de flags ou da variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
.
Defina o contexto para o projeto de destino:
gcloud config set project PROJECT_ID
Crie uma conta de serviço:
gcloud iam service-accounts create gmp-test-sa
Este passo cria a conta de serviço que pode já ter criado nas instruções da federação de identidades da carga de trabalho para o GKE.
Conceda as autorizações necessárias à conta de serviço:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Crie e transfira uma chave para a conta de serviço:
gcloud iam service-accounts keys create gmp-test-sa-key.json \ --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Adicione o ficheiro de chave como um segredo ao seu cluster não GKE:
kubectl -n NAMESPACE_NAME create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json
Abra o recurso de implementação do avaliador de regras para edição:
kubectl -n NAMESPACE_NAME edit deploy rule-evaluator
Adicione o texto apresentado em negrito ao recurso:
apiVersion: apps/v1 kind: Deployment metadata: namespace: NAMESPACE_NAME name: rule-evaluator spec: template containers: - name: evaluator args: - --query.credentials-file=/gmp/key.json - --export.credentials-file=/gmp/key.json ... volumeMounts: - name: gmp-sa mountPath: /gmp readOnly: true ... volumes: - name: gmp-sa secret: secretName: gmp-test-sa ...
Guarde o ficheiro e feche o editor. Após a aplicação da alteração, os pods são recriados e começam a autenticar-se no back-end de métricas com a conta de serviço fornecida.
GOOGLE_APPLICATION_CREDENTIALS
variável de ambiente.Avaliação de regras globais e de vários projetos
Recomendamos que execute uma instância do avaliador de regras em cada Google Cloud projeto e região, em vez de executar uma instância que faça a avaliação em relação a muitos projetos e regiões. No entanto, suportamos a avaliação de regras de vários projetos para cenários que o exijam.
Quando implementado no Google Kubernetes Engine, o avaliador de regras usa o Google Cloud projeto associado ao cluster, que deteta automaticamente. Para avaliar regras que abrangem projetos, pode substituir o projeto consultado usando a flag
--query.project-id
e especificando um projeto com um âmbito de métricas de vários projetos. Se o âmbito das métricas contiver todos os seus projetos, as regras são avaliadas globalmente. Para mais informações, consulte o artigo Âmbitos das métricas.Também tem de atualizar as autorizações da conta de serviço usada pelo avaliador de regras para que a conta de serviço possa ler a partir do projeto de âmbito e escrever em todos os projetos monitorizados no âmbito das métricas.
Preserve as etiquetas ao escrever regras
Para os dados que o avaliador escreve novamente no Managed Service for Prometheus, o avaliador suporta as mesmas flags
--export.*
e a configuração baseada emexternal_labels
que o binário do servidor do Managed Service for Prometheus. Recomendamos vivamente que escreva regras para que as etiquetasproject_id
,location
,cluster
enamespace
sejam preservadas adequadamente para o respetivo nível de agregação. Caso contrário, o desempenho das consultas pode diminuir e pode deparar-se com limites de cardinalidade.As etiquetas
project_id
oulocation
são obrigatórias. Se estas etiquetas estiverem em falta, os valores nos resultados da avaliação de regras são definidos com base na configuração do avaliador de regras. As etiquetascluster
ounamespace
em falta não têm valores atribuídos.Auto-observabilidade
O avaliador de regras emite métricas do Prometheus numa porta configurável através da flag
--web.listen-address
.Por exemplo, se o pod
rule-evaluator-64475b696c-95z29
estiver a expor estas métricas na porta9092
, as métricas podem ser vistas manualmente através dekubectl
:# Port forward the metrics endpoint. kubectl port-forward rule-evaluator-64475b696c-95z29 9092 # Then query in a separate terminal. curl localhost:9092/metrics
Pode configurar a sua pilha do Prometheus para recolher estas informações e ter visibilidade do desempenho do avaliador de regras.
Implementações de alta disponibilidade
O avaliador de regras pode ser executado numa configuração de elevada disponibilidade seguindo a mesma abordagem documentada para o servidor Prometheus.
Alertas com métricas do Cloud Monitoring
Pode configurar o avaliador de regras para enviar alertas sobre Google Cloud métricas do sistema através do PromQL. Para obter instruções sobre como criar uma consulta válida, consulte o artigo PromQL para métricas do Cloud Monitoring.