En este tutorial se muestra cómo configurar comprobaciones de actividad para microservicios de aplicaciones desplegados en Google Kubernetes Engine (GKE) mediante Prometheus de código abierto.
En este tutorial se usa Prometheus, que es de código abierto. Sin embargo, cada clúster de Autopilot de GKE despliega automáticamente Managed Service para Prometheus, la solución multicloud y entre proyectos totalmente gestionada deGoogle Cloudpara métricas de Prometheus. Managed Service para Prometheus te permite monitorizar y recibir alertas sobre tus cargas de trabajo en todo el mundo con Prometheus, sin tener que gestionar ni usar Prometheus manualmente a gran escala.
También puedes usar herramientas de código abierto como Grafana para visualizar las métricas recogidas por Prometheus.
Preparar el entorno
En este tutorial, usarás Cloud Shell para gestionar los recursos alojados enGoogle Cloud.
Define las variables de entorno predeterminadas:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATION
Haz los cambios siguientes:
PROJECT_ID
: tu Google Cloud ID de proyecto.CONTROL_PLANE_LOCATION
: la región de Compute Engine del plano de control de tu clúster. En este tutorial, la región esus-central1
. Normalmente, te interesa una región que esté cerca de ti.
Clona el repositorio de muestra que se usa en este tutorial:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/
Para crear un clúster, sigue estos pasos:
gcloud container clusters create-auto CLUSTER_NAME \ --release-channel=CHANNEL_NAME \ --location=CONTROL_PLANE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clúster.CHANNEL_NAME
: el nombre de un canal de lanzamiento.
Desplegar Prometheus
Instala Prometheus con el chart de Helm de ejemplo:
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 Prometheus con los siguientes componentes:
- Operador de Prometheus: una forma popular de desplegar y configurar Prometheus de código abierto.
- Alertmanager: gestiona las alertas enviadas por el servidor de Prometheus y las enruta a aplicaciones como Slack.
- Exportador de Blackbox: permite a Prometheus sondear endpoints mediante HTTP, HTTPS, DNS, TCP, ICMP y gRPC.
Desplegar Bank of Anthos
Despliega la aplicación de ejemplo Bank of Anthos:
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests
Notificaciones de Slack
Para configurar las notificaciones de Slack, debes crear una aplicación de Slack, activar los webhooks entrantes de la aplicación e instalar la aplicación en un espacio de trabajo de Slack.
Crear la aplicación de Slack
Únete a un espacio de trabajo de Slack registrándote con tu correo o usando una invitación que te haya enviado un administrador del espacio de trabajo.
Inicia sesión en Slack con el nombre de tu espacio de trabajo y las credenciales de tu cuenta de Slack.
-
- En el cuadro de diálogo Crear una aplicación, haz clic en Desde cero.
- Especifica un nombre de aplicación y elige tu espacio de trabajo de Slack.
- Haz clic en Create App (Crear aplicación).
- En Añadir características y funciones, haz clic en Webhooks entrantes.
- Haz clic en el botón Activar webhooks entrantes.
- En la sección Webhook URLs for Your Workspace (URLs de webhook de tu espacio de trabajo), haz clic en Add New Webhook to Workspace (Añadir nuevo webhook al espacio de trabajo).
- En la página de autorización que se abre, selecciona un canal para recibir notificaciones.
- Haz clic en Permitir.
- Se muestra un webhook de tu aplicación de Slack en la sección URLs de webhook de tu espacio de trabajo. Guarda la URL para más adelante.
Configurar Alertmanager
Crea un secreto de Kubernetes para almacenar la URL del webhook:
kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL
kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml
Sustituye SLACK_WEBHOOK_URL
por la URL del webhook de la sección anterior.
Configurar Prometheus
Revisa el siguiente archivo de manifiesto:
Este manifiesto describe las comprobaciones de actividad de Prometheus e incluye los siguientes campos:
spec.jobName
: nombre del trabajo asignado a las métricas raspadas.spec.prober.url
: la URL de servicio del exportador de caja negra. Esto incluye el puerto predeterminado del exportador de caja negra, que se define en el gráfico de Helm.spec.prober.path
: la ruta de recogida de métricas.spec.targets.staticConfig.labels
: las etiquetas asignadas a todas las métricas recogidas de los destinos.spec.targets.staticConfig.static
: lista de hosts que se van a sondear.
Aplica el manifiesto a tu clúster:
kubectl apply -f extras/prometheus/oss/probes.yaml
Revisa el siguiente archivo de manifiesto:
Este manifiesto describe un
PrometheusRule
e incluye los siguientes campos:spec.groups.[*].name
: el nombre del grupo de reglas.spec.groups.[*].interval
: la frecuencia con la que se evalúan las reglas del grupo.spec.groups.[*].rules[*].alert
: el nombre de la alerta.spec.groups.[*].rules[*].expr
: expresión de PromQL que se va a evaluar.spec.groups.[*].rules[*].for
: el tiempo que deben volver las alertas antes de que se consideren activadas.spec.groups.[*].rules[*].annotations
: lista de anotaciones que se añadirán a cada alerta. Esto solo es válido para las reglas de alertas.spec.groups.[*].rules[*].labels
: las etiquetas que se van a añadir o sobrescribir.
Aplica el manifiesto a tu clúster:
kubectl apply -f extras/prometheus/oss/rules.yaml
Simular una interrupción del servicio
Simula una interrupción del servicio escalando el
contacts
Deployment a cero:kubectl scale deployment contacts --replicas 0
Deberías ver un mensaje de notificación en el canal de tu espacio de trabajo de Slack. GKE puede tardar hasta 5 minutos en escalar el Deployment.
Restaura la implementación de
contacts
:kubectl scale deployment contacts --replicas 1
Deberías ver un mensaje de notificación de resolución de alerta en el canal del espacio de trabajo de Slack. GKE puede tardar hasta 5 minutos en escalar la implementación.