So konfigurieren Sie Istio, Prometheus und Grafana für die Überwachung

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:

Shell

 

kubectl apply -f prometheus.yaml
Shell

 

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.

Shell

 

istioctl dashboard prometheus
Shell

 

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