Neste documento, descrevemos como configurar o Google Cloud Managed Service para Prometheus com coleção gerenciada. A configuração é um exemplo mínimo de ingestão de trabalho, usando uma implantação Prometheus que monitora um aplicativo de exemplo e armazena métricas coletadas no Monarch.
Esta página mostra como fazer o seguinte:
- Configure o ambiente e as ferramentas de linha de comando.
- Configurar a coleção gerenciada para o cluster.
- Configurar um recurso para extração de destino e ingestão de métricas.
- Migre os recursos personalizados atuais do operador Prometheus.
Recomendamos que você use a coleta gerenciada. reduz a complexidade da implantação, do escalonamento, da fragmentação, da configuração e da manutenção dos coletores. A coleta gerenciada é compatível com o GKE e todos os outros ambientes do Kubernetes.
A coleta gerenciada executa coletores com base no Prometheus como um Daemonset e garante a escalonabilidade apenas ao extrair destinos em nós colocalizados. Configure os coletores com recursos personalizados leves para extrair os exportadores usando a coleção pull e, em seguida, eles enviam os dados raspados para o armazenamento de dados central do Monarch. O Google Cloud nunca acessa diretamente o cluster para extrair ou raspar dados de métricas. Seus coletores enviam dados para oGoogle Cloud. Para mais informações sobre a coleta de dados gerenciada e autoimplantada, consulte Coleta de dados com o serviço gerenciado para o Prometheus e Ingestão e consulta com coleta gerenciada e autoimplantada.
Antes de começar
Nesta seção, descrevemos a configuração necessária para as tarefas descritas neste documento.
Configurar projetos e ferramentas
Para usar o Google Cloud Managed Service para Prometheus, você precisa dos seguintes recursos:
- Um Google Cloud projeto com a API Cloud Monitoring ativada. - Se você não tiver um projeto do Google Cloud , faça o seguinte: - No console do Google Cloud , acesse Novo projeto: 
- No campo Project Name, insira um nome para o projeto e clique em Criar. 
- Acesse o Faturamento: 
- Selecione o projeto recém-criado se ele ainda não estiver selecionado na parte superior da página. 
- Você precisará escolher um perfil para pagamentos atual ou criar um novo. 
 - A API Monitoring é ativada por padrão para novos projetos. 
- Se você já tem um projeto do Google Cloud , verifique se a API Monitoring está ativada: - Acessar APIs e serviços 
- Selecione o projeto. 
- Clique em Ativar APIs e serviços. 
- Pesquise "Monitoring". 
- Nos resultados da pesquisa, clique em "API Cloud Monitoring". 
- Se a opção "API ativada" não for exibida, clique no botão Ativar. 
 
 
- Um cluster do Kubernetes. Se você não tiver um cluster do Kubernetes, siga as instruções no Guia de início rápido do GKE. 
Você também precisa das seguintes ferramentas de linha de comando:
- gcloud
- kubectl
As ferramentas gcloud e kubectl fazem parte da
Google Cloud CLI. Para mais informações sobre
como instalá-los, consulte Como gerenciar componentes da CLI do Google Cloud. Para ver os
componentes da CLI gcloud que você instalou, execute o seguinte comando:
gcloud components list
Configurar o ambiente
Para evitar inserir repetidamente o ID do projeto ou o nome do cluster, execute a seguinte configuração:
- Configure as ferramentas de linha de comando da seguinte maneira: - Configure a CLI gcloud para se referir ao ID do projetoGoogle Cloud : - gcloud config set project PROJECT_ID 
- Configure a CLI - kubectlpara usar o cluster:- kubectl config set-cluster CLUSTER_NAME 
 - Para mais informações sobre essas ferramentas, consulte estes recursos: 
