Il monitoraggio del tuo cluster Kubernetes è fondamentale per garantire che i tuoi servizi siano sempre disponibili e in esecuzione. E prima di setacciare Internet alla ricerca di un sistema di monitoraggio, perché non provare il monitoraggio dei cluster Grafana e Prometheus Kubernetes?
In questa guida imparerai come monitorare il tuo cluster Kubernetes, visualizzando le metriche dello stato interno con una dashboard Prometheus e Grafana.
Continua a leggere per tenere sotto controllo le tue risorse!
Prerequisiti
- Una macchina Linux con Docker installato:questo tutorial utilizza una macchina Ubuntu 20.04 LTS con Docker versione 20.10.7. Ecco come installare Ubuntu.
- Un cluster Kubernetes a nodo singolo.
- Helm Package Manager installato — Per distribuire l'operatore Prometheus.
- L'interfaccia della riga di comando di Kubectl è installata e configurata sul tuo cluster.
Distribuzione del grafico del timone dello stack Kube-Prometheus
Il monitoraggio dei cluster Grafana e Prometheus Kubernetes fornisce informazioni sui potenziali colli di bottiglia delle prestazioni, sullo stato del cluster e sulle metriche delle prestazioni. Allo stesso tempo, visualizza l'utilizzo della rete, i modelli di utilizzo delle risorse dei pod e una panoramica di alto livello di ciò che sta accadendo nel tuo cluster.
Ma prima di impostare un sistema di monitoraggio con Grafana e Prometheus, devi prima distribuire il grafico Helm dello stack kube-prometheus. Lo stack contiene Prometheus, Grafana, Alertmanager, Prometheus operator e altre risorse di monitoraggio.
1. SSH nella tua macchina Ubuntu 20.04 (se stai utilizzando un server cloud) o semplicemente accedi alla tua macchina Ubuntu 20.04 installata localmente per iniziare.
2. Quindi, esegui kubectl create
comando seguente per creare un namespace
denominato monitoring
per tutti gli schieramenti relativi a Prometeo e Grafana.
kubectl create namespace monitoring
3. Esegui il seguente helm repo
comandi per aggiungere il file (prometheus-community
) Helm repo e aggiorna il tuo repo Helm.
# Add prometheus-community repo
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# Update helm repo
helm repo update
4. Dopo aver aggiunto il repository Helm, esegui il helm install
comando seguente per distribuire il grafico Helm dello stack kube-prometheus. Sostituisci prometheus
con il nome della versione desiderata.
Questo grafico Helm imposta uno stack di monitoraggio completo di Prometheus kubernetes agendo in base a una serie di definizioni di risorse personalizzate (CRD).
helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring
Una volta completata la distribuzione, otterrai il seguente output.
5. Infine, esegui il comando seguente per confermare la distribuzione dello stack kube-prometheus.
kubectl get pods -n monitoring
L'output seguente mostra la distribuzione dello stack kube-prometheus. Come puoi vedere, ogni componente dello stack è in esecuzione nel tuo cluster.
Accesso all'istanza Prometheus
Hai distribuito correttamente la tua istanza Prometheus sul tuo cluster e sei quasi pronto per monitorare il tuo cluster Kubernetes. Ma come accedi alla tua istanza Prometheus? Inoltrerai una porta locale 9090
al tuo cluster tramite il tuo servizio Prometheus con il kubectl port-forward
comando.
1. Esegui kubectl get
comando seguente per visualizzare tutti i servizi nello spazio dei nomi di monitoraggio per verificare il servizio Prometheus.
kubectl get svc -n monitoring
Tutti i servizi distribuiti nello spazio dei nomi di monitoraggio sono mostrati di seguito, incluso il servizio Prometheus. Utilizzerai il servizio Prometheus per configurare il port forwarding in modo che la tua istanza Prometheus possa essere accessibile al di fuori del tuo cluster.
2. Quindi, esegui il seguente kubectl port-forward
comando per inoltrare la porta locale 9090
al tuo cluster tramite il servizio Prometheus (svc/prometheus-kube-prometheus-prometheus
).
kubectl port-forward svc/prometheus-kube-prometheus-prometheus -n monitoring 9090
Ma se stai eseguendo un cluster Kubernetes a nodo singolo su un server cloud, esegui invece il comando seguente.
kuebctl port-forward --address 0.0.0.0 svc/prometheus-kube-prometheus-prometheus -n monitoring 9090
Per eseguire il comando kubectl port-forward come processo in background, liberando il terminale per un ulteriore utilizzo, aggiungi il simbolo &alla fine del comando. Continua premendo i tasti Ctrl+C per interrompere il processo di port forwarding in primo piano (questo non influirà sul processo di port forwarding in background).
3. Apri il tuo browser web preferito e accedi a uno degli URL seguenti per accedere alla tua istanza Prometheus.
- Vai a http://localhost:9090 se stai seguendo una macchina Ubuntu locale
- Vai all'indirizzo IP del tuo server seguito dalla porta 9090 (ovvero, http://YOUR_SERVER_IP:9090) se stai utilizzando un server cloud.
Per questo tutorial, Prometheus è in esecuzione su un server cloud.
Se il tuo servizio Prometheus funziona, otterrai la seguente pagina sul tuo browser web.
4. Infine, sul tuo terminale, premi i tasti Ctrl+C per chiudere il processo di port forwarding. Ciò rende Prometheus inaccessibile sul tuo browser.
Visualizzazione delle metriche dello stato interno del cluster Prometheus Kubernetes
La visualizzazione delle metriche dello stato interno del cluster Kubernetes è possibile con lo strumento Kube-state-metrics (KSM). Con lo strumento KSM puoi tenere traccia della salute e dell'utilizzo delle tue risorse e anche degli oggetti di stato interni. Alcuni dei punti dati che possono essere potenzialmente visualizzati tramite KSM sono; metriche del nodo, metriche di distribuzione e metriche del pod.
Lo strumento KSM viene fornito preconfezionato nello stack kube-prometheus e viene distribuito automaticamente con il resto dei componenti di monitoraggio.
Inoltrerai una porta locale al tuo cluster tramite il kube-state-metrics
servizio. In questo modo KSM analizza le metriche di sistema interne del tuo cluster e genera un elenco di query e valori. Ma prima del port forwarding, verifica prima il tuo servizio KSM Kubernetes.
1. Esegui il comando seguente per verificare il tuo kube-state-metrics
Servizio Kubernetes.
kubectl get svc -n monitoring | grep kube-state-metrics
Di seguito, puoi vedere il nome del servizio KSM Kubernetes (prometheus-kube-state-metrics) insieme a ClusterIP. Annota il nome del servizio KSM Kubernetes poiché ti servirà per eseguire il port forwarding nel passaggio successivo.
2. Quindi, esegui il comando seguente su port-forward
il prometheus-kube-state-metrics
servizio alla porta 8080
.
kubectl port-forward svc/prometheus-kube-state-metrics -n monitoring 8080
Se stai seguendo questo tutorial con una macchina Ubuntu 20.04 ospitata da un provider cloud, aggiungi il flag (–address 0.0.0.0) al comando kubectl port-forward. Ciò consente l'accesso esterno alla porta locale tramite l'indirizzo IP pubblico del tuo server.
3. Infine, sul tuo browser web, accedi a uno degli URL seguenti per visualizzare la pagina delle metriche Kube, come mostrato di seguito.
- Vai a http://localhost:8080 se sei su una macchina Ubuntu locale
- Vai all'indirizzo IP del tuo server seguito dalla porta 8080 (ovvero, http://YOUR_SERVER_IP:8080) se stai utilizzando un server cloud.
Fai clic sul link delle metriche per accedere alle metriche dello stato interno del tuo cluster.
Di seguito puoi vedere le metriche dello stato interno di un cluster simili alla tua.
Visualizzazione della metrica dello stato interno di un cluster su Prometheus
Hai eseguito con successo la distribuzione del grafico Helm dello stack di kube-prometheus, lo scrape di kube-state-metrics e le configurazioni del lavoro di Prometheus. Di conseguenza, CoreDNS, kube-api server, Prometheus operator e altri componenti Kubernetes sono stati impostati automaticamente come target su Prometheus.
1. Passare a uno dei http://localhost:9090/targets o http://
L'accesso all'endpoint consente inoltre di verificare che Prometheus stia eseguendo lo scraping delle proprie metriche e archiviando i dati in un database delle serie temporali (TSDB),
Ricorda di eseguire il port forwarding di Prometheus come mostrato nella sezione "Accesso all'istanza di Prometheus" nel passaggio due, prima di passare all'endpoint. Puoi anche eseguirlo come processo in background.
Come puoi vedere di seguito, diversi componenti interni di Kubernetes e componenti di monitoraggio sono configurati come obiettivi su Prometheus.
2. Fare clic sul Grafico menu per accedere a una pagina in cui eseguire una query PromQL (Prometheus Query Language).
3. Inserire l'esempio PromQL (Prometheus Query Language) query di seguito nello spazio delle espressioni fornito, quindi fai clic su Esegui. La query restituisce la quantità totale di memoria inutilizzata nel cluster.
sum((container_memory_usage_bytes{container!="POD",container!=""} - on (namespace,pod,container) avg by (namespace,pod,container)(kube_pod_container_resource_requests{resource="memory"})) * -1 >0 ) / (1024*1024*1024)
4. Per visualizzare i risultati della query PromQL eseguita nel passaggio 3 in formato grafico, fare clic su Grafico . Questo grafico mostrerà la quantità totale di memoria inutilizzata nel tuo cluster per un dato tempo.
Con tutto impostato correttamente, la metrica del cluster di esempio dovrebbe essere simile al grafico seguente.
Accesso quindi alla dashboard di Grafana
Potresti aver notato che le capacità di visualizzazione di Prometheus sono limitate, poiché sei bloccato solo con un Grafico opzione. Prometheus è ottimo per raschiare le metriche da obiettivi configurati come lavori, aggregare tali metriche e archiviarle in un TSDB localmente nella macchina Ubuntu. Ma quando si tratta di monitoraggio standard delle risorse, Prometheus e Grafana sono un'ottima coppia.
Prometheus aggrega le metriche esportate dai componenti del server come l'esportatore di nodi, CoreDNS, ecc. Mentre Grafana, con la visualizzazione come il suo punto di forza, riceve queste metriche da Prometheus e le visualizza attraverso numerose opzioni di visualizzazione.
Durante l'implementazione di kube-prometheus stack helm, Grafana è stato installato e configurato automaticamente, quindi puoi configurare l'accesso a Grafana sul tuo Cluster.
Per accedere alla dashboard di Grafana, dovrai prima recuperare il tuo nome utente e password memorizzati come segreti creati automaticamente per impostazione predefinita nel tuo cluster Kubernetes.
1. Esegui il seguente kubectl
comando per visualizzare i dati memorizzati come secret
nel tuo cluster Kubernetes (prometheus-grafana
) in formato YAML (-o yaml
).
kubectl get secret -n monitoring prometheus-grafana -o yaml
Come vedi sotto, il nome utente e la password per accedere alla dashboard di Grafana sono codificati in base64. Annota i valori di admin-password e admin-user segreti poiché dovrai decodificarli nel passaggio successivo.
2. Quindi, esegui ogni comando seguente su --decode
entrambi i segreti (admin-password
e admin-user
). Sostituisci YOUR_USERNAME
e YOUR_PASSWORD
con il admin-password
e admin-user
valori segreti che hai notato nel passaggio uno.
Questo tutorial non ha un output per ogni comando per motivi di sicurezza.
# Decode and print the username
echo YOUR_USERNAME | base64 --decode
# Decode and print the password
echo YOUR_PASSWORD | base64 --decode
3. Esegui kubectl
comando di seguito a port-forward
a una porta locale in 3000
vincolando il porto Grafana 80
alla porta 3000
. In questo modo avrai accesso all'interfaccia utente web di Grafana sul tuo browser.
kubectl port-forward svc/prometheus-grafana -n monitoring 3000:80
Aggiungi il flag –address 0.0.0.0 se stai seguendo utilizzando una macchina Ubuntu 20.04 ospitata da un provider cloud.
4. Infine, sul tuo browser, accedi a uno qualsiasi degli endpoint di seguito a seconda della configurazione della tua macchina:
- http://localhost:3000 (locale)
- o http://
:3000 (nuvola)
Inserisci il tuo valore segreto decodificato per admin-user e admin-password nel nome utente e password nell'apposito spazio.
Una volta effettuato l'accesso, otterrai la dashboard di Grafana, come mostrato di seguito.
Interazione con Grafana
Per impostazione predefinita, lo stack Kube-Prometheus distribuisce Grafana con alcuni dashboard preconfigurati per ogni destinazione configurata in Prometheus. Con queste dashboard preconfigurate, non sarà necessario impostare manualmente una dashboard per visualizzare ogni metrica aggregata da Prometheus.
Fai clic sull'icona della dashboard —> Sfoglia e il tuo browser reindirizza a una pagina in cui vedrai un elenco di dashboard (passaggio due).
Fare clic su uno dei dashboard preconfigurati di seguito per visualizzare la relativa risorsa di elaborazione visiva. Ma per questo tutorial, fai clic su Kubernetes / Compute Resources / Namespace (Pods) dashboard.
Di seguito è riportato un esempio di dashboard preconfigurato per visualizzare l'utilizzo delle risorse di calcolo da parte dei Pod in uno qualsiasi degli spazi dei nomi disponibili.
Per questo tutorial, l'origine dati è stato impostato su Prometheus e lo spazio dei nomi per la visualizzazione è impostato su monitoraggio .
Conclusione
In questo tutorial, hai imparato come distribuire l'operatore Prometheus utilizzando Helm e hai visualizzato le metriche dello stato interno del tuo cluster per monitorare il tuo cluster Kubernetes. Hai anche configurato Grafana e visualizzato le tue metriche Cluster configurando la dashboard Grafana.
A questo punto, hai già il monitoraggio del cluster Kubernetes completamente funzionante. Ma puoi migliorare personalmente queste nuove conoscenze, come configurare Alertmanager con Slack per ricevere avvisi in tempo reale.