En este instructivo, se muestra cómo configurar sondeos de funcionamiento a microservicios de aplicación implementados en Google Kubernetes Engine (GKE) mediante Prometheus de código abierto.
En este instructivo, se usa Prometheus de código abierto. Sin embargo, cada clúster de GKE Autopilot implementa de forma automática Managed Service para Prometheus, la solución deGoogle Cloudcompletamente administrada, de múltiples nubes y entre proyectos para las métricas de Prometheus. Servicio administrado para Prometheus: te permite supervisar y crear alertas en tus cargas de trabajo mediante Prometheus, sin tener que administrar y operar de forma manual Prometheus a gran escala.
También puedes usar herramientas de código abierto como Grafana para visualizar métricas recopiladas por Prometheus.
Objetivos
- Crear un clúster
- Implementa Prometheus.
- Implementa la aplicación de muestra, Bank of Anthos.
- Configura los sondeos de funcionamiento de Prometheus.
- Configurar alertas de Prometheus
- Configura Alertmanager para recibir notificaciones en un canal de Slack.
- Simula una interrupción para probar Prometheus.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para obtener una estimación de costos en función del uso previsto,
usa la calculadora de precios.
Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de comenzar
- 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. - Instala la API de Helm
Configura las variables de entorno predeterminadas:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATIONReemplaza lo siguiente:
PROJECT_ID: Es el Google Cloud ID del proyecto.CONTROL_PLANE_LOCATION: La región de Compute Engine del plano de control de tu clúster. Para este instructivo, la región esus-central1. Por lo general, se recomienda una región cercana a ti.
Clona el repositorio de muestra que se usa en este instructivo:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/Crea un clúster:
gcloud container clusters create-auto CLUSTER_NAME \ --release-channel=CHANNEL_NAME \ --location=CONTROL_PLANE_LOCATIONReemplaza lo siguiente:
CLUSTER_NAME: un nombre para el clúster nuevo.CHANNEL_NAME: el nombre de un canal de versiones.
- Operador de Prometheus: Una forma popular de implementar y configurar Prometheus de código abierto.
- Alertmanager: Controla las alertas que envía el servidor de Prometheus y las enruta a aplicaciones, como Slack.
- Exportador de caja negra: permite que Prometheus sondee extremos mediante HTTP, HTTPS, DNS, TCP, ICMP y gRPC.
Únete a un lugar de trabajo de Slack. Para hacerlo, regístrate con tu correo electrónico o usa una invitación que te haya enviado un administrador del espacio de trabajo.
Accede a Slack con el nombre de tu espacio de trabajo y tus credenciales de la cuenta de Slack.
Cree una aplicación de Slack nueva
- En el cuadro de diálogo Create an app (Crear una aplicación), haz clic en From scratch (Desde cero).
- Especifica un nombre de aplicación y elige tu lugar de trabajo de Slack.
- Haz clic en Crear aplicación (Create App).
- En Add features and functionality (Agregar características y funciones), haz clic en Incoming Webhooks (Webhooks entrantes).
- Haz clic en el botón de activación Activate Incoming Webhooks (Activar webhooks entrantes).
- En la sección Webhook URLs for Your Workspace (URLs de webhook para tu lugar de trabajo), haz clic en Add New Webhook to Workspace (Agregar webhook nuevo al lugar de trabajo).
- En la página de autorización que se abrirá, selecciona un canal para recibir notificaciones.
- Haz clic en Permitir.
- Se mostrará un webhook para tu aplicación de Slack en la sección Webhook URLs for Your Workspace (URLs de webhook para tu lugar de trabajo). Guarda la URL para usarla más adelante.
Revisa el siguiente manifiesto:
En este manifiesto, se describen los sondeos de funcionamiento de Prometheus y se incluyen los siguientes campos:
spec.jobName: el nombre del trabajo asignado a las métricas recopiladas.spec.prober.url: la URL del servicio del exportador de la caja negra. Esto incluye el puerto predeterminado para el exportador de la caja negra, que se define en el gráfico de Helm.spec.prober.path: la ruta de recopilación de métricas.spec.targets.staticConfig.labels: las etiquetas asignadas a todas las métricas recopiladas de los destinos.spec.targets.staticConfig.static: la lista de hosts que se sondearán.
Aplica el manifiesto al clúster:
kubectl apply -f extras/prometheus/oss/probes.yamlRevisa el siguiente manifiesto:
En este manifiesto, se describe un
PrometheusRuley se incluyen los siguientes campos:spec.groups.[*].name: el nombre del grupo de reglas.spec.groups.[*].interval: con qué frecuencia se evalúan las reglas del grupo.spec.groups.[*].rules[*].alert: el nombre de la alerta.spec.groups.[*].rules[*].expr: la expresión PromQL que se evaluará.spec.groups.[*].rules[*].for: la cantidad de tiempo que deben aparecer las alertas antes de que se consideren activadas.spec.groups.[*].rules[*].annotations: una lista de anotaciones que se agregará a cada alerta. Esto solo es válido para las reglas de alerta.spec.groups.[*].rules[*].labels: las etiquetas que se agregarán o reemplazarán.
Aplica el manifiesto al clúster:
kubectl apply -f extras/prometheus/oss/rules.yamlSimula una interrupción mediante el escalamiento de la implementación
contactsa cero:kubectl scale deployment contacts --replicas 0Deberías ver un mensaje de notificación en el canal de tu lugar de trabajo de Slack. GKE puede tardar hasta 5 minutos en escalar el Deployment.
Restablece la implementación
contacts:kubectl scale deployment contacts --replicas 1Deberías ver un mensaje de notificación de resolución de alertas en el canal de tu espacio de trabajo de Slack. GKE puede tardar hasta 5 minutos en escalar el Deployment.
- 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.
Borra los recursos de Kubernetes:
kubectl delete -f kubernetes-manifestsDesinstala Prometheus:
helm uninstall tutorialBorra el clúster de GKE:
gcloud container clusters delete CLUSTER_NAME --quiet- Obtén más información sobre Google Cloud Managed Service para Prometheus, una solución de métricas globales completamente administrada, basada en Prometheus, que se implementa de forma predeterminada en todos los clústeres de Autopilot.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.
Prepare el entorno
En este instructivo, usarás Cloud Shell para administrar recursos alojados enGoogle Cloud.
Implementa Prometheus
Instala Prometheus mediante el gráfico de Helm de muestra:
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
Con este comando, se instala Prometheus con los siguientes componentes:
Implementa Bank of Anthos
Implementa la aplicación de muestra Bank of Anthos:
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests
Notificaciones de Slack
Si deseas configurar las notificaciones de Slack, debes crear una aplicación de Slack, activar los webhooks entrantes de la aplicación y, luego, instalarla en un lugar de trabajo de Slack.
Crea la aplicación de Slack
Configura Alertmanager
Crea un secreto de Kubernetes para almacenar la URL de webhook:
kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL
kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml
Reemplaza SLACK_WEBHOOK_URL por la URL del webhook de la sección anterior.
Configura Prometheus
Simula una interrupción
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.