View a markdown version of this page

Überwachen - Amazon EKS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überwachen

Prometheus, ein abgeschlossenes CNCF-Projekt, ist mit Abstand das beliebteste Überwachungssystem mit nativer Integration in Kubernetes. Prometheus sammelt Metriken rund um Container, Pods, Knoten und Cluster. Darüber hinaus nutzt Prometheus, mit AlertsManager dem Sie Warnmeldungen programmieren können, um Sie zu warnen, wenn etwas in Ihrem Cluster schief läuft. Prometheus speichert die Metrikdaten als Zeitreihendaten, die durch Metriknamen und Paare identifiziert werden. key/value Prometheus bietet eine Möglichkeit, Abfragen mithilfe einer Sprache namens PromQL durchzuführen, was die Abkürzung für Prometheus Query Language ist.

Die allgemeine Architektur der Erfassung von Prometheus-Metriken ist unten dargestellt:

Sammlung von Prometheus-Metriken

Prometheus verwendet einen Pull-Mechanismus und entfernt mithilfe von Exportern Metriken von Zielen und mithilfe der Kube-State-Metriken aus der Kubernetes-API. https://github.com/kubernetes/kube-state-metrics Das bedeutet, dass Anwendungen und Dienste einen HTTP (S) -Endpunkt bereitstellen müssen, der Metriken im Prometheus-Format enthält. Prometheus ruft dann gemäß seiner Konfiguration regelmäßig Metriken von diesen HTTP (S) -Endpunkten ab.

Mit einem Exporter können Sie Metriken von Drittanbietern als Metriken im Prometheus-Format verwenden. Ein Prometheus-Exporter wird in der Regel auf jedem Knoten bereitgestellt. Eine vollständige Liste der Exporteure finden Sie unter den Prometheus-Exporteuren. https://prometheus.io/docs/instrumenting/exporters/ Der Node Exporter eignet sich zwar für den Export von Host-Hardware- und Betriebssystemmetriken für Linux-Knoten, funktioniert aber nicht für Windows-Knoten.

Wenn Sie in einem EKS-Cluster mit gemischten Knoten und Windows-Knoten das stabile Prometheus-Helmdiagramm verwenden, werden Sie ausgefallene Pods auf den Windows-Knoten sehen, da dieser Exporter nicht für Windows vorgesehen ist. Sie müssen den Windows-Worker-Pool separat behandeln und stattdessen den Windows-Exporter in der https://github.com/prometheus-community/windows_exporter Windows-Worker-Knotengruppe installieren.

Um die Prometheus-Überwachung für Windows-Knoten einzurichten, müssen Sie den WMI-Exporter auf den Windows-Server selbst herunterladen und installieren und dann die Ziele in der Scrape-Konfiguration der Prometheus-Konfigurationsdatei einrichten. Auf der Versionsseite finden Sie alle verfügbaren.msi-Installationsprogramme mit den entsprechenden Funktionen und Bugfixes. Das Installationsprogramm richtet den windows_exporter als Windows-Dienst ein und erstellt eine Ausnahme in der Windows-Firewall. Wenn das Installationsprogramm ohne Parameter ausgeführt wird, wird das Exportprogramm mit den Standardeinstellungen für aktivierte Collectors, Ports usw. ausgeführt.

Sie können sich den Abschnitt mit den bewährten Methoden RuntimeClass zur Planung dieses Handbuchs ansehen, in dem empfohlen wird, den Node Exporter nur auf Linux-Knoten zu verwenden taints/tolerations oder selektiv bereitzustellen, während der Windows-Exporter auf Windows-Knoten installiert wird, während Sie den Knoten booten oder ein Konfigurationsverwaltungstool Ihrer Wahl verwenden (z. B. Chef, Ansible, SSM usw.).

Beachten Sie, dass im Gegensatz zu den Linux-Knoten, auf denen der Node Exporter als Daemonset installiert ist, auf Windows-Knoten der WMI-Exporter auf dem Host selbst installiert ist. Der Exporter exportiert Messwerte wie die CPU-Auslastung, den Arbeitsspeicher und die I/O Festplattennutzung und kann auch zur Überwachung von IIS-Websites und -Anwendungen, Netzwerkschnittstellen und -diensten verwendet werden.

