Découvrez comment diffuser des mesures de Superviseur collectées par Telegraf sur une plate-forme d'observabilité personnalisée. Telegraf est activé par défaut sur le Superviseur et collecte des mesures au format Prometheus auprès des composants du Superviseur, tels que le serveur d'API Kubernetes, le service de machine virtuelle Tanzu Kubernetes Grid, etc. En tant qu'administrateur vSphere, vous pouvez configurer une plate-forme d'observabilité telle que VMware Aria Operations for Applications, Grafana et d'autres pour afficher et analyser les mesures de Superviseur collectées.

Telegraf est un agent basé sur serveur pour la collecte et l'envoi de mesures à partir de différents systèmes, bases de données et IoT. Chaque composant du Superviseur expose un point de terminaison sur lequel Telegraf se connecte. Telegraf envoie ensuite les mesures collectées à la plate-forme d'observabilité de votre choix. Vous pouvez configurer n'importe quel plug-in de sortie que Telegraf prend en charge en tant que plate-forme d'observabilité pour l'agrégation et l'analyse des mesures de Superviseur. Reportez-vous à la documentation de Telegraf pour connaître les plug-ins de sortie pris en charge.

Les composants suivants exposent les points de terminaison sur lesquels Telegraf se connecte et collecte des mesures : serveur d'API Kubernetes, etcd, kubelet, gestionnaire de contrôleur Kubernetes, planificateur Kubernetes, Tanzu Kubernetes Grid, service de machine virtuelle, service d'image de machine virtuelle, registre du service de machine virtuelle, NSX Container Plug-in (NCP), interface de stockage de conteneur (CSI), gestionnaire de certificats, NSX et diverses mesures d'hôte telles que le CPU, la mémoire et le stockage.

Afficher la configuration et les espaces Telegraf

Telegraf s'exécute sous l'espace de noms système vmware-system-monitoring sur le Superviseur. Pour afficher les espaces Telegraf et les ConfigMaps :

  1. Connectez-vous au plan de contrôle du Superviseur avec un compte d'administrateur vCenter Single Sign-On.
    kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
  2. Utilisez la commande suivante pour afficher les espaces Telegraf :
    kubectl -n vmware-system-monitoring get pods
    Les espaces obtenus sont les suivants :
    telegraf-csqsl   
    telegraf-dkwtk  
    telegraf-l4nxk  
  3. Utilisez la commande suivante pour afficher les ConfigMaps Telegraf :
    kubectl -n vmware-system-monitoring get cm
    Les ConfigMaps obtenus sont les suivants :
    default-telegraf-config
    kube-rbac-proxy-config
    kube-root-ca.crt
    telegraf-config

    Le ConfigMap default-telegraf-config contient la configuration Telegraf par défaut et il est en lecture seule. Vous pouvez l'utiliser comme option de secours pour restaurer la configuration dans telegraf-config si le fichier est endommagé ou si vous souhaitez simplement restaurer les valeurs par défaut. Le seul ConfigMap que vous pouvez modifier est telegraf-config, il définit quels composants envoient des mesures aux agents Telegraf et à quelles plates-formes.

  4. Affichez le ConfigMap telegraf-config :
     kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
    
