Come Configurare Istio, Prometheus e Grafana per il Monitoraggio

Introduzione all’Osservabilità di Istio Utilizzando Prometheus

Rete di servizi Istio semplifica la rete dalle layer applicative utilizzando proxy laterali. È possibile implementare politiche di sicurezza e networking avanzate per tutta la comunicazione attraverso la tua infrastruttura utilizzando Istio.

Ma un’altra importante caratteristica di Istio è l’osservabilità. Puoi utilizzare Istio per osservare le prestazioni e il comportamento di tutti i tuoi microservizi nella tua infrastruttura (vedi l’immagine qui sotto). Una delle responsabilità principali degli ingegneri di affidabilità del sito (SREs) in grandi organizzazioni è monitorare le metriche d’oro delle loro applicazioni, come l’utilizzo della CPU, l’utilizzo della memoria, la latenza e il throughput.

In questo articolo, discuteremo come gli SREs possano trarre vantaggi dall’integrazione di tre software open-source – Istio, Prometheus e Grafana. Mentre Istio è il software di servizio più famoso, Prometheus è il software di monitoraggio più ampiamente utilizzato e Grafana è lo strumento di visualizzazione più famoso.

Nota: I passaggi sono testati per Istio 1.17.X

Guarda il Video di Configurazione di Istio, Prometheus e Grafana

Guarda il video se vuoi seguire i passaggi dal video:

Passo 1: Vai a Istio Add-Ons e Applica il File YAML di Prometheus e Grafana

Per prima cosa, vai alla cartella degli add-on nella directory di Istio utilizzando il comando. Dal momento che sto utilizzando 1.17.1, il percorso per me è istio-1.17.1/samples/addons

Noterai che Istio fornisce già alcuni file YAML per configurare Grafana, Prometheus, Jaeger, Kiali, ecc. Puoi configurare Prometheus utilizzando il seguente comando:

Shell

 

kubectl apply -f prometheus.yaml
Shell

 

kubectl apply -f grafana.yaml

Tieni presente che questi file YAML aggiuntivi vengono applicati per impostazione predefinita allo spazio dei nomi istio-system


Passo 2: Distribuisci Nuovo Servizio e Esegui Port-Forwarding dell’Ingress Gateway di Istio

Per sperimentare il modello di funzionamento, distribuiremo il servizio httpbin in uno spazio dei nomi abilitato per Istio. Creeremo un oggetto del gateway di ingresso di Istio per ricevere il traffico verso il servizio dal pubblico. 

Effettueremo inoltre il port-forwarding del gateway di ingresso di Istio a una porta specifica – 7777. 


Dovresti vedere lo schermo seguente su localhost:7777


Passo 3: Apri Dashboard di Prometheus e Grafana

Puoi aprire il dashboard di Prometheus utilizzando il seguente comando.

Shell

 

istioctl dashboard prometheus
Shell

 

istioctl dashboard grafana

Sia Grafana che Prometheus si apriranno in localhost. 


Passo 4: Effettua Richieste HTTP da Postman

Vedremo come il servizio httpbin consuma CPU o memoria quando c’è un carico di traffico. Creeremo alcune richieste GET e POST al localhost:7777 dall’app Postman.


Una volta che si inviano richieste GET o POST al servizio httpbin più volte, si avrà un utilizzo di risorse che possiamo osservare in Grafana. Ma inizialmente, dobbiamo configurare le metriche per il servizio httpbin in Prometheus e Grafana. 

Passo 5: Configurazione delle Metriche in Prometheus

Si può selezionare una gamma di metriche relative a qualsiasi risorsa Kubernetes come server API, applicazioni, lavoro, envoy, ecc. Sceglieremo le container_memory_working_set_bytes metriche per la nostra configurazione. 

Nell’applicazione Prometheus, selezioneremo lo spazio dei nomi da cui estrarre le metriche utilizzando il seguente termine di ricerca: container_memory_working_set_bytes { namespace= “istio-telemetry”} (istio-telemetry è il nome del nostro spazio dei nomi abilitato per Istio, dove è distribuito il servizio httpbin)

Si noti che, eseguendo questo, otteniamo la memoria per il nostro spazio dei nomi. Poiché vogliamo analizzare l’uso della memoria dei nostri pod, possiamo calcolare la memoria totale consumata sommando l’uso della memoria di ciascun pod raggruppato per pod. La seguente query ci aiuterà a ottenere il risultato desiderato: sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)


Nota: Prometheus offre molta flessibilità per filtrare, tagliare e smistare i dati delle metriche. L’idea centrale di questo articolo era mostrare la capacità di Istio di emettere e inviare metriche a Prometheus per la raccolta

Passo 6: Configurazione dei Grafici delle Metriche Istio in Grafana

Ora, puoi semplicemente prendere la query sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod) in Prometheus e tracciare un grafico con il tempo. Tutto ciò che devi fare è creare una nuova dashboard in Grafana e incollare la query nel browser delle metriche. Grafana traccerà un grafico di serie temporale. Puoi modificare il grafico con nomi, legenda e titoli appropriati per condividere con gli altri stakeholder del team Ops.


Ci sono diversi modi per modificare e personalizzare i dati e rappresentare le metriche di Prometheus in Grafana. Puoi scegliere di effettuare tutte le personalizzazioni in base alle esigenze aziendali. Ho fatto alcuni esperimenti nel video; sentiti libero di darci un’occhiata. 

Conclusione

Istio service mesh è estremamente potente nel fornire un’osservabilità generale attraverso l’infrastruttura. In questo articolo, abbiamo appena offerto un piccolo caso d’uso di scraping e visualizzazione delle metriche utilizzando Istio, Prometheus e Grafana. Puoi eseguire il logging e il tracing dei log e del traffico in tempo reale utilizzando Istio; tratteremo quei temi nei nostri prossimi blog.

Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring