Este tutorial mostra como configurar sondas de atividade para microsserviços de aplicações implementados no Google Kubernetes Engine (GKE) através do Prometheus de código aberto.
Este tutorial usa o Prometheus de código aberto. No entanto, cada cluster do GKE Autopilot implementa automaticamente o Managed Service for Prometheus, a solução totalmente gerida, multinuvem e entre projetos daGoogle Cloudpara métricas do Prometheus. O Managed Service for Prometheus permite-lhe monitorizar e receber alertas sobre as suas cargas de trabalho globalmente através do Prometheus, sem ter de gerir e operar manualmente o Prometheus à escala.
Também pode usar ferramentas de código aberto, como o Grafana, para visualizar as métricas recolhidas pelo Prometheus.
Prepare o ambiente
Neste tutorial, vai usar o Cloud Shell para gerir recursos alojados no Google Cloud.
Defina as variáveis de ambiente predefinidas:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATION
Substitua o seguinte:
PROJECT_ID
: o seu Google Cloud ID do projeto.CONTROL_PLANE_LOCATION
: a região do Compute Engine do plano de controlo do seu cluster. Para este tutorial, a região éus-central1
. Normalmente, recomendamos uma região perto de si.
Clone o repositório de exemplo 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_LOCATION
Substitua o seguinte:
CLUSTER_NAME
: um nome para o novo cluster.CHANNEL_NAME
: o nome de um canal de lançamento.
Implemente o Prometheus
Instale o Prometheus através do gráfico Helm de exemplo:
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
Este comando instala o Prometheus com os seguintes componentes:
- Prometheus Operator: uma forma popular de implementar e configurar o Prometheus de código aberto.
- Alertmanager: processa os alertas enviados pelo servidor Prometheus e encaminha-os para aplicações, como o Slack.
- Blackbox exporter: permite que o Prometheus sonde pontos finais através de HTTP, HTTPS, DNS, TCP, ICMP e gRPC.
Implemente o Bank of Anthos
Implemente a aplicação de exemplo 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, tem de criar uma aplicação do Slack, ativar os Webhooks de entrada para a aplicação e instalar a aplicação num espaço de trabalho do Slack.
Crie a aplicação Slack
Junte-se a um espaço de trabalho do Slack, registando-se com o seu email ou usando um convite enviado por um administrador do Workspace.
Inicie sessão no Slack com o nome do espaço de trabalho e as credenciais da sua conta do Slack.
-
- Na caixa de diálogo Criar uma app, clique em Do zero.
- Especifique um Nome da app e escolha o seu espaço de trabalho do Slack.
- Clique em Criar app.
- Em Adicionar funcionalidades, clique em Webhooks recebidos.
- Clique no botão ativar/desativar Ativar webhooks recebidos.
- Na secção URLs de webhook para o seu espaço de trabalho, clique em Adicionar novo webhook ao espaço de trabalho.
- Na página de autorização apresentada, selecione um canal para receber notificações.
- Clique em Permitir.
- É apresentado um webhook para a sua aplicação Slack na secção URLs de webhook para o seu espaço de trabalho. Guarde o URL para mais tarde.
Configure o Alertmanager
Crie um segredo 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 secção anterior.
Configure o Prometheus
Reveja o seguinte manifesto:
Este manifesto descreve as sondas de atividade do Prometheus e inclui os seguintes campos:
spec.jobName
: o nome da tarefa atribuído às métricas extraídas.spec.prober.url
: o URL do serviço do exportador de caixa negra. Isto inclui a porta predefinida para o exportador de caixa negra, que está definida no gráfico Helm.spec.prober.path
: o caminho de recolha de métricas.spec.targets.staticConfig.labels
: as etiquetas atribuídas a todas as métricas extraídas dos alvos.spec.targets.staticConfig.static
: a lista de anfitriões a sondar.
Aplique o manifesto ao cluster:
kubectl apply -f extras/prometheus/oss/probes.yaml
Reveja o seguinte manifesto:
Este 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 avaliar.spec.groups.[*].rules[*].for
: o período durante o qual os alertas têm de ser devolvidos antes de serem considerados acionados.spec.groups.[*].rules[*].annotations
: uma lista de anotações a adicionar a cada alerta. Isto só é válido para regras de alerta.spec.groups.[*].rules[*].labels
: as etiquetas a adicionar ou substituir.
Aplique o manifesto ao cluster:
kubectl apply -f extras/prometheus/oss/rules.yaml
Simule uma indisponibilidade
Simule uma indisponibilidade ao reduzir a implementação
contacts
para zero:kubectl scale deployment contacts --replicas 0
Deve ver uma mensagem de notificação no canal do espaço de trabalho do Slack. O GKE pode demorar até 5 minutos a dimensionar a implementação.
Restaure a implementação do
contacts
:kubectl scale deployment contacts --replicas 1
Deve ver uma mensagem de notificação de resolução de alerta no canal do seu espaço de trabalho do Slack. O GKE pode demorar até 5 minutos a dimensionar a implementação.