Erfahren Sie, wie Sie von Telegraf erfasste Supervisor-Metriken auf einer benutzerdefinierten Beobachtbarkeitsplattform streamen. Telegraf ist standardmäßig auf dem Supervisor aktiviert und erfasst Metriken im Prometheus-Format aus Supervisor-Komponenten, z. B. vom Kubernetes-API-Server, VM-Dienst, Tanzu Kubernetes Grid usw. Als vSphere-Administrator können Sie eine Beobachtbarkeitsplattform wie VMware Aria Operations for Applications, Grafana und andere konfigurieren, um die erfassten Supervisor-Metriken anzuzeigen und zu analysieren.

Telegraf ist ein serverbasierter Agent zum Erfassen und Senden von Metriken aus verschiedenen Systemen, Datenbanken und Internet der Dinge. Jede Supervisor-Komponente stellt einen Endpoint zur Verfügung, auf dem Telegraf eine Verbindung herstellt. Telegraf sendet dann die erfassten Metriken an eine Beobachtbarkeitsplattform Ihrer Wahl. Sie können ein beliebiges der von Telegraf unterstützten Ausgabe-Plug-Ins als Beobachtbarkeitsplattform für die Aggregierung und Analyse der Supervisor-Metriken konfigurieren. Informationen zu den unterstützten Ausgabe-Plug-Ins finden Sie in der Telegraf-Dokumentation.

Die folgenden Komponenten stellen Endpunkte zur Verfügung, auf denen Telegraf eine Verbindung herstellt und Metriken erfasst: Kubernetes-API-Server, etcd, kubelet, Kubernetes-Controller-Manager, Kubernetes-Scheduler, Tanzu Kubernetes Grid, VM-Dienst, VM-Imageservice, NSX Container Plug-in (NCP), Container Storage Interface (CSI), Zertifikatsmanager, NSX und verschiedene Hostmetriken wie CPU, Arbeitsspeicher und Speicher.

Anzeigen der Telegraf-Pods und -Konfiguration

Telegraf wird unter dem vmware-system-monitoring-System-Namespace auf dem Supervisor ausgeführt. So zeigen Sie die Telegraf-Pods und ConfigMaps an:

  1. Melden Sie sich bei der Supervisor-Steuerungsebene mit einem vCenter Single Sign-On-Administratorkonto an.
    kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
  2. Verwenden Sie den folgenden Befehl, um die Telegraf-Pods anzuzeigen:
    kubectl -n vmware-system-monitoring get pods
    Die resultierenden Pods lauten wie folgt:
    telegraf-csqsl   
    telegraf-dkwtk  
    telegraf-l4nxk  
  3. Verwenden Sie den folgenden Befehl, um die Telegraf-ConfigMaps anzuzeigen:
    kubectl -n vmware-system-monitoring get cm
    Die resultierenden ConfigMaps lauten wie folgt:
    default-telegraf-config
    kube-rbac-proxy-config
    kube-root-ca.crt
    telegraf-config

    Die default-telegraf-config-ConfigMap enthält die Telegraf-Standardkonfiguration und ist schreibgeschützt. Sie können sie als Fallback-Option verwenden, um die Konfiguration in telegraf-config wiederherzustellen für den Fall, dass die Datei beschädigt ist oder Sie einfach die Standardwerte wiederherstellen möchten. Die einzige bearbeitbare ConfigMap ist telegraf-config. Sie definiert, welche Komponenten Metriken an die Telegraf-Agenten senden und an welche Plattformen sie senden.

  4. Anzeigen der telegraf-config-ConfigMap:
     kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
    
Im Abschnitt inputs der ConfigMap telegraf-config werden alle Endpunkte der Supervisor-Komponenten definiert, von denen Telegraf Metriken sowie die Metriktypen selbst erfasst. Beispielsweise definiert die folgende Eingabe den Kubernetes-API-Server als Endpunkt:
 [[inputs.prometheus]]
      # APIserver
      ## An array of urls to scrape metrics from.
      alias = "kube_apiserver_metrics"
      urls = ["https://127.0.0.1:6443/metrics"]
      bearer_token = "/run/secrets/kubernetes.io/serviceaccount/token"
      # Dropping metrics as a part of short term solution to vStats integration 1MB metrics payload limit
      # Dropped Metrics:
      # apiserver_request_duration_seconds
      namepass = ["apiserver_request_total", "apiserver_current_inflight_requests", "apiserver_current_inqueue_requests", "etcd_object_counts", "apiserver_admission_webhook_admission_duration_seconds", "etcd_request_duration_seconds"]
      # "apiserver_request_duration_seconds" has _massive_ cardinality, temporarily turned off. If histogram, maybe filter the highest ones?
      # Similarly, maybe filters to _only_ allow error code related metrics through?
      ## Optional TLS Config
      tls_ca = "/run/secrets/kubernetes.io/serviceaccount/ca.crt"

Die alias-Eigenschaft gibt die Komponente an, aus der Metriken erfasst werden. Die namepass-Eigenschaft gibt an, welche Komponentenmetriken von den Telegraf-Agenten offengelegt bzw. erfasst werden.

Obwohl die ConfigMap telegraf-config bereits eine breite Palette von Metriken enthält, können Sie dennoch zusätzliche Metriken definieren. Weitere Informationen finden Sie unter Metriken für Kubernetes-Systemkomponenten und Kubernetes-Metrikreferenz.

Konfigurieren der Beobachtbarkeitsplattform für Telegraf

Im Abschnitt outps von telegraf-config können Sie konfigurieren, wo Telegraf die erfassten Metriken streamt. Es gibt mehrere Optionen wie outputs.file, outputs.wavefront, outputs.prometheus_client und outps-https. Im Abschnitt outps-https können Sie die Beobachtungsplattformen konfigurieren, die Sie für die Zusammenfassung und Überwachung der Supervisor-Metriken verwenden möchten. Sie können Telegraf so konfigurieren, dass Metriken an mehr als eine Plattform gesendet werden. Um die ConfigMap telegraf-config zu bearbeiten und eine Beobachtbarkeitsplattform zum Anzeigen von Supervisor-Metriken zu konfigurieren, führen Sie die folgenden Schritte aus:

  1. Melden Sie sich bei der Supervisor-Steuerungsebene mit einem vCenter Single Sign-On-Administratorkonto an.
    kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
  2. Speichern Sie die ConfigMap telegraf-config im lokalen kubectl-Ordner:
    kubectl get cm telegraf-config -n vmware-system-monitoring -o jsonpath="{.data['telegraf\.conf']}">telegraf.conf

    Speichern Sie die telegraf-config-ConfigMap in einem Versionskontrollsystem, bevor Sie Änderungen daran vornehmen, falls Sie eine vorherige Version der Datei wiederherstellen möchten. Wenn Sie die Standardkonfiguration wiederherstellen möchten, können Sie die Werte aus der default-telegraf-config-ConfigMap verwenden.

  3. Fügen Sie outputs.http-Abschnitte mit den Verbindungseinstellungen der Beobachtbarkeitsplattformen Ihrer Wahl hinzu, indem Sie einen Texteditor verwenden, z. B. VIM:
    vim telegraf.config
    Sie können die Auskommentierung des folgenden Abschnitts direkt aufheben und die Werte entsprechend bearbeiten oder nach Bedarf neue outputs.http-Abschnitte hinzufügen.
        #[[outputs.http]]
        #   alias = "prometheus_http_output"
        #   url = "<PROMETHEUS_ENDPOINT>"
        #   insecure_skip_verify = <PROMETHEUS_SKIP_INSECURE_VERIFY>
        #   data_format = "prometheusremotewrite"
        #   username = "<PROMETHEUS_USERNAME>"
        #   password = "<PROMETHEUS_PASSWORD>"
        #   <DEFAULT_HEADERS>
    
    So sieht beispielsweise eine outputs.http-Konfiguration für Grafana aus:
        [[outputs.http]]
     url = "http://<grafana-host>:<grafana-metrics-port>/<prom-metrics-push-path>"
     data_format = "influx"
     [outputs.http.headers]
       Authorization = "Bearer <grafana-bearer-token>"

    Weitere Informationen zum Konfigurieren von Dashboards und zur Nutzung von Metriken von Telegraf finden Sie unter Streamen von Metriken von Telegraf zu Grafana.

    Im Folgenden finden Sie nun ein Beispiel mit VMware Aria Operations for Applications (ehemals Wavefront):
        [[outputs.wavefront]]
          url = "http://<wavefront-proxy-host>:<wavefront-proxy-port>"

    Die empfohlene Methode zur Erfassung von Metriken für Aria Operations for Applications ist Proxy-basiert. Weitere Informationen dazu finden Sie unter Wavefront-Proxies .

  4. Ersetzen Sie die vorhandene telegraf-config-Datei auf dem Supervisor durch die Datei, die Sie in Ihrem lokalen Ordner bearbeitet haben:
    kubectl create cm --from-file telegraf.conf -n vmware-system-monitoring telegraf-config --dry-run=client -o yaml | kubectl replace -f -
  5. Überprüfen Sie, ob die neue Konfiguration erfolgreich gespeichert wurde:
    • Zeigen Sie die neue telegraf-config-ConfigMap an:
       kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
      
    • Überprüfen Sie, ob alle Telegraf-Pods ausgeführt werden:
      kubectl -n vmware-system-monitoring get pods
    • Wenn einige der Telegraf-Pods nicht ausgeführt werden, überprüfen Sie die Telegraf-Protokolle für diesen Pod, um eine Fehlerbehebung durchzuführen:
      kubectl -n vmware-system-monitoring logs <telegraf-pod>

Beispiel-Dashboards für Operations for Applications

Im Folgenden wird ein Dashboard mit einer Übersicht für die Metriken gezeigt, die vom API-Server und von etcd auf einem Supervisor über Telegraf empfangen wurden:


API-Server und etcd-Übersichten in Wavefront

Die Metriken für die Dauer der API-Server-Schreibanforderung basieren auf den Metriken, die in der ConfigMap telegraf-config angegeben sind. Sie sind grün hervorgehoben:


Übersicht über die Dauer der API-Server-Schreibanforderung in Wavefront