Questo insieme di tutorial è rivolto agli amministratori IT e agli operatori che vogliono per eseguire il deployment, eseguire e gestire ambienti applicativi moderni in esecuzione Google Kubernetes Engine (GKE) Enterprise. Man mano che procedi in questa serie di tutorial, impari a configurare monitoraggio e avvisi, scalare carichi di lavoro e simulare errori, il tutto utilizzando l'applicazione di microservizi di esempio di Cymbal Bank:
- Crea un cluster ed esegui il deployment di un'applicazione di esempio
- Monitoraggio con Google Cloud Managed Service per Prometheus (questo tutorial)
- Scala i carichi di lavoro
- Simula un errore
Panoramica e obiettivi
L'applicazione di esempio Cymbal Bank utilizzata in questo insieme di tutorial è costituita da un di microservizi eseguiti nel cluster GKE. Problemi uno di questi servizi potrebbe compromettere l'esperienza della banca clienti, come l'impossibilità di accedere all'applicazione della banca. Informazioni su i problemi con i servizi il prima possibile significa poter iniziare rapidamente individuare e risolvere i problemi.
In questo tutorial imparerai a monitorare i carichi di lavoro in un GKE utilizzando Google Cloud Managed Service per Prometheus e Cloud Monitoring. Imparerai come per completare le seguenti attività:
Crea un webhook Slack per Alertmanager.
Configura Prometheus per monitorare lo stato di un campione basato su microservizi un'applicazione.
Simula un'interruzione ed esamina gli avvisi inviati utilizzando il webhook Slack.
Costi
Esempio di abilitazione di GKE Enterprise e deployment di Cymbal Bank di applicazione per questa serie di tutorial prevede che siano applicati costi per cluster addebita costi per GKE Enterprise su Google Cloud come elencato Pagina dei prezzi fino a quando non disabiliterai GKE Enterprise o non elimini il progetto.
Sei inoltre responsabile di altri costi di Google Cloud sostenuti durante l'esecuzione del Applicazione di esempio di Cymbal Bank, ad esempio addebiti per VM di Compute Engine e e configurazione in Cloud Monitoring.
Prima di iniziare
Per scoprire come monitorare i carichi di lavoro, devi completare il primo tutorial per creare un cluster GKE che usa Autopilot ed eseguire il deployment l'applicazione di esempio basata su microservizi di Cymbal Bank.
Ti consigliamo di completare questo insieme di tutorial per Cymbal Bank in ordine. Man mano che procedi nella serie di tutorial, acquisisci nuove competenze e utilizzi e altri prodotti e servizi Google Cloud.
Ecco un esempio di come un cluster GKE Autopilot può utilizzare Google Cloud Managed Service per Prometheus per generare messaggi in una questo tutorial utilizza Slack. Nei tuoi deployment di produzione, puoi usa lo strumento di comunicazione preferito della tua organizzazione per elaborare e consegnare quando il cluster GKE ha un problema.
Entrare in un'area di lavoro Slack registrandoti con il tuo indirizzo email o usando un invito inviato da un amministratore di Workspace.
crea un'applicazione Slack
Una parte importante della configurazione del monitoraggio è assicurarsi di ricevere una notifica quando si verificano eventi strategici come le interruzioni del servizio. Uno schema comune è inviare notifiche a uno strumento di comunicazione come Slack, che è quello che utilizzi in questo tutorial. Slack offre una funzionalità di webhook che consente a utenti come i deployment di produzione, generano messaggi. Puoi utilizzare la modalità altri strumenti di comunicazione nella tua organizzazione per elaborare e recapitare i messaggi quando il cluster GKE ha un problema.
I cluster GKE che usano Autopilot includono Istanza Google Cloud Managed Service per Prometheus. Questa istanza può generare avvisi quando succede qualcosa alle tue applicazioni. Questi avvisi possono quindi usare uno Slack webhook per inviare un messaggio alla tua area di lavoro Slack in modo da ricevere una richiesta in caso di problemi.
Per configurare le notifiche Slack basate sugli avvisi generati da Prometheus, è necessario creare un'applicazione Slack, attivare i webhook in entrata per l'applicazione e installare l'applicazione in un'area di lavoro Slack.
Accedi a Slack tramite il nome dell'area 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 la tua area di lavoro Slack.
- Fai clic su Create App (Crea app).
- In Aggiungi funzioni e funzionalità, fai clic su Webhook in entrata.
- Fai clic sul pulsante di attivazione/disattivazione Attiva webhook in entrata.
- Nella sezione URL webhook per il tuo spazio di lavoro, fai clic su Aggiungi nuovo Webhook a Workspace.
- Nella pagina di autorizzazione che si apre, seleziona un canale da ricevere notifiche.
- Fai clic su Consenti.
- Un webhook per la tua applicazione Slack è visualizzato nella sezione URL webhook per Il tuo Workspace. Salva l'URL per un secondo momento.
Configura AlertManager
In Prometheus, Alertmanager elabora gli eventi di monitoraggio generati. Alertmanager può saltare gli eventi duplicati, gli eventi correlati ai gruppi Inviare notifiche, ad esempio con un webhook Slack. In questa sezione viene illustrato come configurare Alertmanager per utilizzare il nuovo webhook Slack. Specifica come preferisci La sezione AlertManager per elaborare gli eventi da inviare è trattata nella sezione successiva della tutorial iniziale, Configurare Prometheus.
Per configurare Alertmanager per l'utilizzo del webhook Slack, completa quanto segue passaggi:
Passa al repository Git che include tutte le directory di esempio manifest per Cymbal Bank del tutorial precedente:
cd ~/bank-of-anthos/
Se necessario, cambia il percorso della directory in cui hai precedentemente clonato repository Git.
Aggiorna il manifest YAML di esempio Alertmanager con l'URL webhook del tuo Applicazione Slack:
sed -i "s@SLACK_WEBHOOK_URL@SLACK_WEBHOOK_URL@g" "extras/prometheus/gmp/alertmanager.yaml"
Sostituisci
SLACK_WEBHOOK_URL
con l'URL del webhook dalla sezione precedente.Per utilizzare in modo dinamico l'URL webhook di Slack univoco senza modifiche alle del codice dell'applicazione, puoi usare un secret Kubernetes. Il codice dell'applicazione legge il valore di questo secret. In applicazioni più complesse, questa capacità consente di modificare o ruotare i valori per motivi di sicurezza o conformità.
Crea un secret Kubernetes per Alertmanager utilizzando il manifest YAML di esempio che contiene l'URL webhook di Slack:
kubectl create secret generic alertmanager \ -n gmp-public \ --from-file=extras/prometheus/gmp/alertmanager.yaml
Prometheus può utilizzare esportatori per ottenere metriche dalle applicazioni senza codice modifiche. L'utilità di esportazione blackbox Prometheus consente di eseguire il probe degli endpoint come HTTP o HTTPS. Questo esportatore funziona bene quando non vuoi o non puoi esporre i meccanismi interni dell'applicazione a Prometheus. Prometheus l'utilità di esportazione blackbox può funzionare senza modifiche al codice dell'applicazione le metriche a Prometheus.
Esegui il deployment dell'esportatore blackbox Prometheus nel tuo cluster:
kubectl apply -f extras/prometheus/gmp/blackbox-exporter.yaml
Configura Prometheus
Dopo aver configurato Alertmanager per l'utilizzo del webhook Slack, devi di' a Prometheus cosa monitorare in Cymbal Bank e che tipo di evento vuoi Alertmanager per inviarti una notifica sull'utilizzo del webhook Slack.
Nell'applicazione di esempio di Cymbal Bank che utilizzi in questi tutorial, sono disponibili vari microservizi in esecuzione nel cluster GKE. Un problema probabilmente vorrai sapere il prima possibile se uno dei Cymbal I servizi bancari hanno smesso di rispondere normalmente alle richieste, il che significa potenzialmente i tuoi clienti non potranno accedere all'applicazione. Puoi configurare Prometheus rispondere agli eventi in base ai criteri della tua organizzazione.
Probe
Puoi configurare i probe Prometheus per le risorse da monitorare. Questi probe possono generare avvisi in base alla risposta ricevuta dai probe. Nell'applicazione di esempio Cymbal Bank, puoi utilizzare probe HTTP che verificano Codici di risposta a livello di 200 dai Servizi. Una risposta di livello HTTP 200 indica che il Servizio funzioni correttamente e possa rispondere alle richieste. Se è presente e il probe non riceve la risposta prevista, puoi definire Regole di Prometheus che generano avvisi che Alertmanager elabora ed esegue ulteriori azioni.
Creare alcuni probe Prometheus per monitorare lo stato HTTP dei vari microservizi dell'applicazione di esempio Cymbal Bank. Esamina quanto segue manifest di esempio:
Come mostrato in questo file manifest, la best practice prevede che ogni
PodMonitoring
Il probe di attività Prometheus monitora separatamente ogni deployment.Per creare i probe di attività Prometheus, applica il manifest al tuo cluster:
kubectl apply -f extras/prometheus/gmp/probes.yaml
Regole
Prometheus deve sapere cosa vuoi fare in base alla risposta che che ricevono i probe che hai creato nei passaggi precedenti. Definisci questa risposta utilizzando Regole di Prometheus.
In questo tutorial, creerai regole Prometheus per generare avvisi in base la risposta al probe di attività. Alertmanager quindi elabora l'output queste regole per generare notifiche usando il webhook Slack.
Crea regole che generino eventi in base alla risposta all'attività e i sonde. Esamina il seguente manifest di esempio:
Questo file manifest descrive un
PrometheusRule
e include quanto segue campi:spec.groups.[*].name
: il nome del gruppo di regole.spec.groups.[*].interval
: frequenza con cui vengono valutate le regole nel gruppo.spec.groups.[*].rules[*].alert
: il nome dell'avviso.spec.groups.[*].rules[*].expr
: l'espressione PromQL da valutare.spec.groups.[*].rules[*].for
: la quantità di tempo per cui gli avvisi devono essere restituiti prima che vengano considerate attivate.spec.groups.[*].rules[*].annotations
: un elenco di annotazioni da aggiungere a ciascun avviso. È valido solo per le regole di avviso.spec.groups.[*].rules[*].labels
: le etichette da aggiungere o sovrascrivere.
Per creare le regole, applica il manifest al cluster:
kubectl apply -f extras/prometheus/gmp/rules.yaml
Simula un'interruzione
Assicurati che i probe, le regole e la configurazione di Alertmanager Prometheus siano corrette, devi verificare che avvisi e notifiche vengano inviati quando c'è un problema. Se non testi questo flusso, potresti non renderti conto che c'è un'interruzione dei tuoi servizi di produzione quando si verifica un problema.
Per simulare l'interruzione di uno dei microservizi, scala
contacts
Deployment a zero. Senza istanze del Servizio, Cymbal Bank dell'applicazione di esempio non riesce a leggere le informazioni di contatto dei clienti:kubectl scale deployment contacts --replicas 0
Lo scale down di GKE potrebbe richiedere fino a 5 minuti.
Controlla lo stato dei deployment nel tuo cluster e verifica che
contacts
Il deployment fa lo scale down correttamente:kubectl get deployments
Nell'output di esempio seguente, il deployment
contacts
è stato eseguito correttamente fatto lo scale down a0
istanze:NAME READY UP-TO-DATE AVAILABLE AGE balancereader 1/1 1 1 17m blackbox-exporter 1/1 1 1 5m7s contacts 0/0 0 0 17m frontend 1/1 1 1 17m ledgerwriter 1/1 1 1 17m loadgenerator 1/1 1 1 17m transactionhistory 1/1 1 1 17m userservice 1/1 1 1 17m
Dopo lo scale down a zero del deployment
contacts
, Prometheus il probe segnala un codice di errore HTTP. Questo errore HTTP genera un avviso per AlertManager l'elaborazione.Controlla se nel canale Slack dell'area di lavoro è presente un messaggio di notifica di interruzione con simile all'esempio seguente:
[FIRING:1] ContactsUnavailable Severity: Warning :warning: Summary: Contacts Service is unavailable Namespace: default Check Contacts pods and it's logs
In uno scenario di interruzione reale, dopo aver ricevuto la notifica in Slack inizierebbe a risolvere i problemi e a ripristinare i servizi. Per questo tutorial, simula questo processo e ripristina il deployment
contacts
facendo lo scale up di repliche:kubectl scale deployment contacts --replicas 1
La scalabilità del deployment e Prometheus potrebbe richiedere fino a 5 minuti per ricevere una risposta HTTP 200. Devi controllare lo stato del Deployment che utilizzano il comando
kubectl get deployments
.Quando riceve una risposta integro al probe Prometheus, Alertmanager cancella l'evento. Dovresti vedere un messaggio di notifica di risoluzione degli avvisi in il canale Slack dell'area di lavoro, come nell'esempio seguente:
[RESOLVED] ContactsUnavailable Severity: Warning :warning: Summary: Contacts Service is unavailable Namespace: default Check Contacts pods and it's logs
Esegui la pulizia
Ti consigliamo di completare questo insieme di tutorial per Cymbal Bank in ordine. Man mano che procedi nella serie di tutorial, acquisisci nuove competenze e utilizzi e altri prodotti e servizi Google Cloud.
Se vuoi fare una pausa prima di passare al prossimo tutorial ed evitare comportano addebiti sul tuo account Google Cloud per le risorse utilizzate in elimina il progetto che hai creato.
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
Scopri come scalare i deployment in GKE Enterprise nel prossimo tutorial.