Configurar um namespace
Crie o namespace NAMESPACE_NAME do Kubernetes para os recursos que você criar
como parte do aplicativo de exemplo:
kubectl create ns NAMESPACE_NAME
Configurar a coleção gerenciada
É possível usar a coleta gerenciada tanto em clusters do Kubernetes do GKE quanto naqueles que não são do GKE.
Depois de a coleta gerenciada ser ativada, os componentes no cluster serão executados, mas nenhuma métrica será gerada ainda. Os recursos do PodMonitoring ou do ClusterPodMonitoring são necessários por esses componentes para capturar corretamente os endpoints das métricas. É necessário implantar esses recursos com endpoints de métricas válidos ou ativar um dos pacotes de métricas gerenciados, por exemplo, métricas de estado do Kube, integradas ao GKE. Para ver informações sobre solução de problemas, consulte Problemas no processamento.
A ativação da coleção gerenciada instala os seguintes componentes no cluster:
- A implantação gmp-operator, que implanta o operador do Kubernetes para o serviço gerenciado para o Prometheus.
- A implantação rule-evaluator, que é usada para configurar e executar regras de alerta e gravação.
- O DaemonSet collector, que escalona horizontalmente a coleta raspando dados de métricas apenas de pods em execução no mesmo nó de cada coletor.
- O StatefulSet alertmanager, que está configurado para enviar alertas acionados aos seus canais de notificação preferidos.
Para ver a documentação de referência sobre o operador do Managed Service para Prometheus, consulte a página de manifestos.
Ativar a coleta gerenciada: GKE
A coleta gerenciada é ativada por padrão para:
- Clusters do GKE Autopilot que executam a versão 1.25 ou superior do GKE. 
- Clusters do GKE Standard executando o GKE versão 1.27 ou posterior. É possível modificar esse padrão ao criar o cluster. Consulte Desativar a coleta gerenciada. 
Se sua execução for em um ambiente do GKE que não ativa a coleta gerenciada por padrão, consulte Ativar a coleta gerenciada manualmente.
A coleta gerenciada no GKE é atualizada automaticamente quando novas versões de componentes no cluster são lançadas.
A coleta gerenciada no GKE usa permissões concedidas à conta de serviço padrão do Compute Engine. Se você tiver uma política que modifique as permissões padrão na conta de serviço do nó padrão, talvez seja necessário adicionar o papel Monitoring Metric Writer para continuar.
Ativar a coleta gerenciada manualmente
Se você estiver executando em um ambiente do GKE que não permita a coleta gerenciada por padrão, será possível ativar a coleta gerenciada usando o seguinte:
- O painel Ativação em massa de clusters gerenciados do Prometheus no Cloud Monitoring.
- A página do Kubernetes Engine no Google Cloud console.
- Google Cloud CLI. Para usar a CLI gcloud, é necessário executar o GKE versão 1.21.4-gke.300 ou mais recente.
- Terraform para o Google Kubernetes Engine. Para usar o Terraform para ativar o Managed Service para Prometheus, é preciso executar o GKE versão 1.21.4-gke.300 ou mais recente. 
Painel de ativação em massa de clusters gerenciados do Prometheus
É possível fazer o seguinte usando o painel Ativação em massa de clusters gerenciados do Prometheus no Cloud Monitoring.
- Determinar se o Managed Service para Prometheus está ativado nos clusters e se você está usando a coleta gerenciada ou implantada automaticamente.
- Ativar a coleta gerenciada em clusters no seu projeto.
- Ver outras informações sobre os clusters.
Para acessar o painel Ativação em massa de clusters gerenciados do Prometheus, faça o seguinte:
- 
No Google Cloud console, acesse a página  Painéis: Painéis:Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring. 
- Use a barra de filtro para pesquisar e selecionar a entrada Ativação em massa de clusters gerenciados do Prometheus. 

Para ativar a coleta gerenciada em um ou mais clusters do GKE usando o painel Ativação em massa de clusters gerenciados do Prometheus, faça o seguinte:
- Marque a caixa de seleção de cada cluster do GKE em que você quer ativar a coleta gerenciada. 
- Selecione Ativar selecionada. 
IU do Kubernetes Engine
É possível fazer o seguinte usando o console Google Cloud :
- Ative a coleta gerenciada em um cluster atual do GKE.
- Criar um novo cluster do GKE com a coleta gerenciada ativada.
Para atualizar um cluster existente, faça o seguinte:
- 
No console Google Cloud , acesse a página Clusters do Kubernetes: Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Kubernetes Engine. 
- Clique no nome do cluster. 
- Na lista Recursos, localize a opção Serviço gerenciado para o Prometheus. Se ele estiver listado como desativado, clique em edit Editar e selecione Ativar serviço gerenciado para o Prometheus. 
- Clique em Salvar alterações. 
Para criar um cluster com a coleção gerenciada ativada, faça o seguinte:
- 
No console Google Cloud , acesse a página Clusters do Kubernetes: Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Kubernetes Engine. 
- Clique em Criar. 
- Clique em Configurar para a opção Padrão. 
- No painel de navegação, clique em Recursos. 
- Na seção Operações, selecione Ativar serviço gerenciado para o Prometheus. 
- Clique em Salvar. 
CLI gcloud
É possível fazer o seguinte usando a CLI gcloud:
- Ative a coleta gerenciada em um cluster atual do GKE.
- Criar um novo cluster do GKE com a coleta gerenciada ativada.
A conclusão desses comandos pode levar até 5 minutos.
Primeiro, defina seu projeto:
gcloud config set project PROJECT_ID
Para atualizar um cluster, execute um dos seguintes
comandos update com base no fato de o cluster ser zonal ou regional:
- gcloud container clusters update CLUSTER_NAME --enable-managed-prometheus --zone ZONE 
- gcloud container clusters update CLUSTER_NAME --enable-managed-prometheus --region REGION 
Para criar um cluster com a coleta gerenciada ativada, execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME --zone ZONE --enable-managed-prometheus
Autopilot do GKE
A coleta gerenciada é ativada por padrão nos clusters do GKE Autopilot que executam a versão 1.25 ou mais recente do GKE. Não é possível desativar a coleta gerenciada.
Se o cluster não ativar a coleta gerenciada automaticamente ao fazer upgrade para a versão 1.25, será possível ativá-la manualmente executando o comando de atualização na seção da CLI gcloud.
Terraform
Para instruções sobre como configurar a coleta gerenciada usando o Terraform, consulte o
registro do Terraform para google_container_cluster.
Para informações gerais sobre como usar o Google Cloud com o Terraform, consulte Terraform com Google Cloud.
Desativar a coleta gerenciada
Se você quiser desativar a coleta gerenciada nos clusters, use um dos seguintes métodos:
IU do Kubernetes Engine
É possível fazer o seguinte usando o console Google Cloud :
- Desativar a coleta gerenciada em um cluster do GKE atual.
- Cancelar a ativação automática da coleta gerenciada ao criar um novo cluster do GKE Standard executando a versão 1.27 ou mais recente do GKE.
Para atualizar um cluster existente, faça o seguinte:
- 
No console Google Cloud , acesse a página Clusters do Kubernetes: Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Kubernetes Engine. 
- Clique no nome do cluster. 
- Na seção Recursos, localize a opção Serviço gerenciado para o Prometheus. Clique em edit Editar e limpe Ativar Serviço gerenciado para o Prometheus. 
- Clique em Salvar alterações. 
Para cancelar a ativação automática da coleta gerenciada ao criar um novo cluster do GKE Standard (versão 1.27 ou superior), faça o seguinte:
- 
No console Google Cloud , acesse a página Clusters do Kubernetes: Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Kubernetes Engine. 
- Clique em Criar. 
- Clique em Configurar para a opção Padrão. 
- No painel de navegação, clique em Recursos. 
- Na seção Operações, limpe Ativar serviço gerenciado para o Prometheus. 
- Clique em Salvar. 
CLI gcloud
É possível fazer o seguinte usando a CLI gcloud:
- Desativar a coleta gerenciada em um cluster do GKE atual.
- Cancelar a ativação automática da coleta gerenciada ao criar um novo cluster do GKE Standard executando a versão 1.27 ou mais recente do GKE.
A conclusão desses comandos pode levar até 5 minutos.
Primeiro, defina seu projeto:
gcloud config set project PROJECT_ID
Para desativar a coleta gerenciada em um cluster atual, execute um dos comandos update a seguir com base no estado do cluster, zonal ou regional:
- gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --zone ZONE 
- gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --region REGION 
Para cancelar a ativação automática da coleta gerenciada ao criar um novo cluster do GKE Standard (versão 1.27 ou superior), execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME --zone ZONE --no-enable-managed-prometheus
Autopilot do GKE
Não é possível desativar a coleta gerenciada em clusters do Autopilot do GKE executando a versão 1.25 ou mais recente do GKE.
Terraform
Para desativar a coleta gerenciada, defina o atributo enabled no bloco de configuração managed_prometheus como false. Para mais informações
sobre esse bloco de configuração, consulte o
registro do Terraform para google_container_cluster.
Para informações gerais sobre como usar o Google Cloud com o Terraform, consulte Terraform com Google Cloud.
Ativar a coleta gerenciada: Kubernetes fora do GKE
Se você estiver executando em um ambiente que não seja do GKE, será possível ativar a coleta gerenciada usando o seguinte:
- A CLI kubectl.
- Implantações locais do VMware ou bare metal que executam a versão 1.12 ou mais recente. 
 CLI kubectl 
