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:
kubectl apply -f prometheus.yaml
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.
istioctl dashboard prometheus
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