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, multi-nuvem e entre projetos da Google Cloud para métricas do Prometheus.Google CloudO 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 em grande escala.
Também pode usar ferramentas de código aberto, como o Grafana, para visualizar as métricas recolhidas pelo Prometheus.
Objetivos
- Crie um cluster.
- Implemente o Prometheus.
- Implemente a aplicação de exemplo, Bank of Anthos.
- Configure as sondas de atividade do Prometheus.
- Configure alertas do Prometheus.
- Configure o Alertmanager para receber notificações num canal do Slack.
- Simule uma indisponibilidade para testar o Prometheus.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização prevista,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
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 predefinidas:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATIONSubstitua 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_LOCATIONSubstitua o seguinte:
CLUSTER_NAME: um nome para o novo cluster.CHANNEL_NAME: o nome de um canal de lançamento.
- Prometheus Operator: uma forma popular de implementar e configurar o Prometheus de código aberto.
- Alertmanager: processa 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.
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 de entrada.
- 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.
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.yamlReveja o seguinte manifesto:
Este manifesto descreve um
PrometheusRulee inclui os seguintes campos:spec.groups.[*].name: o nome do grupo de regras.spec.groups.[*].interval: com que frequência 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.yamlSimule uma indisponibilidade ao reduzir a implementação
contactspara zero:kubectl scale deployment contacts --replicas 0Deve 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 1Deve ver uma mensagem de notificação de resolução de alerta no canal do espaço de trabalho do Slack. O GKE pode demorar até 5 minutos a dimensionar a implementaçã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.
Elimine os recursos do Kubernetes:
kubectl delete -f kubernetes-manifestsDesinstale o Prometheus:
helm uninstall tutorialElimine o cluster do GKE:
gcloud container clusters delete CLUSTER_NAME --quiet- Saiba mais sobre o Google Cloud Managed Service for Prometheus, uma solução de métricas global totalmente gerida, baseada no Prometheus, que é implementada por predefinição em todos os clusters do Autopilot.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.
Prepare o ambiente
Neste tutorial, vai usar o Cloud Shell para gerir recursos alojados no Google Cloud.
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:
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
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
Simule uma indisponibilidade
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.