Para instalar coletores gerenciados quando você estiver usando um cluster do Kubernetes que não seja do GKE, execute os seguintes comandos para instalar os manifestos de configuração e operador:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/manifests/setup.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/manifests/operator.yaml
No local
Para informações sobre como configurar a coleta gerenciada para clusters locais, consulte a documentação da sua distribuição:
Implantar o aplicativo de exemplo
O aplicativo de exemplo emite
a métrica de contador example_requests_total e a métrica de histograma
example_random_numbers (entre outras) na porta metrics. O manifesto do
aplicativo define três réplicas.
Para implantar o aplicativo de exemplo, execute o seguinte comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/examples/example-app.yaml
Configurar um recurso do PodMonitoring
Para ingerir os dados de métrica emitidos pelo aplicativo de exemplo, o Managed Service para Prometheus usa a captura de destino. A raspagem dos dados de destino e a ingestão de métricas são configuradas usando os recursos personalizados do Kubernetes. O serviço gerenciado usa os recursos personalizados (CRs) do PodMonitoring.
Uma coleta de resposta automática do PodMonitoring só segmenta no namespace em que a resposta automática está implantada.
Para coletar objetivos em vários namespaces, implante a mesma resposta automática do PodMonitoring em
cada namespace. Para verificar se o recurso PodMonitoring está instalado no
namespace pretendido, execute kubectl get podmonitoring -A.
Para a documentação de referência sobre todas as respostas automáticas gerenciadas pelo serviço do Prometheus, consulte a referência do prometheus-engine/doc/api.
O manifesto a seguir define um recurso do PodMonitoring, prom-example, no namespace NAMESPACE_NAME. O recurso usa um seletor de rótulos do Kubernetes para encontrar todos os pods no namespace que têm o rótulo app.kubernetes.io/name com o valor prom-example.
A raspagem de dados dos pods correspondentes é feita em uma porta chamada metrics, a cada 30 segundos, no caminho HTTP /metrics.
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: prom-example
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: prom-example
  endpoints:
  - port: metrics
    interval: 30s
