In diesem Thema wird die Vorgehensweise zur Bereitstellung und Verwaltung der TKG-Erweiterung v1.3.1 für Grafana beschrieben. Mit Grafana können Sie Metriken unabhängig davon, wo sie gespeichert sind, abfragen, visualisieren, erkunden und entsprechende Warnungen ausgeben. Grafana bietet Tools zum Erstellen von Diagrammen und Visualisierungen aus Anwendungsdaten. Stellen Sie die TKG-Erweiterung für Grafana zum Erstellen und Anzeigen von Metriken für Tanzu Kubernetes-Cluster bereit.

Voraussetzungen für die Grafana-Erweiterung

Beachten Sie die folgenden Voraussetzungen für die Bereitstellung der Erweiterung.

Zusätzlich Anforderungen für die Grafana-Erweiterung

Bei der TKG-Erweiterung v1.3.1 für die Grafana-Überwachung gelten zusätzliche Anforderungen vor und nach der Installation.

  • Die Grafana-Überwachungserweiterung erfordert eine persistente Standardspeicherklasse. Sie können entweder einen Cluster mit einer persistenten Standardspeicherklasse erstellen oder einen Cluster in der Grafana-Konfigurationsdatei angeben, wenn Sie die Erweiterung bereitstellen. Weitere Informationen finden Sie unter Überprüfen der Anforderungen an persistenten Speicher für die TKG-Erweiterungen.
  • Nach der Bereitstellung der Grafana-Erweiterung greifen Sie über HTTP/S auf das Grafana-Dashboard zu, indem Sie die IP-Adresse verwenden, die von einem der folgenden Kubernetes-Diensttypen angezeigt wird: ClusterIP (Standard), NodePort oder LoadBalancer. Stellen Sie für den Zugriff auf das Grafana-Dashboard von außerhalb des Clusters zuerst die Contour-Erweiterung und dann Grafana bereit. Informationen zum Bereitstellen der Contour-Erweiterung finden Sie unter Bereitstellen und Verwalten der TKG-Erweiterung für die Grafana-Überwachung.

    Grafana unterstützt die folgenden Kubernetes-Diensttypen:

    Diensttyp Beschreibung Barrierefreiheit
    ClusterIP Zeigt den Dienst in einer clusterinternen IP an. Auf den Dienst kann nur innerhalb des Clusters zugegriffen werden.
    NodePort Zeigt den Dienst in der IP-Adresse jedes Knotens an einem statischen Port an. Auf den Dienst kann von außerhalb des Clusters zugegriffen werden.
    LoadBalancer Zeigt den Dienst extern mithilfe eines Lastausgleichsdiensts an. Auf den Dienst kann von außerhalb des Clusters zugegriffen werden.
    ClusterIP fungiert als Standardeinstellung, der Zugriff ist jedoch nur innerhalb des Clusters möglich. Wenn Sie ein NSX-T-Netzwerk für den Supervisor-Cluster verwenden, erstellen Sie einen Contour Envoy-Dienst vom Typ „LoadBalancer“. Wenn Sie ein vSphere vDS-Netzwerk für den Supervisor-Cluster verwenden, erstellen Sie je nach Umgebung und Anforderungen einen Contour Envoy-Dienst vom Typ „LoadBalancer“ oder „NodePort“.

Bereitstellen der Grafana-Erweiterung zur Visualisierung und Analyse

Die TKG-Erweiterung für Grafana stellt einen einzelnen Container bereit. Weitere Informationen finden Sie unter https://grafana.com/.
Container Ressourcentyp Replikate Beschreibung
Grafana Bereitstellung 2 Datenvisualisierung
Die Erweiterung ist so konfiguriert, dass die Container aus der öffentlichen VMware-Registrierung unter https://projects.registry.vmware.com/ abgerufen werden. Wenn Sie eine private Registrierung verwenden, müssen Sie die Endpoint-URL in den Datenwerten und Erweiterungskonfigurationen entsprechend ändern. Weitere Informationen finden Sie unter Konfigurieren der Grafana-Erweiterung.
  1. Überprüfen Sie, ob die Voraussetzungen für die Grafana-Erweiterung erfüllt sind. Weitere Informationen finden Sie unter Voraussetzungen für die Grafana-Erweiterung.
  2. Ändern Sie das Verzeichnis in die Grafana-Erweiterung.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  3. Erstellen Sie den tanzu-system-monitoring-Namespace und das Grafana-Dienstkonto und die Rollenobjekte.
    kubectl apply -f namespace-role.yaml
  4. Erstellen Sie eine Grafana-Datei mit Datenwerten.
    Die Beispieldatei mit Datenwerten enthält die erforderliche Mindestkonfiguration.
    cp grafana-data-values.yaml.example grafana-data-values.yaml
  5. Konfigurieren Sie die Grafana-Erweiterung, indem Sie grafana-data-values.yaml aktualisieren.

    Passen Sie die Konfiguration nach Bedarf an. Weitere Informationen finden Sie unter Konfigurieren der Grafana-Erweiterung.

    admin_password muss base64-verschlüsselt sein. Die Bereitstellung der Erweiterung wird aber nicht blockiert, wenn keine base64-Verschlüsselung vorliegt. Im folgenden Beispiel ist das Kennwort „admin“ base64-verschlüsselt. Entschlüsseln Sie ihr eigenes Grafana-Kennwort hier: https://www.base64encode.org/.

    Wenn der Cluster nicht mit einer Standardspeicherklasse bereitgestellt wird, können Sie sie in der Datenwertedatei angeben. Stellen Sie außerdem sicher, dass der Namespace ausreichend Speicherplatz für die Anforderungen von dauerhaften Datenträgern aufweist.
    monitoring:
      grafana:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
        pvc:
          storage_class: vwt-storage-policy
          storage: "8Gi"  
        secret:
          admin_password: "YWRtaW4="
      grafana_init_container:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
      grafana_sc_dashboard:
        image:
          repository: "projects.registry.vmware.com/tkg/grafana"
    
    Wenn Sie Contour mit einem Envoy-Dienst vom Typ „LoadBalancer“ oder „NodePort“ bereitgestellt haben, geben Sie dies in der Konfigurationsdatei an, wie abgebildet. Weitere Informationen hierzu finden Sie unter Konfigurieren der Grafana-Erweiterung.
    monitoring:
      grafana:
        service:
          type: LoadBalancer OR NodePort
    

    Standardmäßig erstellt die Grafana-Erweiterung den vollqualifizierten Domänennamen (FQDN) grafana.system.tanzu für den Zugriff auf das Grafana-Dashboard. Sie können diesen FQDN anpassen, indem Sie den gewünschten Hostnamen in der Konfigurationsdatei unter monitoring.grafana.ingress.virtual_host_fqdn angeben. Weitere Informationen hierzu finden Sie unter Konfigurieren der Grafana-Erweiterung.

  6. Erstellen Sie den geheimen Grafana-Schlüssel mit der Datei grafana-data-values.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring

    Der geheime Schlüssel grafana-data-values wird im Namespace tanzu-system-monitoring erstellt. Überprüfen Sie dies mit kubectl get secrets -n tanzu-system-monitoring.

  7. Stellen Sie die Grafana-Erweiterung bereit.
    kubectl apply -f grafana-extension.yaml

    Bei Erfolg wird die Grafana-App erstellt: app.kappctrl.k14s.io/grafana created.

  8. Überprüfen Sie den Status der Grafana-App.
    kubectl get app grafana -n tanzu-system-monitoring
    Der Status sollte sich von Reconciling in Reconcile succeeded ändern. Wenn der Status Reconcile failed lautet, finden Sie weitere Informationen unter „Fehlerbehebung“.
  9. Zeigen Sie detaillierte Statusinformationen über die Grafana-App an.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml
  10. Überprüfen Sie die Grafana-Bereitstellung.
    kubectl get deployments -n tanzu-system-monitoring

Zugriff über einen Contour Envoy-Dienst vom Typ „LoadBalancer“ auf das Grafana-Dashboard

Wenn der erforderliche Contour Envoy-Dienst vom Typ „LoadBalancer“ bereitgestellt wird und Sie dies in der Grafana-Konfigurationsdatei angegeben haben, rufen Sie die externe IP-Adresse des Lastausgleichsdiensts ab und erstellen Sie DNS-Datensätze für den Grafana-FQDN.
  1. Rufen Sie die External-IP-Adresse für den Envoy-Dienst vom Typ LoadBalancer ab.
    kubectl get service envoy -n tanzu-system-ingress
    Die External-IP-Adresse sollte angezeigt werden, z. B.:
    NAME    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    envoy   LoadBalancer   10.99.25.220   10.195.141.17   80:30437/TCP,443:30589/TCP   3h27m
    Alternativ können Sie die External-IP-Adresse mit dem folgenden Befehl abrufen.
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. Zur Überprüfung der Installation der Grafana-Erweiterung aktualisieren Sie Ihre lokale /etc/hosts-Datei mit dem Grafana-FQDN, der der External-IP-Adresse des Lastausgleichsdiensts zugeordnet ist. Beispiel:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana Extension with Envoy Load Balancer
    10.195.141.17 grafana.system.tanzu
    
  3. Greifen Sie auf das Grafana-Dashboard zu und navigieren Sie zu https://grafana.system.tanzu.

    Da auf der Site selbstsignierte Zertifikate verwendet werden, müssen Sie möglicherweise durch eine browserspezifische Sicherheitswarnung navigieren, bevor Sie auf das Dashboard zugreifen können.

  4. Erstellen Sie für den Produktionszugriff zwei CNAME-Datensätze auf einem DNS-Server, der dem Grafana-Dashboard die Lastausgleichsdienstadresse External-IP des Envoy-Diensts zuordnet.

Zugriff über einen Contour Envoy-Dienst vom Typ „NodePort“ auf das Grafana-Dashboard

Wenn der erforderliche Contour Envoy-Dienst vom Typ „NodePort“ bereitgestellt wird und Sie dies in der Grafana-Konfigurationsdatei angegeben haben, rufen Sie die IP-Adresse der VM eines Worker-Knotens ab und erstellen Sie DNS-Datensätze für den Grafana-FQDN.
  1. Wechseln Sie den Kontext zum vSphere-Namespace, in dem der Cluster bereitgestellt wird.
    kubectl config use-context VSPHERE-NAMESPACE
  2. Listet die Knoten im Cluster auf.
    kubectl get virtualmachines
    Sie sollten die Clusterknoten sehen, z. B.:
    NAME                                            POWERSTATE   AGE
    tkgs-cluster-X-control-plane-6dgln              poweredOn    6h7m
    tkgs-cluster-X-control-plane-j6hq6              poweredOn    6h10m
    tkgs-cluster-X-control-plane-xc25f              poweredOn    6h14m
    tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm   poweredOn    6h12m
    tkgs-cluster-X-workers-9twdr-59bc54dc97-pjptr   poweredOn    6h12m
    tkgs-cluster-X-workers-9twdr-59bc54dc97-t45mn   poweredOn    6h12m
  3. Wählen Sie einen der Worker-Knoten aus und beschreiben Sie ihn mit dem folgenden Befehl.
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. Suchen Sie die IP-Adresse der virtuellen Maschine, z. B. Vm Ip: 10.115.22.43.
  5. Zur Überprüfung der Installation der Grafana-Erweiterung aktualisieren Sie Ihre lokale /etc/hosts-Datei mit dem Grafana-FQDN, der der IP-Adresse des Worker-Knotens zugeordnet ist. Beispiel:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKGS Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. Greifen Sie auf das Grafana-Dashboard zu und navigieren Sie zu https://grafana.system.tanzu.

    Da auf der Site selbstsignierte Zertifikate verwendet werden, müssen Sie möglicherweise durch eine browserspezifische Sicherheitswarnung navigieren, bevor Sie auf das Dashboard zugreifen können.

Fehlerbehebung bei der Grafana-Bereitstellung

Wenn die Bereitstellung oder der Abgleich fehlschlägt, führen Sie kubectl get pods -A aus, um den Pod-Status anzuzeigen. Die contour- und envoy-Pods sollten den Status Running aufweisen. Wenn der Pod-Status ImagePullBackOff oder ImageCrashLoopBackOff lautet, konnte das Container-Image nicht abgerufen werden. Überprüfen Sie die Registrierungs-URL in den Datenwerten und den YAML-Dateien der Erweiterung und achten Sie darauf, dass sie korrekt sind.

Überprüfen Sie die Containerprotokolle, wobei name-XXXX der eindeutige Pod-Name ist, wenn Sie kubectl get pods -A ausführen:
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring

Aktualisieren der Grafana-Erweiterung

Aktualisieren Sie die Grafana-Erweiterung, die in einem Tanzu Kubernetes-Cluster bereitgestellt wird.

  1. Rufen Sie aktuelle Grafana-Datenwerte vom geheimen Schlüssel grafana-data-values ab.
    kubectl get secret grafana-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > grafana-data-values.yaml
    
  2. Aktualisieren Sie die Grafana-Datenwerte in grafana-data-values.yaml. Weitere Informationen finden Sie unter Konfigurieren der Grafana-Erweiterung.
  3. Aktualisieren Sie den geheimen Schlüssel mit den Grafana-Datenwerten.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring -o yaml --dry-run | kubectl replace -f-
    
    Die Grafana-Erweiterung wird mit den aktualisierten Datenwerten abgeglichen.
    Hinweis: Standardmäßig synchronisiert kapp-controller die Apps alle 5 Minuten. Das Update sollte in 5 Minuten oder weniger wirksam werden. Wenn das Update sofort wirksam werden soll, ändern Sie syncPeriod in grafana-extension.yaml in einen niedrigeren Wert und wenden Sie die Grafana-Erweiterung mithilfe der kubectl apply -f grafana-extension.yaml an.
  4. Überprüfen Sie den Zustand der Erweiterung.
    kubectl get app grafana -n tanzu-system-monitoring

    Der Status sollte sich in Reconcile Succeeded ändern, sobald Grafana aktualisiert wurde.

  5. Zeigen Sie den detaillierten Zustand an und beheben Sie nach Bedarf Fehler.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml

Löschen der Grafana-Erweiterung

Löschen Sie die Grafana-Erweiterung aus einem Tanzu Kubernetes-Cluster.
Hinweis: Führen Sie die Schritte der Reihe nach aus. Löschen Sie nicht den Namespace, das Dienstkonto und die Rollenobjekte, bevor die Grafana-App vollständig gelöscht wurde. Dies kann zu Systemfehlern führen.
Hinweis: Die Prometheus- und Grafana-Erweiterungen werden im selben Namespace bereitgestellt: tanzu-system-monitoring. Wenn Sie beide Erweiterungen auf demselben Cluster bereitgestellt haben, löschen Sie jede Erweiterung, bevor Sie den Namespace löschen.
  1. Ändern Sie das Verzeichnis in die Grafana-Erweiterung.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  2. Löschen Sie die Grafana-App.
    kubectl delete app grafana -n tanzu-system-monitoring

    Erwartetes Ergebnis: app.kappctrl.k14s.io "grafana" deleted.

  3. Stellen Sie sicher, dass die Grafana-App gelöscht wurde.
    kubectl get app grafana -n tanzu-system-monintoring

    Erwartetes Ergebnis: apps.kappctrl.k14s.io "grafana" not found.

  4. Löschen Sie den tanzu-system-monitoring-Namespace und das Grafana-Dienstkonto und die Rollenobjekte.
    Warnung: Führen Sie diesen Schritt nicht aus, wenn Prometheus bereitgestellt wird.
    kubectl delete -f namespace-role.yaml
  5. Wenn Sie Grafana erneut bereitstellen möchten, entfernen Sie die grafana-data-values des geheimen Schlüssels.
    kubectl delete secret grafana-data-values -n tanzu-system-monitoring

    Erwartetes Ergebnis: secret "grafana-data-values" deleted.

Upgrade der Grafana-Erweiterung

Wenn Sie eine vorhandene Grafana-Erweiterung bereitgestellt haben, können Sie sie aktualisieren, um die neueste Version zu verwenden.
  1. Exportieren Sie die Grafana-Configmap und speichern Sie sie als Sicherung.
    kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
  2. Löschen Sie die vorhandene Grafana-Erweiterung. Weitere Informationen hierzu finden Sie unter Löschen der Grafana-Erweiterung.
  3. Stellen Sie die Grafana-Erweiterung bereit. Weitere Informationen hierzu finden Sie unter Bereitstellen der Grafana-Erweiterung zur Visualisierung und Analyse.

Konfigurieren der Grafana-Erweiterung

Die Grafana-Konfiguration ist in /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml festgelegt.
Tabelle 1. Grafana-Konfigurationsparameter
Parameter Beschreibung Typ Standard
monitoring.namespace Namespace, in dem Prometheus bereitgestellt wird string tanzu-system-monitoring
monitoring.create_namespace Das Flag gibt an, ob der durch monitoring.namespace angegebene Namespace erstellt werden soll. Boolean false
monitoring.grafana.cluster_role.apiGroups Für die Grafana-Clusterrolle definierte API-Gruppe Liste [""]
monitoring.grafana.cluster_role.resources Für die Grafana-Clusterrolle definierte Ressourcen Liste ["configmaps", "secrets"]
monitoring.grafana.cluster_role.verbs Für die Clusterrolle definierte Zugriffsberechtigung Liste ["get", "watch", "list"]
monitoring.grafana.config.grafana_ini Details zur Grafana-Konfigurationsdatei Konfigurationsdatei grafana.ini

In dieser Datei wird die grafana_net-URL für die Integration in Grafana verwendet, z. B. zum Importieren des Dashboards direkt von Grafana.com.