La section inputs du ConfigMap telegraf-config définit tous les points de terminaison des composants de Superviseur à partir desquels Telegraf collecte des mesures, ainsi que les types de mesures eux-mêmes. Par exemple, l'entrée suivante définit le serveur d'API Kubernetes en tant que point de terminaison :
 [[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"

La propriété alias indique le composant à partir duquel les mesures sont collectées. La propriété namepass spécifie quelles mesures de composant sont exposées et respectivement collectées par les agents Telegraf.

Bien que le ConfigMap telegraf-config contienne déjà un large éventail de mesures, vous pouvez toujours en définir d'autres. Reportez-vous aux sections Mesures pour les composants système Kubernetes et Référence des mesures Kubernetes.

Configurer la plate-forme d'observabilité sur Telegraf

Dans la section outps de telegraf-config, vous configurez l'emplacement dans lequel Telegraf diffuse les mesures qu'il collecte. Plusieurs options existent, telles que outputs.file, outputs.wavefront, outputs.prometheus_client et outps-https. La section outps-https vous permet de configurer les plates-formes d'observabilité que vous souhaitez utiliser pour l'agrégation et la surveillance des mesures Superviseur. Vous pouvez configurer Telegraf pour envoyer des mesures à plusieurs plates-formes. Pour modifier le ConfigMap telegraf-config et configurer une plate-forme d'observabilité afin d'afficher les mesures de Superviseur, procédez comme suit :

  1. Connectez-vous au plan de contrôle du Superviseur avec un compte d'administrateur vCenter Single Sign-On.
    kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
  2. Enregistrez le ConfigMap telegraf-config dans le dossier kubectl local :
    kubectl get cm telegraf-config -n vmware-system-monitoring -o jsonpath="{.data['telegraf\.conf']}">telegraf.conf

    Assurez-vous de stocker le ConfigMap telegraf-config dans un système de contrôle de version avant d'y apporter des modifications si vous souhaitez restaurer une version précédente du fichier. Si vous souhaitez restaurer la configuration par défaut, vous pouvez utiliser les valeurs du ConfigMap default-telegraf-config.

  3. Ajoutez les sections outputs.http aux paramètres de connexion des plates-formes d'observabilité de votre choix à l'aide d'un éditeur de texte, tel que VIM :
    vim telegraf.config
    Vous pouvez supprimer les marques de commentaire de la section suivante et modifier les valeurs en conséquence ou ajouter une nouvelle section outputs.http si nécessaire.
        #[[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>
    
    Par exemple, voici à quoi ressemble une configuration outputs.http pour Grafana :
        [[outputs.http]]
     url = "http://<grafana-host>:<grafana-metrics-port>/<prom-metrics-push-path>"
     data_format = "influx"
     [outputs.http.headers]
       Authorization = "Bearer <grafana-bearer-token>"

    Reportez-vous à la section Diffusion de mesures de Telegraf vers Grafana pour plus d'informations sur la configuration des tableaux de bord et l'utilisation des mesures à partir de Telegraf.

    Et voici un exemple avec VMware Aria Operations for Applications (ex-Wavefront) :
        [[outputs.wavefront]]
          url = "http://<wavefront-proxy-host>:<wavefront-proxy-port>"

    Il est recommandé d'ingérer des mesures dans Aria Operations for Applications en utilisant un proxy. Pour plus d'informations, reportez-vous à la section Proxys Wavefront.

  4. Remplacez le fichier telegraf-config existant sur le Superviseur par celui que vous avez modifié dans votre dossier local :
    kubectl create cm --from-file telegraf.conf -n vmware-system-monitoring telegraf-config --dry-run=client -o yaml | kubectl replace -f -
  5. Vérifiez si la nouvelle configuration a bien été enregistrée :
    • Affichez le nouveau ConfigMap telegraf-config :
       kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
      
    • Vérifiez si tous les espaces Telegraf sont en cours d'exécution :
      kubectl -n vmware-system-monitoring get pods
    • Si certains espaces Telegraf ne sont pas en cours d'exécution, consultez les journaux Telegraf pour l'espace à dépanner :
      kubectl -n vmware-system-monitoring logs <telegraf-pod>

Exemples de tableaux de bord Operations for Applications

Voici un tableau de bord affichant un résumé des mesures reçues du serveur d'API et etcd sur un Superviseur via Telegraf :


Résumés du serveur d'API et etcd dans Wavefront

Les mesures de la durée de demande d'écriture du serveur d'API basées sur les mesures spécifiées dans le ConfigMap telegraf-config ont été mises en surbrillance en vert :


Résumé de la durée de demande d'écriture du serveur d'API dans Wavefront