Para aplicar esse recurso, execute o seguinte comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/examples/pod-monitoring.yaml
Seu coletor gerenciado agora está extraindo os pods correspondentes. É possível ver o status do destino da raspagem de dados ativando o recurso de status do destino.
Para configurar uma coleção horizontal que se aplique a um intervalo de pods em todos os namespaces, use o recurso ClusterPodMonitoring. O recurso ClusterPodMonitoring fornece a mesma interface que o PodPod, mas não limita os pods descobertos a um determinado namespace.
Se você estiver executando no GKE, faça o seguinte:
- Para consultar as métricas ingeridas pelo aplicativo de exemplo usando o PromQL no Cloud Monitoring, consulte Consultar usando o Cloud Monitoring.
- Para consultar as métricas ingeridas pelo aplicativo de exemplo usando o Grafana, acesse Consulta usando o Grafana ou qualquer consumidor da API Prometheus.
- Para saber como filtrar métricas exportadas e adaptar seus recursos de operador de promessa, consulte Outros tópicos para coleta gerenciada.
Se você estiver executando fora do GKE, será necessário criar uma conta de serviço e autorizá-la a gravar seus dados de métrica, conforme descrito na seção a seguir.
Fornecer credenciais explicitamente
Ao executar no GKE, o servidor do Prometheus que coleta é recuperado automaticamente com base na conta de serviço do nó. Em clusters que não são do Kubernetes, as credenciais precisam ser explicitamente fornecidas por meio do recurso OperatorConfig no namespace gmp-public.
- Defina o contexto para seu projeto de destino: - gcloud config set project PROJECT_ID 
- Crie uma conta de serviço: - gcloud iam service-accounts create gmp-test-sa 
- Conceda as permissõ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.metricWriter 
- Crie e faça o download de 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 arquivo de chave como secret ao cluster que não é do GKE: - kubectl -n gmp-public create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json 
- Abra o recurso OperatorConfig para edição: - kubectl -n gmp-public edit operatorconfig config - Adicione o texto exibido em negrito ao recurso: - apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: credentials: name: gmp-test-sa key: key.json- rulespara que a avaliação da regra gerenciada funcione.
- Salve o arquivo e feche o editor. Depois que a alteração é aplicada, os pods são recriados e começam a autenticar no back-end da métrica com a conta de serviço especificada. 
 - Outros tópicos da coleção gerenciada- Esta seção explica como fazer o seguinte: - Ative o recurso de status do destino para facilitar a depuração.
- Configurar a extração de destino usando o Terraform.
- Filtre os dados exportados para o serviço gerenciado.
- Coletar métricas do Kubelet e do cAdvisor.
- Converta os recursos atuais do operador para uso com o serviço gerenciado.
- Execute a coleção gerenciada fora do GKE.
 - Como ativar o recurso de status do destino- O Managed Service para Prometheus oferece uma maneira de verificar se os destinos estão sendo descobertos e coletados corretamente pelos coletores. Esse relatório de status da meta é uma ferramenta para depurar problemas graves. Recomendamos ativar esse recurso apenas para investigar problemas imediatos. Deixar a geração de relatórios de status de destino ativada em clusters grandes pode fazer com que o operador fique sem memória e entre em um loop de falhas. - Para verificar o status dos destinos nos recursos do PodMonitoring ou ClusterPodMonitoring, defina o valor - features.targetStatus.enabledno recurso do OperatorConfig como- true, conforme mostrado a seguir:- apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config features: targetStatus: enabled: true- Após alguns segundos, o campo - Status.Endpoint Statusesaparece em todos os recursos válidos do PodMonitoring ou ClusterPodMonitoring, quando configurados.- Se você tiver um recurso do PodMonitoring com o nome - prom-exampleno namespace- NAMESPACE_NAME, execute o seguinte comando para verificar o status:- kubectl -n NAMESPACE_NAME describe podmonitorings/prom-example - A saída será assim: - API Version: monitoring.googleapis.com/v1 Kind: PodMonitoring ... Status: Conditions: ... Status: True Type: ConfigurationCreateSuccess Endpoint Statuses: Active Targets: 3 Collectors Fraction: 1 Last Update Time: 2023-08-02T12:24:26Z Name: PodMonitoring/custom/prom-example/metrics Sample Groups: Count: 3 Sample Targets: Health: up Labels: Cluster: CLUSTER_NAME Container: prom-example Instance: prom-example-589ddf7f7f-hcnpt:metrics Job: prom-example Location: REGION Namespace: NAMESPACE_NAME Pod: prom-example-589ddf7f7f-hcnpt project_id: PROJECT_ID Last Scrape Duration Seconds: 0.020206416 Health: up Labels: ... Last Scrape Duration Seconds: 0.054189485 Health: up Labels: ... Last Scrape Duration Seconds: 0.006224887- A saída inclui os seguintes campos de status: - Status.Conditions.Statusé verdadeiro quando o serviço gerenciado para Prometheus confirma e processa o PodMonitoring ou o ClusterPodMonitoring.
- Status.Endpoint Statuses.Active Targetsmostra o número de destinos de verificação que o Managed Service para Prometheus conta em todos os coletores para esse recurso do PodMonitoring. No aplicativo de exemplo, a implantação- prom-exampletem três réplicas com um único destino de métrica. Portanto, o valor é- 3. Se houver destinos não íntegros, o campo- Status.Endpoint Statuses.Unhealthy Targetsserá exibido.
- Status.Endpoint Statuses.Collectors Fractionmostra um valor de- 1(ou seja, 100%) se todos os coletores gerenciados forem acessíveis pelo Managed Service para o Prometheus.
- Status.Endpoint Statuses.Last Update Timemostra o horário da última atualização. Quando o tempo da última atualização é significativamente maior que o tempo desejado do intervalo de coleta, a diferença pode indicar problemas com seu destino ou cluster.
- O campo Status.Endpoint Statuses.Sample Groupsmostra exemplos de destinos agrupados por rótulos de destino comuns injetados pelo coletor. Esse valor é útil para depurar situações em que seus destinos não são descobertos. Se todos os destinos estiverem íntegros e sendo coletados, o valor esperado para o campoHealthseráupe o valor para o campoLast Scrape Duration Secondsserá a duração habitual de um destino típico.
 - Para mais informações sobre esses campos, consulte o documento da API Managed Service para Prometheus. - Qualquer um dos itens a seguir pode indicar um problema com sua configuração: - O campo Status.Endpoint Statusesnão consta no recurso PodMonitoring.