Der windows_exporter macht standardmäßig alle Metriken von aktivierten Collectors verfügbar. Dies ist die empfohlene Methode zum Sammeln von Metriken, um Fehler zu vermeiden. Für den fortgeschrittenen Gebrauch kann dem windows_exporter jedoch eine optionale Liste von Kollektoren zum Filtern von Metriken übergeben werden. Mit dem Parameter collect [] in der Prometheus-Konfiguration können Sie das tun.

Zu den Standardinstallationsschritten für Windows gehört das Herunterladen und Starten des Exportprogramms als Dienst während des Bootstrapping-Vorgangs mit Argumenten wie den Collectors, die Sie filtern möchten.

> Powershell Invoke-WebRequest https://github.com/prometheus-community/windows_exporter/releases/download/v0.13.0/windows_exporter-0.13.0-amd64.msi -OutFile <DOWNLOADPATH> > msiexec /i <DOWNLOADPATH> ENABLED_COLLECTORS="cpu,cs,logical_disk,net,os,system,container,memory"

Standardmäßig können die Metriken am /metrics-Endpunkt auf Port 9182 gescrapt werden. An diesem Punkt kann Prometheus die Metriken verarbeiten, indem es der Prometheus-Konfiguration die folgende scrape_config hinzufügt

scrape_configs: - job_name: "prometheus" static_configs: - targets: ['localhost:9090'] ... - job_name: "wmi_exporter" scrape_interval: 10s static_configs: - targets: ['<windows-node1-ip>:9182', '<windows-node2-ip>:9182', ...]

Die Prometheus-Konfiguration wird neu geladen mit

> ps aux | grep prometheus > kill HUP <PID>

Eine bessere und empfohlene Methode zum Hinzufügen von Zielen ist die Verwendung einer benutzerdefinierten Ressourcendefinition namens ServiceMonitor, die Teil des Prometheus-Operators] ist, der die Definition für ein ServiceMonitor Objekt bereitstellt, und einen Controller, der die ServiceMonitors We Define-Konfiguration aktiviert und automatisch die erforderliche Prometheus-Konfiguration erstellt.

Die ServiceMonitor, die deklarativ festlegt, wie Gruppen von Kubernetes-Diensten überwacht werden sollen, wird verwendet, um eine Anwendung zu definieren, mit der Sie Metriken aus Kubernetes entfernen möchten. Darin spezifizieren ServiceMonitor wir die Kubernetes-Labels, anhand derer der Betreiber den Kubernetes-Dienst identifizieren kann, der wiederum die Pods identifiziert, die wir überwachen möchten.

Um dies zu nutzen ServiceMonitor, erstellen Sie ein Endpoint-Objekt, das auf bestimmte Windows-Ziele verweist, einen Headless-Service und einen ServiceMontor für die Windows-Knoten.

apiVersion: v1 kind: Endpoints metadata: labels: k8s-app: wmiexporter name: wmiexporter namespace: kube-system subsets: - addresses: - ip: NODE-ONE-IP targetRef: kind: Node name: NODE-ONE-NAME - ip: NODE-TWO-IP targetRef: kind: Node name: NODE-TWO-NAME - ip: NODE-THREE-IP targetRef: kind: Node name: NODE-THREE-NAME ports: - name: http-metrics port: 9182 protocol: TCP --- apiVersion: v1 kind: Service ##Headless Service metadata: labels: k8s-app: wmiexporter name: wmiexporter namespace: kube-system spec: clusterIP: None ports: - name: http-metrics port: 9182 protocol: TCP targetPort: 9182 sessionAffinity: None type: ClusterIP --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor ##Custom ServiceMonitor Object metadata: labels: k8s-app: wmiexporter name: wmiexporter namespace: monitoring spec: endpoints: - interval: 30s port: http-metrics jobLabel: k8s-app namespaceSelector: matchNames: - kube-system selector: matchLabels: k8s-app: wmiexporter

Weitere Informationen zum Betreiber und zur Verwendung von finden Sie in der ServiceMonitor offiziellen https://github.com/prometheus-operator/kube-prometheus Betreiberdokumentation. Beachten Sie, dass Prometheus die dynamische Zielerkennung mit vielen Service-Discovery-Optionen unterstützt.