GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di Grafana &Prometheus Kubernetes Cluster Monitoring

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:// endpoint sul tuo browser web. In questo modo è possibile verificare che queste destinazioni siano state configurate correttamente.

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.


Linux
  1. Come utilizzare Ansible per impostare il monitoraggio del sistema con Prometheus

  2. Come distribuire il tuo primo pod su un cluster Kubernetes

  3. Imposta il cluster Kubernetes con Rancher

  4. Monitora il server Linux usando Prometheus e Grafana

  5. Prometheus vs Zabbix:confronto degli strumenti di monitoraggio della rete

Come creare un cluster Kubernetes con AWS CLI

Come distribuire il cluster Kubernetes su AWS con Amazon EKS

Un'introduzione alle metriche di Prometheus e al monitoraggio delle prestazioni

Inizia a imparare Kubernetes dalla tua macchina locale

Creazione di un singolo cluster Kubernetes del piano di controllo con kubeadm

Cluster Kubernetes che utilizza K3S con Multipass di Canonical