- O valor do campo Last Scrape Duration Secondsé muito antigo.
- Você vê poucas segmentações.
- O valor do campo Healthindica que o destino édown.
 - Para mais informações sobre problemas de descoberta de destinos para depuração, consulte Problemas no lado da ingestão na documentação da solução de problemas. - Como configurar um endpoint de raspagem de dados autorizado- Se o destino de extração exigir autorização, configure o coletor para usar o tipo correto e forneça os segredos relevantes. - O Google Cloud Managed Service para Prometheus é compatível com os seguintes tipos de autorização: - mTLS- O mTLS é comumente configurado em ambientes de confiança zero, como a malha de serviço do Istio ou o Cloud Service Mesh. - Para ativar a raspagem de dados de endpoints protegidos com mTLS, defina o campo - Spec.Endpoints[].Schemeno recurso PodMonitoring como- https. Embora não seja recomendado, é possível definir o campo- Spec.Endpoints[].tls.insecureSkipVerifyno recurso PodMonitoring como- truepara ignorar a verificação da autoridade de certificação. Como alternativa, é possível configurar o Managed Service para Prometheus para carregar certificados e chaves de recursos secretos.- Por exemplo, o recurso Secret a seguir contém chaves para o cliente ( - cert), a chave privada (- key) e os certificados da autoridade de certificação (- ca):- kind: Secret metadata: name: secret-example stringData: cert: ******** key: ******** ca: ******** - Conceda ao coletor do Managed Service para Prometheus permissão para acessar esse recurso Secret: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gmp-system kind: ServiceAccount - Nos clusters do GKE Autopilot, isso é assim: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gke-gmp-system kind: ServiceAccount - Para configurar um recurso PodMonitoring que usa o recurso Secret anterior, modifique o recurso para adicionar uma seção - schemee- tls:- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: prom-example spec: selector: matchLabels: app.kubernetes.io/name: prom-example endpoints: - port: metrics interval: 30s scheme: https tls: ca: secret: name: secret-example key: ca cert: secret: name: secret-example key: cert key: secret: name: secret-example key: key- Para a documentação de referência sobre todas as opções de mTLS do Managed Service para Prometheus, consulte a documentação de referência da API. - BasicAuth- Para ativar a raspagem de dados de endpoints protegidos com BasicAuth, defina o campo - Spec.Endpoints[].BasicAuthno recurso PodMonitoring com seu nome de usuário e senha. Para outros tipos de cabeçalho de autorização HTTP, consulte Cabeçalho de autorização HTTP.- Por exemplo, o recurso Secret a seguir contém uma chave para armazenar a senha: - kind: Secret metadata: name: secret-example stringData: password: ******** - Conceda ao coletor do Managed Service para Prometheus permissão para acessar esse recurso Secret: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gmp-system kind: ServiceAccount - Nos clusters do GKE Autopilot, isso é assim: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gke-gmp-system kind: ServiceAccount - Para configurar um recurso PodMonitoring que usa o recurso Secret anterior e um nome de usuário - foo, modifique o recurso para adicionar uma seção- basicAuth:- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: prom-example spec: selector: matchLabels: app.kubernetes.io/name: prom-example endpoints: - port: metrics interval: 30s basicAuth: username: foo password: secret: name: secret-example key: password- Para a documentação de referência sobre todas as opções de BasicAuth do Managed Service para Prometheus, consulte a documentação de referência da API. - Cabeçalho de autorização HTTP- Para ativar endpoints de extração protegidos com cabeçalhos de autorização HTTP, defina o campo - Spec.Endpoints[].Authorizationno recurso PodMonitoring com o tipo e as credenciais. Para endpoints BasicAuth, use a configuração BasicAuth.- Por exemplo, o recurso Secret a seguir contém uma chave para armazenar as credenciais: - kind: Secret metadata: name: secret-example stringData: credentials: ******** - Conceda ao coletor do Managed Service para Prometheus permissão para acessar esse recurso Secret: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gmp-system kind: ServiceAccount - Nos clusters do GKE Autopilot, isso é assim: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gke-gmp-system kind: ServiceAccount - Para configurar um recurso PodMonitoring que usa o recurso Secret anterior e um tipo de - Bearer, modifique o recurso para adicionar uma seção- authorization:- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: prom-example spec: selector: matchLabels: app.kubernetes.io/name: prom-example endpoints: - port: metrics interval: 30s authorization: type: Bearer credentials: secret: name: secret-example key: credentials- Para a documentação de referência sobre todas as opções de cabeçalho de autorização HTTP do Managed Service para Prometheus, consulte a documentação de referência da API. - OAuth 2- Para ativar a raspagem de dados de endpoints protegidos com OAuth 2, defina o campo - Spec.Endpoints[].OAuth2no recurso PodMonitoring.- Por exemplo, o recurso Secret a seguir contém uma chave para armazenar o secret do cliente: - kind: Secret metadata: name: secret-example stringData: clientSecret: ******** - Conceda ao coletor do Managed Service para Prometheus permissão para acessar esse recurso Secret: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gmp-system kind: ServiceAccount - Nos clusters do GKE Autopilot, isso é assim: - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: secret-example-read rules: - resources: - secrets apiGroups: [""] verbs: ["get", "list", "watch"] resourceNames: ["secret-example"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gmp-system:collector:secret-example-read namespace: default roleRef: name: secret-example-read kind: Role apiGroup: rbac.authorization.k8s.io subjects: - name: collector namespace: gke-gmp-system kind: ServiceAccount - Para configurar um recurso do PodMonitoring que usa o recurso Secret anterior com um ID do cliente de - fooe um URL do token de- example.com/token, modifique o recurso para adicionar uma seção- oauth2:- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: prom-example spec: selector: matchLabels: app.kubernetes.io/name: prom-example endpoints: - port: metrics interval: 30s oauth2: clientID: foo clientSecret: secret: name: secret-example key: password tokenURL: example.com/token- Para a documentação de referência sobre todas as opções do OAuth 2.0 do Managed Service para Prometheus, consulte a documentação de referência da API. - Como configurar a raspagem de dados de destino usando o Terraform- É possível automatizar a criação e o gerenciamento de recursos PodMonitoring e ClusterPodMonitoring usando o tipo de recurso - kubernetes_manifestdo Terraform ou tipo de recurso- kubectl_manifestdo Terraform, que permite especificar recursos personalizados arbitrários.- Para informações gerais sobre como usar Google Cloud com o Terraform, consulte Terraform com Google Cloud. - Filtrar métricas exportadas- Se você coletar muitos dados, convém evitar que algumas séries temporais sejam enviadas ao serviço gerenciado para o Prometheus, para manter os custos baixos. Para isso, use as regras de re-rotulação do Prometheus com uma ação - keeppara uma lista de permissões ou uma ação- droppara uma lista de bloqueio. Para a coleta gerenciada, essa regra entra na seção- metricRelabelingdo recurso PodMonitoring ou ClusterPodMonitoring.- Por exemplo, a seguinte regra de rerótulo de métrica vai filtrar qualquer métrica que comece com - foo_bar_,- foo_baz_ou- foo_qux_:- metricRelabeling: - action: drop regex: foo_(bar|baz|qux)_.+ sourceLabels: [__name__]- A página Gerenciamento de métricas do Cloud Monitoring fornece informações que podem ajudar a controlar o valor gasto em métricas sujeitas a cobrança, sem afetar a observabilidade. A página Gerenciamento de métricas mostra as seguintes informações: - Volumes de ingestão para faturamento baseado em byte e amostra, em domínios de métricas e para métricas individuais.
- Dados sobre rótulos e cardinalidade de métricas.
- O número de leituras de cada métrica.
- O uso de métricas em políticas de alertas e painéis personalizados.
- A taxa de erros de gravação das métricas.
 - Você também pode usar o Gerenciamento de métricas para excluir métricas desnecessárias, eliminando o custo de ingestão delas. Para mais informações sobre a página Gerenciamento de métricas, consulte Ver e gerenciar o uso de métricas. - Para mais sugestões sobre como reduzir seus custos, consulte Atribuição de controles de custo. - Como coletar métricas do Kubelet e cAdvisor- O Kubelet expõe métricas sobre ele mesmo, bem como métricas do cAdvisor sobre contêineres em execução no nó. É possível configurar a coleta gerenciada para extrair métricas do Kubelet e cAdvisor editando o recurso OperatorConfig. Para instruções, consulte a documentação do exportador para Kubelet e cAdvisor. - Converter recursos atuais de operador do Prometheus- Geralmente, é possível converter os recursos do operador Prometheus atuais para os recursos do serviço gerenciado da coleção gerenciada do Prometheus do PodMonitoring e do ClusterPodMonitoring. - Por exemplo, o recurso ServiceMonitor define o monitoramento para um conjunto de serviços. O recurso PodMonitoring atende a um subconjunto dos campos exibidos pelo recurso ServiceMonitor. É possível converter uma resposta automática do ServiceMonitor em uma resposta automática do PodMonitoring mapeando os campos conforme descrito na tabela a seguir: - monitoring.coreos.com/v1 
 ServiceMonitor- Compatibilidade 
 - monitoring.googleapis.com/v1 
 PodMonitoring- .ServiceMonitorSpec.Selector- Idênticos - .PodMonitoringSpec.Selector- .ServiceMonitorSpec.Endpoints[]- .TargetPortmapeia para- .Port
 - .Path: compatível
 - .Interval: compatível
 - .Timeout: compatível- .PodMonitoringSpec.Endpoints[]- .ServiceMonitorSpec.TargetLabels- O podMonitor precisa especificar: 
 - .FromPod[].Fromrótulo do pod
 - .FromPod[].Torótulo de destino- .PodMonitoringSpec.TargetLabels- Veja a seguir uma amostra de uma resposta automática do ServiceMonitor: o conteúdo em negrito é substituído na conversão, e o conteúdo em itálico é mapeado diretamente: - apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app spec: selector: matchLabels: app: example-app endpoints: - targetPort: web path: /stats interval: 30s targetLabels: - foo- Veja a seguir a resposta análoga do PodMonitoring, supondo que seu serviço e seus pods sejam rotulados com - app=example-app. Se essa suposição não se aplicar, será necessário usar os seletores de rótulo do recurso de Serviço subjacente.- O conteúdo em negrito foi substituído na conversão: - apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: example-app spec: selector: matchLabels: app: example-app endpoints: - port: web path: /stats interval: 30s targetLabels: fromPod: - from: foo # pod label from example-app Service pods. to: foo- Sempre é possível continuar usando os recursos e operadores de implantação prometheus atuais usando coletores implantados automaticamente em vez de coletores gerenciados. É possível consultar métricas enviadas dos dois tipos de coletores. Por isso, pode ser útil usar coletores autoimplantados nas implantações atuais do Prometheus enquanto usa coletores gerenciados para novas implantações do Prometheus. - Rótulos reservados- O Serviço gerenciado para Prometheus adiciona automaticamente os seguintes rótulos a todas as métricas coletadas. Esses rótulos são usados para identificar exclusivamente um recurso no Monarch: - project_id: o identificador do projeto Google Cloud associado à sua métrica.
- location: o local físico (região doGoogle Cloud ) em que os dados são armazenados. Esse valor geralmente é a região do cluster do GKE. Se os dados forem coletados de uma AWS ou implantação no local, o valor poderá ser a região Google Cloud mais próxima.
- cluster: o nome do cluster do Kubernetes associado à métrica.
- namespace: o nome do namespace do Kubernetes associado à sua métrica.
- job: o rótulo do job do destino do Prometheus, se conhecido. Pode estar vazio para resultados de avaliação de regras.
- instance: o rótulo da instância de destino do Prometheus, se conhecido. Pode estar vazio para os resultados de avaliação de regras.
 - Embora não seja recomendado ao executar no Google Kubernetes Engine, é possível substituir os rótulos - project_id,- locatione- clusteradicionando-os como- argsao recurso de implantação em- operator.yaml. Se você usar rótulos reservados como rótulos de métricas, o serviço gerenciado para Prometheus os adicionará novamente com o prefixo- exported_. Esse comportamento corresponde a como o Prometheus upstream lida com conflitos com rótulos reservados.- Configurações de compactação- Se você tiver muitos recursos PodMonitoring, poderá ficar sem espaço no ConfigMap. Para corrigir isso, ative a compactação - gzipno seu recurso OperatorConfig:- apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config features: config: compression: gzip- Ativar o escalonamento automático vertical de pods (VPA) para a coleta gerenciada- Se você estiver encontrando erros de falta de memória (OOM, na sigla em inglês) para os pods do coletor no cluster ou se as solicitações e os limites de recursos padrão para os coletores não atenderem às suas necessidades, use o escalonamento automático vertical de pods para alocar recursos de forma dinâmica. - Ao definir o campo - scaling.vpa.enabled: trueno recurso- OperatorConfig, o operador implanta um manifesto- VerticalPodAutoscalerno cluster que permite definir automaticamente os limites e solicitações de recursos dos pods do coletor com base no uso.- Para ativar o VPA para pods de coleta no Managed Service para Prometheus, execute o seguinte comando: - kubectl -n gmp-public patch operatorconfig/config -p '{"scaling":{"vpa":{"enabled":true}}}' --type=merge- Se o comando for concluído, o operador vai configurar o escalonamento automático vertical de pods para os pods do coletor. Os erros de falta de memória resultam em um aumento imediato nos limites de recursos. Se não houver erros de falta de memória, o primeiro ajuste nos pedidos e limites de recursos dos pods do coletor geralmente ocorrerá em até 24 horas. - Você pode receber este erro ao tentar ativar o VPA: - vertical pod autoscaling is not available - install vpa support and restart the operator- Para resolver esse erro, primeiro ative o escalonamento automático vertical de pods no nível do cluster: - Acesse a página Kubernetes Engine - Clusters no Google Cloud console. - No console Google Cloud , acesse a página Clusters do Kubernetes: - Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Kubernetes Engine. 
- Selecione o cluster que você quer modificar. 
- Na seção Automação, edite o valor da opção Escalonamento automático vertical de pods. 
- Marque a caixa de seleção Ativar o escalonamento automático vertical de pods e clique em Salvar alterações. Essa mudança reinicia o cluster. O operador é reiniciado como parte desse processo. 
- Tente novamente o comando a seguir: - kubectl -n gmp-public patch operatorconfig/config -p '{"scaling":{"vpa":{"enabled":true}}}' --type=mergepara ativar o VPA no Serviço gerenciado para Prometheus.
 - Para confirmar que o recurso - OperatorConfigfoi editado com sucesso, abra-o usando o comando- kubectl -n gmp-public edit operatorconfig config. Se for bem-sucedido, seu- OperatorConfigvai incluir a seguinte seção em negrito:- apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config scaling: vpa: enabled: true- Se você já tiver ativado o escalonamento automático vertical de pods no nível do cluster e ainda estiver vendo o erro - vertical pod autoscaling is not available - install vpa support and restart the operator, talvez o pod- gmp-operatorprecise reavaliar a configuração do cluster. Se você estiver executando um cluster Standard, execute o seguinte comando para recriar o pod:- kubectl -n gmp-system rollout restart deployment/gmp-operator - Depois que o pod - gmp-operatorfor reiniciado, siga as etapas acima para corrigir o- OperatorConfignovamente.- Se você estiver executando um cluster do Autopilot, entre em contato com o suporte para receber ajuda para reiniciar o cluster. - O escalonamento automático vertical de pods funciona melhor ao ingerir números constantes de amostras, divididas igualmente entre os nós. Se a carga de métricas for irregular ou instável, ou se variar muito entre os nós, a VPA talvez não seja uma solução eficiente. - Para mais informações, consulte escalonamento automático vertical de pods no GKE. - Configurar o statsd_exporter e outros exportadores que informam métricas centralmente- Se você usa o statsd_exporter para Prometheus, o Envoy para Istio, o exportador SNMP, o Prometheus Pushgateway, o kube-state-metrics ou tem um exportador semelhante que intermedia e informa métricas em nome de outros recursos em execução no seu ambiente, faça algumas pequenas mudanças para que o exportador funcione com o Managed Service para Prometheus. - Para instruções sobre como configurar esses exportadores, consulte esta observação na seção Solução de problemas. - Eliminação- Para desativar a coleta gerenciada implantada usando - gcloudou a IU do GKE, realize um dos seguintes procedimentos:- Execute este comando: - gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus 
- Use a IU do GKE: - Selecione Kubernetes Engine no console Google Cloud e, em seguida, selecione Clusters. 
- Localize o cluster em que você quer desativar a coleta gerenciada e clique no nome dela. 
- Na guia Detalhes, role para baixo até Recursos e mude o estado para Desativado usando o botão de edição. 
 
 - Para desativar a coleta gerenciada implantada usando o Terraform, especifique - enabled = falsena seção- managed_prometheusdo recurso- google_container_cluster.- Para desativar a coleta gerenciada implantada usando - kubectl, execute o seguinte comando:- kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/manifests/operator.yaml - Desativar a coleta gerenciada faz com que o cluster pare de enviar novos dados para o Managed Service para Prometheus. Essa ação não exclui os dados de métricas já armazenados no sistema. - Desativar a coleta gerenciada também exclui o namespace - gmp-publice todos os recursos dentro dele, incluindo os exportadores instalados nesse namespace.- Executar a coleção gerenciada fora do GKE- Nos ambientes do GKE, é possível executar a coleta gerenciada sem nenhuma configuração. Em outros ambientes do Kubernetes, é necessário fornecer explicitamente credenciais, um valor - project-idpara conter suas métricas, um valor- location(regiãoGoogle Cloud ) em que suas métricas serão armazenadas e um valor- clusterpara salvar o nome do cluster em que o coletor está sendo executado.- Como - gcloudnão funciona fora dos ambientes Google Cloud , você precisa implantar usando o kubectl. Ao contrário do- gcloud, a implantação da coleta gerenciada usando- kubectlnão faz o upgrade automático do cluster quando uma nova versão está disponível. Lembre-se de acompanhar a página de lançamentos para novas versões e fazer upgrade manualmente executando novamente os comandos- kubectlcom a nova versão.- É possível fornecer uma chave de conta de serviço modificando o recurso OperadorConfig em - operator.yaml, conforme descrito em Fornecer credenciais explicitamente. É possível fornecer valores- project-id,- locatione- clusteradicionando-os como- argsao recurso de implantação em- operator.yaml.- Recomendamos escolher - project-idcom base no modelo de locação planejada para leituras. Escolha um projeto para armazenar métricas com base na forma como você planeja organizar as leituras posteriormente com escopos de métricas. Se não se importar, coloque tudo em um só projeto.- Para - location, recomendamos escolher a região do Google Cloud mais próxima da implantação. Quanto mais distante a região escolhida do Google Cloud estiver da implantação, maior será a latência de gravação e o impacto por possíveis problemas de rede. Consulte esta lista de regiões em várias nuvens. Se você não se importar, poderá colocar tudo em uma única Google Cloud região. Não é possível usar- globalcomo local.- Para - cluster, recomendamos escolher o nome do cluster em que o operador está implantado.- Quando configurado corretamente, o OperatorConfig ficará assim: - apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: credentials: name: gmp-test-sa key: key.json rules: credentials: name: gmp-test-sa key: key.json- O recurso de implantação será semelhante a este: - apiVersion: apps/v1 kind: Deployment ... spec: ... template: ... spec: ... containers: - name: operator ... args: - ... - "--project-id=PROJECT_ID" - "--cluster=CLUSTER_NAME" - "--location=REGION"- Neste exemplo, presumimos que você definiu a variável - REGIONcomo um valor como- us-central1, por exemplo.- A execução do Managed Service para Prometheus fora do Google Cloud gera taxas de transferência de dados. Há taxas para transferir dados para Google Cloud, e pode haver taxas para transferir dados de outra nuvem. É possível minimizar esses custos ativando a compactação gzip na rede usando o OperatorConfig. Adicione o texto exibido em negrito ao recurso: - apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: compression: gzip ...- Leitura adicional sobre recursos personalizados da coleção gerenciada- Para a documentação de referência sobre todos os recursos personalizados do Managed Service para Prometheus, consulte a referência do prometheus-engine/doc/api. - A seguir