Neste tutorial, mostramos como configurar sondagens de atividade para microsserviços de aplicativos implantados no Google Kubernetes Engine (GKE) usando o Prometheus de código aberto.
Neste tutorial, usamos o Prometheus de código aberto. No entanto, cada cluster Autopilot do GKE implanta automaticamente o Managed Service para Prometheus, a solução totalmente gerenciada, de várias nuvens e de vários projetos doGoogle 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ê vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso, utilize 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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Instale a API Helm
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 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.
- 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.
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.
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:
kubectl apply -f extras/prometheus/oss/probes.yamlAnalise 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:
kubectl apply -f extras/prometheus/oss/rules.yamlSimule 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.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
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- Saiba mais sobre o Google Cloud Managed Service 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.
Prepare o ambiente
Neste tutorial, você vai usar o Cloud Shell para gerenciar recursos hospedados no Google Cloud.
Implantar o Prometheus
Instale o Prometheus usando a amostra de gráfico do Helm:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install tutorial bitnami/kube-prometheus \
--version 8.2.2 \
--values extras/prometheus/oss/values.yaml \
--wait
Esse comando instala o Prometheus com os seguintes componentes:
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
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
Simular uma interrupçã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.