Questo tutorial mostra come configurare i probe di attività per i microservizi dell'applicazione di cui è stato eseguito il deployment in Google Kubernetes Engine (GKE) utilizzando Prometheus open source.
Questo tutorial utilizza Prometheus open source. Tuttavia, ogni cluster GKE Autopilot esegue automaticamente il deployment di Managed Service per Prometheus, la soluzione multicloud e multiprogetto completamente gestita diGoogle Cloud per le metriche Prometheus. Managed Service per Prometheus ti consente di monitorare e creare avvisi sui tuoi carichi di lavoro a livello globale utilizzando Prometheus, senza dover gestire e utilizzare manualmente Prometheus su larga scala.
Puoi anche utilizzare strumenti open source come Grafana per visualizzare le metriche raccolte da Prometheus.
Prepara l'ambiente
In questo tutorial utilizzerai Cloud Shell per gestire le risorse ospitate su Google Cloud.
Imposta le variabili di ambiente predefinite:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATION
Sostituisci quanto segue:
PROJECT_ID
: il tuo Google Cloud ID progetto.CONTROL_PLANE_LOCATION
: la regione di Compute Engine del control plane del tuo cluster. Per questo tutorial, la regione èus-central1
. In genere, ti consigliamo di scegliere una regione vicina a te.
Clona il repository di esempio utilizzato in questo tutorial:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/
Crea un cluster:
gcloud container clusters create-auto CLUSTER_NAME \ --release-channel=CHANNEL_NAME \ --location=CONTROL_PLANE_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME
: un nome per il nuovo cluster.CHANNEL_NAME
: il nome di un canale di rilascio.
Esegui il deployment di Prometheus
Installa Prometheus utilizzando il grafico Helm di esempio:
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
Questo comando installa Prometheus con i seguenti componenti:
- Operatore Prometheus: un modo diffuso per eseguire il deployment e configurare Prometheus open source.
- Alertmanager: gestisce gli avvisi inviati dal server Prometheus e li indirizza ad applicazioni come Slack.
- Blackbox Exporter: consente a Prometheus di eseguire il probe degli endpoint utilizzando HTTP, HTTPS, DNS, TCP, ICMP e gRPC.
Esegui il deployment di Bank of Anthos
Esegui il deployment dell'applicazione di esempio Bank of Anthos:
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests
Notifiche Slack
Per configurare le notifiche di Slack, devi creare un'applicazione Slack, attivare i webhook in entrata per l'applicazione e installare l'applicazione in un workspace Slack.
Crea l'applicazione Slack
Unisciti a uno spazio di lavoro Slack, registrandoti con la tua email o utilizzando un invito inviato da un amministratore di Workspace.
Accedi a Slack utilizzando il nome del tuo spazio di lavoro e le credenziali del tuo account Slack.
-
- Nella finestra di dialogo Crea un'app, fai clic su Da zero.
- Specifica un nome app e scegli il tuo workspace Slack.
- Fai clic su Crea app.
- Nella sezione Aggiungi funzionalità, fai clic su Webhook in arrivo.
- Fai clic sul pulsante di attivazione/disattivazione Attiva webhook in entrata.
- Nella sezione Webhook URLs for Your Workspace (URL webhook per il tuo workspace), fai clic su Add New Webhook to Workspace (Aggiungi nuovo webhook al workspace).
- Nella pagina di autorizzazione visualizzata, seleziona un canale per ricevere le notifiche.
- Fai clic su Consenti.
- Un webhook per la tua applicazione Slack viene visualizzato nella sezione Webhook URL per il tuo workspace. Salva l'URL per un utilizzo futuro.
Configura Alertmanager
Crea un secret Kubernetes per archiviare l'URL webhook:
kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL
kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml
Sostituisci SLACK_WEBHOOK_URL
con l'URL del webhook
della sezione precedente.
Configura Prometheus
Esamina il seguente manifest:
Questo manifest descrive i probe di attività di Prometheus e include i seguenti campi:
spec.jobName
: il nome del job assegnato alle metriche sottoposte a scraping.spec.prober.url
: l'URL del servizio dell'esportatore blackbox. Ciò include la porta predefinita per l'esportatore blackbox, definita nel grafico Helm.spec.prober.path
: il percorso di raccolta delle metriche.spec.targets.staticConfig.labels
: le etichette assegnate a tutte le metriche recuperate dai target.spec.targets.staticConfig.static
: l'elenco degli host da analizzare.
Applica il manifest al cluster:
kubectl apply -f extras/prometheus/oss/probes.yaml
Esamina il seguente manifest:
Questo manifest descrive un
PrometheusRule
e include i seguenti campi:spec.groups.[*].name
: il nome del gruppo di regole.spec.groups.[*].interval
: la frequenza con cui vengono valutate le regole del gruppo.spec.groups.[*].rules[*].alert
: il nome dell'avviso.spec.groups.[*].rules[*].expr
: l'espressione PromQL da valutare.spec.groups.[*].rules[*].for
: il periodo di tempo in cui gli avvisi devono essere restituiti prima di essere considerati attivi.spec.groups.[*].rules[*].annotations
: un elenco di annotazioni da aggiungere a ogni avviso. Questo è valido solo per le regole di avviso.spec.groups.[*].rules[*].labels
: le etichette da aggiungere o sovrascrivere.
Applica il manifest al cluster:
kubectl apply -f extras/prometheus/oss/rules.yaml
Simula un'interruzione del servizio
Simula un'interruzione del servizio scalando il deployment
contacts
a zero:kubectl scale deployment contacts --replicas 0
Dovresti visualizzare un messaggio di notifica nel canale del tuo workspace Slack. GKE potrebbe richiedere fino a 5 minuti per scalare il deployment.
Ripristina il deployment di
contacts
:kubectl scale deployment contacts --replicas 1
Dovresti visualizzare un messaggio di notifica di risoluzione dell'avviso nel canale dello spazio di lavoro Slack. GKE potrebbe richiedere fino a 5 minuti per scalare il deployment.