Scopri come trasmettere in streaming le metriche Supervisore raccolte da Telegraf a una piattaforma di osservabilità personalizzata. Telegraf è abilitato per impostazione predefinita in Supervisore e raccoglie le metriche in formato Prometheus dai componenti di Supervisore, ad esempio il server dell'API Kubernetes, il servizio della macchina virtuale, Tanzu Kubernetes Grid e altri. In qualità di amministratore di vSphere, è possibile configurare una piattaforma di osservabilità personalizzata, ad esempio VMware Aria Operations for Applications, Grafana e altri, per visualizzare e analizzare le metriche di Supervisore raccolte.

Telegraf è un agente basato su server per la raccolta e l'invio di metriche da diversi sistemi, database e IoT. Ogni componente Supervisore espone un endpoint a cui Telegraf si connette. Telegraf invia quindi le metriche raccolte a una piattaforma di osservabilità a scelta. È possibile configurare uno qualsiasi dei plug-in di output supportati da Telegraf come piattaforma di osservabilità per l'aggregazione e l'analisi delle metriche Supervisore. Per informazioni sui plug-in di output supportati, vedere la documentazione di Telegraf.

I componenti seguenti espongono endpoint in cui Telegraf si connette e raccoglie le metriche: server dell'API Kubernetes, etcd, kubelet, gestore controller Kubernetes, pianificatore Kubernetes, Tanzu Kubernetes Grid, servizio della macchina virtuale, servizio delle immagini della macchina virtuale, NSX Container Plug-in (NCP), Container Storage Interface (CSI), gestore certificati, NSX e varie metriche dell'host come CPU, memoria e storage.

Visualizzazione dei pod e della configurazione di Telegraf

Telegraf viene eseguito nello spazio dei nomi del sistema vmware-system-monitoring nel Supervisore. Per visualizzare i pod di Telegraf e ConfigMaps:

  1. Accedere al pannello di controllo Supervisore con un account amministratore vCenter Single Sign-On.
    kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
  2. Utilizzare il comando seguente per visualizzare i pod di Telegraf:
    kubectl -n vmware-system-monitoring get pods
    I pod risultanti sono i seguenti:
    telegraf-csqsl   
    telegraf-dkwtk  
    telegraf-l4nxk  
  3. Utilizzare il comando seguente per visualizzare le ConfigMaps di Telegraf:
    kubectl -n vmware-system-monitoring get cm
    Le ConfigMaps risultanti sono le seguenti:
    default-telegraf-config
    kube-rbac-proxy-config
    kube-root-ca.crt
    telegraf-config

    La mappa di configurazione default-telegraf-config contiene la configurazione di Telegraf predefinita ed è di sola lettura. È possibile utilizzarla come opzione di fallback per ripristinare la configurazione in telegraf-config nel caso in cui il file sia danneggiato o si desideri solo ripristinare le impostazioni predefinite. L'unica ConfigMap che è possibile modificare è telegraf-config, definisce quali componenti inviano metriche agli agenti Telegraf e a quali piattaforme.

  4. Visualizza la ConfigMap di telegraf-config:
     kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
    
La sezione inputs della ConfigMap telegraf-config definisce tutti gli endpoint dei componenti Supervisore da cui Telegraf raccoglie le metriche, nonché i tipi di metriche stesse. Ad esempio, l'input seguente definisce il server dell'API Kubernetes come endpoint :
 [[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 proprietà alias indica il componente da cui vengono raccolte le metriche. La proprietà namepass specifica quali metriche dei componenti vengono esposte e raccolte rispettivamente dagli agenti Telegraf.

Anche se la ConfigMap telegraf-config contiene già un ampio intervallo di metriche, è comunque possibile definirne altre. Vedere Metriche per i componenti del sistema Kubernetes e Riferimento alle metriche di Kubernetes.

Configurazione della piattaforma di Observability per Telegraf

Nella sezione outps di telegraf-config configurare la posizione in cui Telegraf trasmette le metriche che raccoglie. Sono disponibili diverse opzioni, ad esempio outputs.file, outputs.wavefront, outputs.prometheus_client e outps-https. Nella sezione outps-https è possibile configurare le piattaforme di osservabilità che si desidera utilizzare per l'aggregazione e il monitoraggio delle metriche Supervisore. È possibile configurare Telegraf in modo che invii metriche a più piattaforme. Per modificare la ConfigMap telegraf-config e configurare una piattaforma di osservabilità per la visualizzazione delle metriche di Supervisore, eseguire i passaggi seguenti:

  1. Accedere al pannello di controllo Supervisore con un account amministratore vCenter Single Sign-On.
    kubectl vsphere login --server <control planе IP> --vsphere-username [email protected]
  2. Salvare la ConfigMap telegraf-config nella cartella kubectl locale:
    kubectl get cm telegraf-config -n vmware-system-monitoring -o jsonpath="{.data['telegraf\.conf']}">telegraf.conf

    Assicurarsi di archiviare la mappa di configurazione telegraf-config in un sistema di controllo della versione prima di apportare eventuali modifiche nel caso in cui si desideri ripristinare una versione precedente del file. Se si desidera ripristinare la configurazione predefinita, è possibile utilizzare i valori della mappa di configurazione default-telegraf-config.

  3. Aggiungere le sezioni outputs.http con le impostazioni di connessione delle piattaforme di osservabilità desiderate utilizzando un editor di testo, ad esempio VIM:
    vim telegraf.config
    È possibile rimuovere direttamente il commento dalla sezione seguente e modificare i valori di conseguenza oppure aggiungere nuove sezioni outputs.http in base alle esigenze.
        #[[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>
    
    Ad esempio, ecco come si presenta una configurazione outputs.http per 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>"

    Vedere Trasmettere le metriche da Telegraf a Grafana per ulteriori informazioni sulla configurazione dei dashboard e sull'utilizzo delle metriche da Telegraf.

    Ed ecco un esempio con VMware Aria Operations for Applications (in precedenza Wavefront):
        [[outputs.wavefront]]
          url = "http://<wavefront-proxy-host>:<wavefront-proxy-port>"

    La modalità consigliata per l'inserimento delle metriche in Aria Operations for Applications è tramite un proxy. Vedere Proxy Wavefront per ulteriori informazioni.

  4. Sostituire il file telegraf-config esistente in Supervisore con quello modificato nella cartella locale:
    kubectl create cm --from-file telegraf.conf -n vmware-system-monitoring telegraf-config --dry-run=client -o yaml | kubectl replace -f -
  5. Verificare che la nuova configurazione sia stata salvata correttamente:
    • Visualizzare la nuova mappa di configurazione telegraf-config:
       kubectl -n vmware-system-monitoring get cm telegraf-config -o yaml
      
    • Verificare che tutti i pod di Telegraf siano attivi e in esecuzione:
      kubectl -n vmware-system-monitoring get pods
    • Nel caso in cui alcuni pod di Telegraf non siano in esecuzione, controllare i registri di Telegraf per risolvere i problemi relativi a tali pod:
      kubectl -n vmware-system-monitoring logs <telegraf-pod>

Operazioni di esempio per i dashboard delle applicazioni

Di seguito è disponibile un dashboard che mostra un riepilogo delle metriche ricevute dal server API ed etcd in un Supervisore tramite Telegraf:


Riepiloghi del server API ed etcd in Wavefront

Le metriche per la durata della richiesta di scrittura del server API si basano sulle metriche specificate nella ConfigMap telegraf-config come è possibile vedere evidenziate in verde:


Riepilogo della durata della richiesta di scrittura del server API in Wavefront