Monitoring von Trident
Trident bietet eine Reihe von Prometheus Kennzahlen-Endpunkten zur Überwachung der Trident-Performance.
Überblick
Mit den von Trident bereitgestellten Metriken können Sie Folgendes tun:
-
Überwachen Sie den Zustand und die Konfiguration von Trident. Sie können prüfen, wie erfolgreich Vorgänge sind und ob sie wie erwartet mit den Back-Ends kommunizieren können.
-
Untersuchen Sie die Back-End-Nutzungsinformationen und erfahren Sie, wie viele Volumes auf einem Back-End bereitgestellt werden, sowie den belegten Speicherplatz usw.
-
Erstellt eine Zuordnung der Anzahl von Volumes, die über verfügbare Back-Ends bereitgestellt werden.
-
Verfolgen Sie die Leistung. Hier sehen Sie, wie lange Trident benötigt, um mit Back-Ends zu kommunizieren und Vorgänge auszuführen.
|
|
Standardmäßig werden die Metriken von Trident auf dem Zielport angezeigt. 8001 am /metrics Endpunkt. Diese Metriken sind standardmäßig aktiviert, wenn Trident installiert ist. Sie können die Konfiguration so einstellen, dass Trident -Metriken über HTTPS auf Port 100 abgerufen werden. 8444 sowie.
|
-
Ein Kubernetes-Cluster mit installiertem Trident
-
Eine Prometheus Instanz. Dies kann ein sein "Implementierung von Container-Prometheus" Oder Sie können Prometheus als ein ausführen "Native Applikation".
Schritt 1: Definieren Sie ein Prometheus-Ziel
Sie sollten ein Prometheus-Ziel definieren, um die Metriken zu erfassen und Informationen über die von Trident verwalteten Backends, die von ihm erstellten Volumes usw. zu erhalten. Sehen"Prometheus Operator-Dokumentation" .
Schritt: Erstellen Sie einen Prometheus ServiceMonitor
Um die Trident Kennzahlen zu verwenden, sollten Sie ein Prometheus ServiceMonitor erstellen, das überwacht trident-csi Service und wartet auf den metrics Port: Ein Beispiel für ServiceMonitor sieht so aus:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: trident-sm
namespace: monitoring
labels:
release: prom-operator
spec:
jobLabel: trident
selector:
matchLabels:
app: controller.csi.trident.netapp.io
namespaceSelector:
matchNames:
- trident
endpoints:
- port: metrics
interval: 15s
Diese ServiceMonitor-Definition ruft Metriken ab, die vom ServiceMonitor zurückgegeben werden. trident-csi Service und sucht insbesondere nach dem metrics Endpunkt des Dienstes. Daher ist Prometheus nun so konfiguriert, dass es die Metriken von Trident versteht.
Zusätzlich zu den direkt aus Trident verfügbaren Kennzahlen legt Kubelet viele kubelet_volume_* Metriken über seinen eigenen Endpunkt für Kennzahlen dar. Kubelet kann Informationen über verbundene Volumes bereitstellen und Pods und andere interne Vorgänge, die er übernimmt. Siehe "Hier".
Trident -Metriken über HTTPS abrufen
Um Trident -Metriken über HTTPS (Port 8444) zu empfangen, müssen Sie die ServiceMonitor-Definition so ändern, dass sie die TLS-Konfiguration enthält. Sie müssen außerdem die folgenden Dateien kopieren: trident-csi Geheimnis von trident Namespace zum Namespace, in dem Prometheus ausgeführt wird. Dies können Sie mit folgendem Befehl tun:
kubectl get secret trident-csi -n trident -o yaml | sed 's/namespace: trident/namespace: monitoring/' | kubectl apply -f -
Ein Beispiel für einen ServiceMonitor zur Erfassung von HTTPS-Metriken sieht folgendermaßen aus:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: trident-sm
namespace: monitoring
labels:
release: prom-operator
spec:
jobLabel: trident
selector:
matchLabels:
app: controller.csi.trident.netapp.io
namespaceSelector:
matchNames:
- trident
endpoints:
- interval: 15s
path: /metrics
port: https-metrics
scheme: https
tlsConfig:
ca:
secret:
key: caCert
name: trident-csi
cert:
secret:
key: clientCert
name: trident-csi
keySecret:
key: clientKey
name: trident-csi
serverName: trident-csi
Trident unterstützt HTTPS-Metriken in allen Installationsmethoden: tridentctl, Helm-Chart und Operator:
-
Wenn Sie die
tridentctl installBefehl, den Sie übergeben können--https-metricsFlag zum Aktivieren von HTTPS-Metriken. -
Wenn Sie das Helm-Chart verwenden, können Sie Folgendes einstellen:
httpsMetricsParameter zur Aktivierung von HTTPS-Metriken. -
Wenn Sie YAML-Dateien verwenden, können Sie die folgenden hinzufügen:
--https_metricsFlagge an dietrident-mainContainer imtrident-deployment.yamlDatei.
Schritt 3: Abfrage der Trident-Kennzahlen mit PromQL
PromQL ist gut geeignet, um Ausdrücke zu erstellen, die Zeitreihen- oder tabellarische Daten zurückgeben.
Im Folgenden finden Sie einige PromQL-Abfragen, die Sie verwenden können:
Abrufen des Integritätsinformationen zu Trident
-
Prozentsatz der HTTP 2XX-Antworten von Trident
(sum (trident_rest_ops_seconds_total_count{status_code=~"2.."} OR on() vector(0)) / sum (trident_rest_ops_seconds_total_count)) * 100
-
Prozentsatz der REST-Antworten von Trident über Statuscode
(sum (trident_rest_ops_seconds_total_count) by (status_code) / scalar (sum (trident_rest_ops_seconds_total_count))) * 100
-
Durchschnittliche Dauer in ms der von Trident durchgeführten Operationen
sum by (operation) (trident_operation_duration_milliseconds_sum{success="true"}) / sum by (operation) (trident_operation_duration_milliseconds_count{success="true"})
Holen Sie sich Trident-Nutzungsinformationen
-
Mittlere Volumengröße
trident_volume_allocated_bytes/trident_volume_count
-
Gesamter Volume-Speicherplatz, der von jedem Backend bereitgestellt wird
sum (trident_volume_allocated_bytes) by (backend_uuid)
Individuelle Volume-Nutzung
|
|
Dies ist nur aktiviert, wenn auch kubelet-Kennzahlen gesammelt werden. |
-
Prozentsatz des verwendeten Speicherplatzes für jedes Volumen
kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes * 100
Informationen zur Trident AutoSupport Telemetrie
Standardmäßig sendet Trident im täglichen Rhythmus Prometheus Kennzahlen und grundlegende Back-End-Informationen an NetApp.
-
Um zu verhindern, dass Trident Prometheus-Metriken und grundlegende Backend-Informationen an NetApp sendet, übergeben Sie das
--silence-autosupportFlag während der Trident-Installation. -
Trident kann auch Container-Protokolle an NetApp-Support On-Demand senden über
tridentctl send autosupport. Sie müssen Trident auslösen, um die Protokolle hochzuladen. Bevor Sie Protokolle senden, sollten Sie NetApp's akzeptierenhttps://www.netapp.com/company/legal/privacy-policy/["datenschutzrichtlinie"^]. -
Sofern nicht angegeben, ruft Trident die Protokolle der letzten 24 Stunden ab.
-
Sie können den Zeitrahmen für die Protokollaufbewahrung mit dem Flag angeben
--since. Zum Beispiel:tridentctl send autosupport --since=1h. Diese Informationen werden gesammelt und über einen Container gesendettrident-autosupport, der zusammen mit Trident installiert wird. Sie können das Container-Bild unter abrufen "Trident AutoSupport". -
Trident AutoSupport erfasst oder übermittelt keine personenbezogenen Daten oder personenbezogenen Daten. Sie wird mit einem geliefert "EULA" , das sich nicht für das Trident Container-Image selbst eignet. Weitere Informationen zum Engagement von NetApp für Datensicherheit und Vertrauen finden "Hier"Sie hier.
Ein Beispiel für eine Nutzlast, die von Trident gesendet wird, sieht wie folgt aus:
---
items:
- backendUUID: ff3852e1-18a5-4df4-b2d3-f59f829627ed
protocol: file
config:
version: 1
storageDriverName: ontap-nas
debug: false
debugTraceFlags: null
disableDelete: false
serialNumbers:
- nwkvzfanek_SN
limitVolumeSize: ""
state: online
online: true
-
Die AutoSupport Meldungen werden an den AutoSupport Endpunkt von NetApp gesendet. Wenn Sie zum Speichern von Container-Images eine private Registrierung verwenden, können Sie das verwenden
--image-registryFlagge. -
Sie können auch Proxy-URLs konfigurieren, indem Sie die Installation YAML-Dateien erstellen. Dies kann mit erfolgen
tridentctl install --generate-custom-yamlSo erstellen Sie die YAML-Dateien und fügen die hinzu--proxy-urlArgument für dastrident-autosupportContainer intrident-deployment.yaml.
Deaktivieren Sie Trident-Kennzahlen
Um**-Metriken von der Meldung zu deaktivieren, sollten Sie benutzerdefinierte YAML generieren (mit dem --generate-custom-yaml Markieren) und bearbeiten, um die zu entfernen --metrics Flagge wird für das aufgerufen `trident-main`Container: