Einführung in Istio-Beobachtbarkeit mit Prometheus
Istio-Dienstnetz entkoppelt das Netzwerk von den Anwendungsschichten durch Sidecar-Proxys. Sie können Sicherheits- und erweiterte Netzwerkrichtlinien für alle Kommunikation in Ihrer Infrastruktur mit Istio implementieren.
Ein weiteres wichtiges Merkmal von Istio ist die Beobachtbarkeit. Sie können Istio verwenden, um das Verhalten und die Leistung aller Microservices in Ihrer Infrastruktur zu beobachten (siehe Bild unten). Eine der Hauptaufgaben von Site-Verfügbarkeitsingenieuren (SREs) in großen Organisationen ist die Überwachung der goldenen Metriken ihrer Anwendungen, wie z.B. CPU-Auslastung, Speicherauslastung, Latenz und Durchsatz.
In diesem Artikel werden wir diskutieren, wie SREs von der Integration von drei Open-Source-Softwareprodukten – Istio, Prometheus und Grafana – profitieren können. Während Istio das bekannteste Dienstsoftwareprodukt ist, ist Prometheus das am weitesten verbreitete Überwachungssoftwareprodukt und Grafana das bekannteste Visualisierungstool.
Hinweis: Die Schritte wurden für Istio 1.17.X getestet
Schauen Sie sich das Video zur Konfiguration von Istio, Prometheus und Grafana an
Schauen Sie sich das Video an, wenn Sie den Schritten im Video folgen möchten:
Schritt 1: Gehen Sie zu Istio Add-Ons und wenden Sie die Prometheus und Grafana YAML-Datei an
Zunächst navigieren Sie zum Add-On-Ordner im Istio-Verzeichnis mithilfe des Befehls. Da ich 1.17.1 verwende, ist der Pfad für mich istio-1.17.1/samples/addons
Sie werden feststellen, dass Istio bereits einige YAML-Dateien zur Konfiguration von Grafana, Prometheus, Jaeger, Kiali usw. bereitstellt. Sie können Prometheus mit dem folgenden Befehl konfigurieren:
kubectl apply -f prometheus.yaml
kubectl apply -f grafana.yaml
Beachten Sie, dass diese Add-on-YAMLs standardmäßig dem istio-system
Namespace zugewendet werden.

Schritt 2: Bereitstellen eines neuen Dienstes und Port-Forwarding des Istio-Ingress-Gateways
Um das Arbeitsmodell auszuprobieren, stellen wir den httpbin
Dienst in einem Istio-fähigen Namespace bereit. Wir werden ein Objekt des Istio-Ingress-Gateways erstellen, um den Verkehr zum Dienst aus dem öffentlichen Bereich zu empfangen.
Wir werden auch das Istio-Ingress-Gateway an einen bestimmten Port – 7777 – port-forwarden.

Sie sollten den folgenden Bildschirm unter localhost:7777
sehen.

Schritt 3: Öffnen der Prometheus und Grafana-Dashboards
Sie können das Prometheus-Dashboard mit dem folgenden Befehl öffnen.
istioctl dashboard prometheus
istioctl dashboard grafana
Sowohl Grafana als auch Prometheus werden im lokalen Host geöffnet.

Schritt 4: HTTP-Anfragen von Postman aus
Wir werden sehen, wie der httpbin
Dienst CPU oder Speicher verbraucht, wenn der Verkehrslast ausgesetzt ist. Wir werden einige GET
und POST
Anfragen an localhost:7777
vom Postman-App erstellen.

Sobald Sie GET
oder POST
Anfragen an den httpbin
Dienst mehrfach senden, werden Ressourcen verbraucht, die wir in Grafana sehen können. Zunächst müssen wir jedoch die Metriken für den httpbin
Dienst in Prometheus und Grafana konfigurieren.
Schritt 5: Konfiguration von Metriken in Prometheus
Man kann eine Reihe von Metriken zu beliebigen Kubernetes-Ressourcen wie API-Server, Anwendungen, Workloads, Envoy usw. auswählen. Wir werden die container_memory_working_set_bytes
Metriken für unsere Konfiguration auswählen.
In der Prometheus-Anwendung wählen wir den Namespace zur Erfassung der Metriken unter Verwendung des folgenden Suchbegriffs: container_memory_working_set_bytes { namespace= “istio-telemetry”}
(istio-telemetry
ist der Name unseres Istio-fähigen Namespace, in dem der httpbin
Dienst bereitgestellt wird)
Beachten Sie, dass wir durch einfaches Ausführen dieser Abfrage den Speicher für unseren Namespace erhalten. Da wir die Speicherauslastung unserer Pods analysieren möchten, können wir den Gesamtspeicherverbrauch ermitteln, indem wir den Speicherverbrauch jedes Pods gruppiert nach Pod summieren. Die folgende Abfrage hilft uns, das gewünschte Ergebnis zu erhalten: sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)

Hinweis: Prometheus bietet viel Flexibilität, um die Metrikdaten zu filtern, zu schneiden und zu würfeln. Die zentrale Idee dieses Artikels war es, die Fähigkeit von Istio zu zeigen, Metriken für die Sammlung in Prometheus auszusenden
Schritt 6: Konfiguration von Istio-Metrikdiagrammen in Grafana
Nun können Sie ganz einfach die Abfrage sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)
in Prometheus verwenden und einen Zeitverlauf daraus erstellen. Dazu müssen Sie lediglich ein neues Dashboard in Grafana erstellen und die Abfrage in den Metrik-Browser einfügen. Grafana zeichnet automatisch einen Zeitreihen-Graph. Sie können den Graphen mit geeigneten Namen, Legende und Titel für die Zusammenarbeit mit anderen Beteiligten im Ops-Team anpassen.

Es gibt verschiedene Möglichkeiten, die Daten anzupassen und die Prometheus-Metriken in Grafana darzustellen. Sie können alle Anpassungen basierend auf Ihren Unternehmensbedürfnissen vornehmen. Ich habe einige Experimente in dem Video durchgeführt; schauen Sie sich gerne um.
Schlussfolgerung
Istio Service Mesh ist äußerst leistungsstark, um eine umfassende Überwachung über das gesamte Infrastruktur hinweg zu gewährleisten. In diesem Artikel haben wir nur einen kleinen Anwendungsfall für das Scrappen und Visualisieren von Metriken mit Istio, Prometheus und Grafana vorgestellt. Sie können Protokollierung und Ablaufverfolgung von Protokollen und Echtzeitverkehr mit Istio durchführen; wir werden diese Themen in unseren späteren Blogs behandeln.
Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring