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 Serviço gerenciado para Prometheus, a solução totalmente gerenciada, de várias nuvens 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 deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
- Instale a API 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 COMPUTE_REGION
Substitua:
PROJECT_ID
: seuID de projeto no Google Cloud.PROJECT_ID
: a região do Compute Engine para o 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 \ --region=COMPUTE_REGION
Substitua:
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 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:
- 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:
kubectl apply -f extras/prometheus/oss/probes.yaml
Analise o seguinte manifesto:
Esse manifesto descreve um
PrometheusRule
e 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.yaml
Simular uma interrupção
Simule uma interrupção escalonando a implantação
contacts
para zero:kubectl scale deployment contacts --replicas 0
Você 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 1
Você 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
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Excluir recursos individuais
Exclua os recursos do Kubernetes:
kubectl delete -f kubernetes-manifests
Desinstale o Prometheus:
helm uninstall tutorial
Exclua o cluster do GKE:
gcloud container clusters delete CLUSTER_NAME --quiet
A seguir
- 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.