Neste tutorial, mostramos como configurar sondagens de atividade para microsserviços de aplicativos implantados no Google Kubernetes Engine (GKE) usando o Prometheus Prometheus.
Neste tutorial, usamos o Prometheus de código aberto. No entanto, cada cluster Autopilot do GKE implanta automaticamente o Serviço Gerenciado para Prometheus, Google Clouda solução totalmente gerenciada, multicloud e de vários projetos do Google Cloud para métricas do Prometheus. O Serviço gerenciado para Prometheus permite monitorar globalmente e gerar alertas sobre suas cargas de trabalho usando o Prometheus, sem precisar gerenciar e operar manualmente o Prometheus em escala.
Também é possível usar ferramentas de código aberto, como o Grafana, para visualizar as métricas coletadas pelo Prometheus.
Objetivos
- Criar um cluster.
- Implantar o Prometheus.
- Implantar o aplicativo de amostra, Bank of Anthos.
- Configurar as sondagens de atividade do Prometheus.
- Configurar os alertas do Prometheus.
- Configurar o Alertmanager para receber notificações em um canal do Slack.
- Simular uma falha temporária para testar o Prometheus.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso,
use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
- Faça login nasua Google Cloud conta. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.- Instale a CLI do Helm
Prepare o ambiente
Neste tutorial, você usará o Cloud Shell para gerenciar recursos hospedados no Google Cloud.
Defina as variáveis de ambiente padrão:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATIONSubstitua:
PROJECT_ID: o Google Cloud ID do projeto.CONTROL_PLANE_LOCATION: a região do Compute Engine do plano de controle do seu cluster. Neste tutorial, a região éus-central1. Normalmente, você deve escolher uma região próxima a você.
Clone o repositório de amostra usado neste tutorial:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/Crie um cluster:
gcloud container clusters create-auto CLUSTER_NAME \ --release-channel=CHANNEL_NAME \ --location=CONTROL_PLANE_LOCATIONSubstitua:
CLUSTER_NAME: um nome para o novo cluster.CHANNEL_NAME: o nome de um canal de lançamento.
Implantar o Prometheus
Instale o Prometheus usando a amostra de gráfico do Helm:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install tutorial prometheus-community/kube-prometheus-stack \
--values extras/prometheus/oss/values.yaml \
--wait
Esse comando instala o Prometheus com os seguintes componentes:
- Operador do Prometheus: uma maneira conhecida de implantar e configurar o Prometheus de código aberto.
- Alertmanager: manipula os alertas enviados pelo servidor do Prometheus e os encaminha para aplicativos, como o Slack.
- Exportador de caixa preta: permite que os endpoints de sondagem do Prometheus usem HTTP, HTTPS, DNS, TCP, ICMP e gRPC.
Implantar o Bank of Anthos
Implante o aplicativo de amostra Bank of Anthos:
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests
Notificações do Slack
Para configurar as notificações do Slack, crie um aplicativo do Slack, ative os Webhooks de entrada para o aplicativo e instale-o em um espaço de trabalho do Slack.
Crie o aplicativo Slack
Participe de um espaço de trabalho do Slack registrando-se com seu e-mail ou usando um convite enviado por um administrador do espaço de trabalho.
Faça login no Slack usando o nome do seu espaço de trabalho e as credenciais da sua conta do Slack.
Criar um novo aplicativo do Slack
- Na caixa de diálogo Criar um aplicativo, clique em Do zero.
- Especifique o campo App Name e escolha seu espaço de trabalho do Slack.
- Clique em Create App.
- Em Adicionar recursos e funcionalidades, clique em Webhooks de entrada.
- Clique no botão Ativar Webhooks de entrada.
- Na seção Webhook URLs for your Workspace, clique em Add New Webhook to Workspace.
- Na página de autorização, selecione um canal para receber notificações.
- Clique em Permitir.
- Um webhook do aplicativo Slack é exibido na seção URLs do webhook para seu espaço de trabalho. Salve o URL para mais tarde.
Configurar o Alertmanager
Crie um Secret do Kubernetes para armazenar o URL do webhook:
kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL
kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml
Substitua SLACK_WEBHOOK_URL pelo URL do webhook
da seção anterior.
Configurar o Prometheus
Analise o seguinte manifesto:
Esse manifesto descreve as sondagens de atividade do Prometheus e inclui os seguintes campos:
spec.jobName: o nome do job atribuído às métricas coletadas.spec.prober.url: o URL do serviço do exportador de caixa preta. Isso inclui a porta padrão do exportador de caixa preta, que é definida no gráfico do Helm.spec.prober.path: o caminho de coleta das métricas.spec.targets.staticConfig.labels: os rótulos atribuídos a todas as métricas coletadas dos destinos.spec.targets.staticConfig.static: a lista de hosts a serem sondados.
Aplique o manifesto ao cluster. Como você está usando o gráfico do Helm da comunidade do Prometheus, a porta e o nome do serviço do exportador de caixa preta mudaram. Execute o seguinte comando
sedpara corrigir o URL codificado no manifesto baixado antes de aplicá-lo:sed```sh sed -i 's/tutorial-kube-prometheus-blackbox-exporter:19115/tutorial-prometheus-blackbox-exporter:9115/g' extras/prometheus/oss/probes.yaml kubectl apply -f extras/prometheus/oss/probes.yaml ```- Analise o seguinte manifesto:
Esse manifesto descreve um
PrometheusRulee inclui os seguintes campos:spec.groups.[*].name: o nome do grupo de regras.spec.groups.[*].interval: a frequência com que as regras no grupo são avaliadas.spec.groups.[*].rules[*].alert: o nome do alerta.spec.groups.[*].rules[*].expr: a expressão PromQL a ser avaliada.spec.groups.[*].rules[*].for: a quantidade de vezes que os alertas são emitidos antes de serem considerados disparados.spec.groups.[*].rules[*].annotations: uma lista de anotações para adicionar a cada alerta. Válido apenas para regras de alerta.spec.groups.[*].rules[*].labels: os rótulos que serão adicionados ou substituídos.
Aplique o manifesto ao cluster. Observação: antes de executar o comando a seguir, verifique se há erros no arquivo
rules.yamlnas expressões PromQL ou nas definições de alerta e corrija-os.kubectl apply -f extras/prometheus/oss/rules.yaml
Simular uma interrupção
Simule uma interrupção escalonando a implantação
contactspara zero:kubectl scale deployment contacts --replicas 0Você verá uma mensagem de notificação no canal do espaço de trabalho do Slack. O GKE pode levar até cinco minutos para escalonar a implantação.
Restaure a implantação
contacts:kubectl scale deployment contacts --replicas 1Você verá uma mensagem de notificação de resolução de alerta no canal do espaço de trabalho do Slack. O GKE pode levar até cinco minutos para escalonar a implantação.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir o projeto
Excluir um Google Cloud projeto:
gcloud projects delete PROJECT_ID
Excluir recursos individuais
Exclua os recursos do Kubernetes:
kubectl delete -f kubernetes-manifestsDesinstale o Prometheus:
helm uninstall tutorialExclua o cluster do GKE:
gcloud container clusters delete CLUSTER_NAME --quiet
A seguir
- Saiba mais sobre Google Cloud Serviço Gerenciado para Prometheus, uma solução de métricas globais totalmente gerenciada e baseada no Prometheus que é implantada por padrão em todos os clusters do Autopilot.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.