Grafana consente di eseguire query, visualizzare, avvisare ed esplorare le metriche, indipendentemente dalla posizione in cui vengono archiviate. Grafana fornisce strumenti per creare grafici e visualizzazioni dai dati dell'applicazione. Distribuire l'estensione TKG per Grafana per generare e visualizzare le metriche per i cluster Tanzu Kubernetes.

Requisiti dell'estensione Grafana

In questo argomento viene descritto come distribuire e gestire l'estensione TKG v1.3.1 per Grafana.

Attenersi ai seguenti prerequisiti per distribuire l'estensione. L'estensione di monitoraggio di Grafana richiede inoltre una classe di storage persistente predefinita. È possibile creare un cluster con una classe di storage persistente predefinita oppure specificarne uno nel file di configurazione di Prometheus quando si distribuisce l'estensione. Vedere Rivedere i requisiti di storage permanente per le estensioni TKG.

Distribuzione dell'estensione Grafana per la visualizzazione e l'analisi

L'estensione TKG per Grafana distribuisce un singolo contenitore. Per ulteriori informazioni, vedere https://grafana.com/.
Container Tipo di risorsa Repliche Descrizione
Grafana Distribuzione 2 Visualizzazione dei dati
L'estensione è configurata per estrarre i container dal registro pubblico di VMware all'indirizzo https://projects.registry.vmware.com/. Se si utilizza un registro privato, modificare l'URL dell'endpoint nei valori dei dati e nelle configurazioni delle estensioni in modo che corrispondano. Vedere Configurazione dell'estensione Grafana.
  1. Verificare che tutti i prerequisiti dell'estensione siano soddisfatti. Vedere Requisiti dell'estensione Grafana.
  2. Passare alla directory con l'estensione Grafana.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  3. Creare lo spazio dei nomi tanzu-system-monitoring, l'account del servizio Grafana e gli oggetti ruolo.
    kubectl apply -f namespace-role.yaml
  4. Creare un file dei valori di dati Grafana.
    Il file dei valori dei dati di esempio fornisce la configurazione minima richiesta.
    cp grafana-data-values.yaml.example grafana-data-values.yaml
  5. Configurare l'estensione Grafana aggiornando grafana-data-values.yaml.

    Personalizzare la configurazione in base alle esigenze. Vedere Configurazione dell'estensione Grafana.

    admin_password deve essere codificato in base64, ma non bloccherà la distribuzione dell'estensione, se non lo è. Nell'esempio seguente, la password "admin" è codificata in base64. Codificare la propria password di Grafana qui: https://www.base64encode.org/.

    Se non viene eseguito il provisioning del cluster con una classe di storage predefinita, è possibile specificarlo nel file dei valori dei dati. Assicurarsi inoltre che lo spazio dei nomi disponga di spazio di storage sufficiente per le attestazioni di volume persistenti.
    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"
    
  6. Creare il segreto Grafana con file grafana-data-values.
    kubectl create secret generic grafana-data-values --from-file=values.yaml=grafana-data-values.yaml -n tanzu-system-monitoring

    Il segreto grafana-data-values viene creato nello spazio dei nomi tanzu-system-monitoring. Verificare usando kubectl get secrets -n tanzu-system-monitoring.

  7. Distribuire l'estensione Grafana.
    kubectl apply -f grafana-extension.yaml

    Al completamento, viene creata l'app Grafana: app.kappctrl.k14s.io/grafana created.

  8. Controllare lo stato dell'app Grafana.
    kubectl get app grafana -n tanzu-system-monitoring
    Lo stato deve passare da Reconciling a Reconcile succeeded. Se lo stato è Reconcile failed, vedere Risoluzione dei problemi.
  9. Visualizzare lo stato dettagliato nell'app Grafana.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml
  10. Verificare la distribuzione di Grafana.
    kubectl get deployments -n tanzu-system-monitoring

Risoluzione dei problemi relativi alla distribuzione di Grafana

Se la distribuzione o la riconciliazione non riesce, eseguire kubectl get pods -A per visualizzare lo stato del pod. I pod di contour e envoy devono essere Running. Se lo stato di un pod è ImagePullBackOff o ImageCrashLoopBackOff, non è possibile estrarre l'immagine del container. Controllare l'URL del registro nei valori dei dati e nei file YAML dell'estensione e assicurarsi che sia corretto.

Controllare i registri del container, dove name-XXXX è il nome univoco del pod quando si esegue kubectl get pods -A:
kubectl logs pod/grafana-XXXX -c grafana -n tanzu-system-monitoring

Aggiornamento dell'estensione Grafana

Aggiornare l'estensione Grafana distribuita in un cluster Tanzu Kubernetes.

  1. Recuperare i valori dei dati di Grafana correnti dal segreto grafana-data-values.
    kubectl get secret grafana-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > grafana-data-values.yaml
    
  2. Aggiornare i valori dei dati di Grafana in grafana-data-values.yaml. Vedere Configurazione dell'estensione Grafana.
  3. Aggiornare il segreto dei valori dei dati di Grafana.
    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-
    
    L'estensione Grafana viene riconciliata con i valori dei dati aggiornati.
    Nota: Per impostazione predefinita, kapp-controller sincronizzerà le app ogni 5 minuti. L'aggiornamento dovrebbe essere applicato in 5 minuti al massimo. Se si desidera che l'aggiornamento venga applicato immediatamente, impostare syncPeriod in grafana-extension.yaml su un valore inferiore e applicare l'estensione Grafana mediante kubectl apply -f grafana-extension.yaml.
  4. Controllare lo stato dell'estensione.
    kubectl get app grafana -n tanzu-system-monitoring

    Lo stato deve passare a Reconcile Succeeded dopo l'aggiornamento di Grafana.

  5. Visualizzare lo stato dettagliato e risolvere i problemi se necessario.
    kubectl get app grafana -n tanzu-system-monitoring -o yaml

Eliminazione dell'estensione Grafana

Eliminare l'estensione Grafana da un cluster Tanzu Kubernetes.
Nota: Completare i passaggi nell'ordine indicato. Non eliminare lo spazio dei nomi, l'account del servizio e gli oggetti ruolo prima che l'app Grafana venga eliminata completamente. In caso contrario, possono verificarsi errori di sistema.
Nota: Le estensioni Prometheus e Grafana vengono distribuite nello stesso spazio dei nomi: tanzu-system-monitoring. Se sono state distribuite entrambe le estensioni nello stesso cluster, eliminare ogni estensione prima di eliminare lo spazio dei nomi.
  1. Passare alla directory con l'estensione Grafana.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana
  2. Eliminare l'app Grafana.
    kubectl delete app grafana -n tanzu-system-monitoring

    Risultato previsto: app.kappctrl.k14s.io "grafana" deleted.

  3. Verificare che l'app Grafana sia stata eliminata.
    kubectl get app grafana -n tanzu-system-monintoring

    Risultato previsto: apps.kappctrl.k14s.io "grafana" not found.

  4. Eliminare lo spazio dei nomi tanzu-system-monitoring, l'account del servizio Grafana e gli oggetti ruolo.
    Avviso: Non eseguire questo passaggio se viene distribuito Prometheus.
    kubectl delete -f namespace-role.yaml
  5. Se si desidera ridistribuire Grafana, rimuovere il segreto grafana-data-values.
    kubectl delete secret grafana-data-values -n tanzu-system-monitoring

    Risultato previsto: secret "grafana-data-values" deleted.

Upgrade dell'estensione Grafana

Se è stata distribuita un'estensione di Grafana esistente, è possibile eseguire l'upgrade in modo che utilizzi la versione più recente.
  1. Esportare la mappa di configurazione di Grafana e salvarla come backup.
    kubectl get configmap grafana -n tanzu-system-monitoring -o 'go-template={{ index .data "grafana.yaml" }}' > grafana-configmap.yaml
  2. Eliminare l'estensione Grafana esistente. Vedere Eliminazione dell'estensione Grafana.
  3. Distribuire l'estensione Grafana. Vedere Distribuzione dell'estensione Grafana per la visualizzazione e l'analisi.

Configurazione dell'estensione Grafana

La configurazione di Grafana è impostata su /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/grafana/grafana-data-values.yaml.
Tabella 1. Parametri di configurazione Grafana
Parametro Descrizione Tipo Predefinito
monitoring.namespace Spazio dei nomi in cui Prometheus verrà distribuito stringa tanzu-system-monitoring
monitoring.create_namespace Il contrassegno indica se creare lo spazio dei nomi specificato da monitoring.namespace booleano false
monitoring.grafana.cluster_role.apiGroups Gruppo di API definito per clusterrole grafana list [""]
monitoring.grafana.cluster_role.resources risorse definite per clusterrole grafana list ["configmaps", "secrets"]
monitoring.grafana.cluster_role.verbs autorizzazione di accesso definita per clusterrole list ["get", "watch", "list"]
monitoring.grafana.config.grafana_ini Dettagli del file di configurazione Grafana file di configurazione grafana.ini

In questo file, viene utilizzato l'URL grafana_net per eseguire l'integrazione con Grafana, ad esempio per importare il dashboard direttamente da Grafana.com.

monitoring.grafana.config.datasource.type Tipo di origine dati Grafana stringa prometheus
monitoring.grafana.config.datasource.access Modalità di accesso. Proxy o diretto (server o browser nell'interfaccia utente) stringa proxy
monitoring.grafana.config.datasource.isDefault Contrassegnare come origine dati Grafana predefinita booleano true
monitoring.grafana.config.provider_yaml File di configurazione per definire il provider del dashboard Grafana file yaml provider.yaml
monitoring.grafana.service.type Tipo di servizio per esporre Grafana. Valori supportati: ClusterIP, NodePort, LoadBalancer stringa vSphere: NodePort, aws/azure: LoadBalancer
monitoring.grafana.pvc.storage_class Definire la modalità di accesso per l'attestazione di volume persistente. Valori supportati: ReadWriteOnce, ReadOnlyMany, ReadWriteMany stringa ReadWriteOnce
monitoring.grafana.pvc.storage Definire la dimensione dello storage per l'attestazione del volume persistente stringa 2Gi
monitoring.grafana.deployment.replicas Numero di repliche Grafana numero intero 1
monitoring.grafana.image.repository Posizione del repository con l'immagine Grafana. L'impostazione predefinita è il registro di VMware pubblico. Modificare questo valore se si utilizza un repository privato (ad esempio, un ambiente air gap). stringa projects.registry.vmware.com/tkg/grafana
monitoring.grafana.image.name Nome dell'immagine Grafana stringa Grafana
monitoring.grafana.image.tag Tag immagine Grafana. Se si sta aggiornando la versione, potrebbe essere necessario aggiornare questo valore. stringa v7.3.5_vmware.1
monitoring.grafana.image.pullPolicy Criterio di pull immagine Grafana stringa IfNotPresent
monitoring.grafana.secret.type Tipo di segreto definito per il dashboard di Grafana stringa Opaque
monitoring.grafana.secret.admin_user nome utente per accedere al dashboard di Grafana stringa YWRtaW4=

Il valore è codificato in base64; per la decodifica: echo "xxxxxx" | base64 --decode

monitoring.grafana.secret.admin_password password per accedere al dashboard di Grafana stringa null
monitoring.grafana.secret.ldap_toml Se si utilizza l'autenticazione LDAP, percorso del file di configurazione LDAP stringa ""
monitoring.grafana_init_container.image.repository Repository contenente l'immagine del contenitore init grafana. L'impostazione predefinita è il registro di VMware pubblico. Modificare questo valore se si utilizza un repository privato (ad esempio, un ambiente air gap). stringa projects.registry.vmware.com/tkg/grafana
monitoring.grafana_init_container.image.name Nome dell'immagine del contenitore init Grafana stringa k8s-sidecar
monitoring.grafana_init_container.image.tag Tag immagine contenitore init Grafana. Se si sta aggiornando la versione, potrebbe essere necessario aggiornare questo valore. stringa 0.1.99
monitoring.grafana_init_container.image.pullPolicy Criterio di pull delle immagini del contenitore init Grafana stringa IfNotPresent
monitoring.grafana_sc_dashboard.image.repository Repository contenente l'immagine del dashboard di Grafana. L'impostazione predefinita è il registro di VMware pubblico. Modificare questo valore se si utilizza un repository privato (ad esempio, un ambiente air gap). stringa projects.registry.vmware.com/tkg/grafana
monitoring.grafana_sc_dashboard.image.name Nome dell'immagine del dashboard di Grafana stringa k8s-sidecar
monitoring.grafana_sc_dashboard.image.tag Tag immagine dashboard Grafana. Se si sta aggiornando la versione, potrebbe essere necessario aggiornare questo valore. stringa 0.1.99
monitoring.grafana_sc_dashboard.image.pullPolicy Criterio di pull immagine dashboard Grafana stringa IfNotPresent
monitoring.grafana.ingress.enabled Abilita/disabilita in ingresso per Grafana booleano true
monitoring.grafana.ingress.virtual_host_fqdn Nome host per l'accesso a Grafana stringa grafana.system.tanzu
monitoring.grafana.ingress.prefix Prefisso del percorso per Grafana stringa /
monitoring.grafana.ingress.tlsCertificate.tls.crt Certificato facoltativo per l'ingresso se si desidera utilizzare il proprio certificato TLS. Per impostazione predefinita, viene generato un certificato autofirmato stringa Certificato generato
monitoring.grafana.ingress.tlsCertificate.tls.key Chiave privata del certificato facoltativa per l'ingresso se si desidera utilizzare il proprio certificato TLS. stringa Chiave certificato generata