monitoring.grafana.config.datasource.type Grafana-Datenquellentyp string Prometheus
monitoring.grafana.config.datasource.access Zugriffsmodus: Proxy oder direkt (Server oder Browser auf der Benutzeroberfläche) string Proxy
monitoring.grafana.config.datasource.isDefault Als Standard-Grafana-Datenquelle markieren Boolean true
monitoring.grafana.config.provider_yaml Konfigurationsdatei zum Definieren des Grafana-Dashboardanbieters yaml-Datei provider.yaml
monitoring.grafana.service.type Diensttyp, um Grafana verfügbar zu machen. Unterstützte Werte: ClusterIP, NodePort, LoadBalancer string vSphere: NodePort, aws/azure: LoadBalancer
monitoring.grafana.pvc.storage_class Definieren Sie den Zugriffsmodus für die Beanspruchung eines dauerhaften Volumes. Unterstützte Werte: ReadWriteOnce, ReadOnlyMany, ReadWriteMany string ReadWriteOnce
monitoring.grafana.cab.storage Definition der Speichergröße für die Beanspruchung eines persistenten Volumes string 2Gi
monitoring.grafana.deployment.replicas Anzahl der Grafana-Replikate integer 1
monitoring.grafana.image.repository Speicherort des Repositorys mit dem Grafana-Image. Als Standardwert wird die öffentliche VMware-Registrierung verwendet. Ändern Sie diesen Wert, wenn Sie ein privates Repository verwenden (z. B. Air-Gap-Umgebung). string projects.registry.vmware.com/tkg/grafana
monitoring.grafana.image.name Name des Grafana-Images string Grafana
monitoring.grafana.image.tag Grafana-Image-Tag. Dieser Wert muss möglicherweise aktualisiert werden, wenn Sie ein Upgrade der Version durchführen. string v7.3.5_vmware.1
monitoring.grafana.image.pullPolicy Pull-Richtlinie für das Grafana-Image string IfNotPresent
monitoring.grafana.secret.type Für das Grafana-Dashboard definierter geheimer Schlüsseltyp string Undurchsichtig
monitoring.grafana.secret.admin_user Benutzername für den Zugriff auf das Grafana-Dashboard string YWRtaW4=

Der Wert ist Base64-codiert; zum Entschlüsseln: echo "xxxxxx" | base64 --decode

monitoring.grafana.secret.admin_password Kennwort für den Zugriff auf das Grafana-Dashboard string null
monitoring.grafana.secret.ldap_toml Bei Verwendung von ldap auth, LDAP-Konfigurationsdateipfad string ""
monitoring.grafana_init_container.image.repository Repository mit Grafana-Init-Container-Image. Als Standardwert wird die öffentliche VMware-Registrierung verwendet. Ändern Sie diesen Wert, wenn Sie ein privates Repository verwenden (z. B. Air-Gap-Umgebung). string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_init_container.image.name Name des Grafana-Init-Container-Images string k8s-sidecar
monitoring.grafana_init_container.image.tag Tag des Grafana-Init-Container-Images. Dieser Wert muss möglicherweise aktualisiert werden, wenn Sie ein Upgrade der Version durchführen. string 0.1.99
monitoring.grafana_init_container.image.pullPolicy Pull-Richtlinie für das Grafana-Init-Container-Image string IfNotPresent
monitoring.grafana_sc_dashboard.image.repository Repository mit dem Grafana-Dashboard-Image. Als Standardwert wird die öffentliche VMware-Registrierung verwendet. Ändern Sie diesen Wert, wenn Sie ein privates Repository verwenden (z. B. Air-Gap-Umgebung). string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_sc_dashboard.image.name Name des Grafana-Dashboard-Images string k8s-sidecar
monitoring.grafana_sc_dashboard.image.tag Tag des Grafana-Dashboard-Images. Dieser Wert muss möglicherweise aktualisiert werden, wenn Sie ein Upgrade der Version durchführen. string 0.1.99
monitoring.grafana_sc_dashboard.image.pullPolicy Pull-Richtlinie für das Grafana-Dashboard-Image string IfNotPresent
monitoring.grafana.ingress.enabled Ingress für Grafana aktivieren/deaktivieren Boolean true
monitoring.grafana.ingress.virtual_host_fqdn Hostname für den Zugriff auf Grafana string grafana.system.tanzu
monitoring.grafana.ingress.prefix Pfadpräfix für Grafana string /
monitoring.grafana.ingress.tlsCertificate.tls.crt Optionales Zertifikat für Ingress, wenn Sie Ihr eigenes TLS-Zertifikat verwenden möchten. Standardmäßig wird ein selbstsigniertes Zertifikat generiert string Generiertes Zertifikat
monitoring.grafana.ingress.tlsCertificate.tls.key Optionaler privater Zertifikatsschlüssel für Ingress, wenn Sie Ihr eigenes TLS-Zertifikat verwenden möchten. string Generierter Zertifikatsschlüssel