Introductie tot Istio Observability met behulp van Prometheus
Istio service mesh abstracteert het netwerk van de toepassingslagen met behulp van sidecar-proxies. U kunt beveiligings- en geavanceerde netwerkbeleidsregels implementeren voor alle communicatie in uw infrastructuur met behulp van Istio.
Maar een ander belangrijk kenmerk van Istio is observability. U kunt Istio gebruiken om de prestaties en het gedrag van al uw microservices in uw infrastructuur te observeren (zie onderstaande afbeelding). Een van de belangrijkste verantwoordelijkheden van Site reliability engineers (SRE’s) in grote organisaties is het controleren van de gouden metrische gegevens van hun applicaties, zoals CPU-gebruik, geheugengebruik, latentie en doorvoer.
In dit artikel zullen we bespreken hoe SRE’s kunnen profiteren van de integratie van drie open source software – Istio, Prometheus en Grafana. Terwijl Istio de meest populaire service software is, is Prometheus de meest wijdverbreide bewakingssoftware en Grafana de meest populaire visualisatietool.
Opmerking: De stappen zijn getest voor Istio 1.17.X
Bekijk de video over de configuratie van Istio, Prometheus en Grafana
Bekijk de video als u de stappen uit de video wilt volgen:
Stap 1: Ga naar Istio Add-Ons en pas Prometheus en Grafana YAML-bestand toe
Ga eerst naar de add-on map in de Istio directory met de opdracht. Aangezien ik 1.17.1 gebruik, is de weg voor mij istio-1.17.1/samples/addons
Je zult merken dat Istio al enkele YAML-bestanden beschikbaar stelt voor het configureren van Grafana, Prometheus, Jaeger, Kiali, enz. Je kunt Prometheus configureren met de volgende opdracht:
kubectl apply -f prometheus.yaml
kubectl apply -f grafana.yaml
Let op, deze add-on YAML’s worden standaard toegepast op de istio-system
naamruimte.

Stap 2: Implementeer nieuwe service en port-forward Istio Ingress Gateway
Om te experimenteren met het werkingsprincipe, gaan we de httpbin
service implementeren in een Istio-enabled naamruimte. We zullen een object van de Istio ingress gateway maken om het verkeer naar de service vanuit het publiek te ontvangen.
We zullen ook de Istio ingress gateway port-forwarden naar een specifieke poort-7777.

Je zou het onderstaande scherm moeten zien op localhost:7777

Stap 3: Open Prometheus en Grafana Dashboard
Je kunt de Prometheus dashboard openen met de volgende opdracht.
istioctl dashboard prometheus
istioctl dashboard grafana
Zowel Grafana als Prometheus zullen openen op localhost.

Stap 4: Maak HTTP-verzoeken vanuit Postman
We zullen zien hoe de httpbin
service CPU of geheugen gebruikt bij een verkeersbelasting. We zullen enkele GET
en POST
verzoeken maken naar localhost:7777
vanuit de Postman app.

Nadat je GET
of POST
verzoeken naar de httpbin
service meerdere keren hebt verstuurd, worden er middelen gebruikt, die we in Grafana kunnen zien. Maar eerst moeten we de metrische gegevens voor de httpbin
service in Prometheus en Grafana configureren.
Stap 5: Metrische gegevens configureren in Prometheus
Je kunt een reeks metrische gegevens kiezen die betrekking hebben op Kubernetes-resources zoals API-server, toepassingen, workloads, envoy, enzovoort. We zullen de container_memory_working_set_bytes
metrische gegevens kiezen voor onze configuratie.
In de Prometheus-toepassing zullen we de naamruimte selecteren om de metrische gegevens te verzamelen met behulp van de volgende zoekterm: container_memory_working_set_bytes { namespace= “istio-telemetry”}
(istio-telemetry
is de naam van onze Istio-enabled naamruimte, waar de httpbin
service is geïmplementeerd)
Let op dat door dit simpelweg uit te voeren, we het geheugen voor onze naamruimte krijgen. Aangezien we de geheugengebruik van onze pods willen analyseren, kunnen we het totale geheugengebruik berekenen door het geheugengebruik van elke pod op te tellen, gegroepeerd per pod. De volgende query zal ons helpen bij het verkrijgen van het gewenste resultaat: sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)

Opmerking: Prometheus biedt veel flexibiliteit om metrische gegevens te filteren, te snijden en te hakken. Het centrale idee van dit artikel was om de mogelijkheid van Istio te laten zien om metrische gegevens uit te zenden en naar Prometheus te sturen voor verzameling
Stap 6: Grafische configuratie van Istio-metrische gegevens in Grafana
Nu kun je gewoon de query sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)
in Prometheus gebruiken en een grafiek met tijd plotten. Het enige wat je hoeft te doen is een nieuwe dashboard aanmaken in Grafana en de query in de metrics browser plakken. Grafana zal een tijdreeksgrafiek plotten. Je kunt de grafiek aanpassen met de juiste namen, legenda’s en titels voor delen met andere stakeholders in het Ops-team.

Er zijn verschillende manieren om de gegevens aan te passen en de Prometheus-metrische gegevens in Grafana weer te geven. Je kunt kiezen om alle aanpassingen te doen op basis van de behoeften van je bedrijf. Ik heb een paar experimenten gedaan in de video; bekijk hem gerust.
Conclusie
Istio service mesh is uiterst krachtig in het bieden van algehele observabiliteit in het gehele infrastructuur. In dit artikel hebben we slechts een klein gebruiksvoorbeeld van metrische gegevens-scrapping en visualisatie met behulp van Istio, Prometheus en Grafana aangeboden. Je kunt logboeken en tracering van logboeken en realtime verkeer uitvoeren met Istio; we zullen die onderwerpen in onze volgende blogs behandelen.
Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring