Utilizzo di Logging e Monitoring

Questa pagina spiega come utilizzare Cloud Logging, Cloud Monitoring, Prometheus e Grafana per il logging e il monitoraggio dell'implementazione dei tuoi Cluster Anthos su VMware (GKE On-Prem). Per un riepilogo delle opzioni di configurazione disponibili, consulta la panoramica su logging e monitoraggio.

Utilizzo di Cloud Logging e Cloud Monitoring

Le seguenti sezioni spiegano come utilizzare Cloud Logging e Cloud Monitoring con i cluster Anthos su VMware (GKE On-Prem).

Risorse monitorate

Le risorse monitorate sono il modo in cui Google rappresenta risorse come cluster, nodi, pod e container. Per saperne di più, consulta la documentazione dei tipi di risorse monitorate di Cloud Monitoring.

Per eseguire query su log e metriche, devi conoscere almeno queste etichette di risorse:

  • project_id: ID progetto per l'ID del progetto di monitoraggio del logging del cluster. Hai fornito questo valore nel campo stackdriver.projectID del file di configurazione del cluster.

  • location: una regione Google Cloud in cui vuoi archiviare i log di Cloud Logging e le metriche di Cloud Monitoring. È una buona opzione scegliere una regione vicina al data center on-premise. Hai fornito questo valore durante l'installazione nel campo stackdriver.clusterLocation del file di configurazione del cluster.

  • cluster_name: nome del cluster che hai scelto durante la creazione del cluster.

    Puoi recuperare il valore cluster_name per l'amministratore o il cluster utente controllando la risorsa personalizzata Stackdriver:

      kubectl -n kube-system get stackdrivers stackdriver -o yaml | grep 'clusterName:'

Accesso ai dati dei log

Puoi accedere ai log tramite Esplora log nella console Google Cloud. Ad esempio, per accedere ai log di un container:

  1. Apri Esplora log nella console Google Cloud per il tuo progetto.
  2. Trova i log per un container in base a:
    1. Fai clic sulla casella a discesa del catalogo dei log in alto a sinistra e seleziona Container Kubernetes.
    2. Seleziona il nome del cluster, quindi lo spazio dei nomi e quindi un container dalla gerarchia.

Creazione di dashboard per monitorare l'integrità del cluster

I cluster Anthos su cluster VMware sono configurati per impostazione predefinita per monitorare le metriche di sistema e del container. Dopo aver creato un cluster (amministratore o utente), una best practice consiste nel creare le seguenti dashboard con Cloud Monitoring per consentire ai team Cluster Anthos su VMware di monitorare l'integrità dei cluster:

Se Cloud Monitoring è abilitato, le dashboard vengono create automaticamente durante l'installazione del cluster di amministrazione.

Questa sezione descrive come creare queste dashboard. Per ulteriori informazioni sul processo di creazione delle dashboard descritto nelle sezioni seguenti, consulta Gestire le dashboard tramite API.

Prerequisiti

Il tuo Account Google deve disporre delle seguenti autorizzazioni per creare dashboard:

  • monitoring.dashboards.create
  • monitoring.dashboards.delete
  • monitoring.dashboards.update

Avrai queste autorizzazioni se il tuo account ha uno dei seguenti ruoli. Puoi controllare le tue autorizzazioni (nella console Google Cloud):

  • monitoring.dashboardEditor
  • monitoring.editor
  • Progetto editor
  • Progetto owner

Inoltre, per utilizzare gcloud (gcloud CLI) per creare dashboard, il tuo Account Google deve disporre dell'autorizzazione serviceusage.services.use.

Il tuo account avrà questa autorizzazione se ha uno dei seguenti ruoli:

  • roles/serviceusage.serviceUsageConsumer
  • roles/serviceusage.serviceUsageAdmin
  • roles/owner
  • roles/editor
  • Progetto editor
  • Progetto owner

Crea una dashboard di uptime del piano di controllo

Il piano di controllo di Cluster Anthos su VMware è costituito dal server API, dallo scheduler, dal gestore del controller e così via. Per monitorare lo stato del piano di controllo, crea una dashboard che monitori lo stato di questi componenti.

  1. Scarica la configurazione della dashboard: control-plane-uptime.json.

  2. Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:

    gcloud monitoring dashboards create --config-from-file=control-plane-uptime.json
  3. Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:

    Vai a Monitoring

  4. Seleziona Risorse > Dashboard e visualizza la dashboard denominata Tempo di attività del piano di controllo on-prem di GKE. Il tempo di attività del piano di controllo di ciascun cluster utente viene raccolto da spazi dei nomi separati all'interno del cluster di amministrazione. Il campo namespace_name è il nome del cluster utente.

  5. Crea facoltativamente criteri di avviso.

Crea una dashboard dello stato del pod

Per creare una dashboard che includa la fase di ogni pod, nonché i tempi di riavvio e l'utilizzo delle risorse per ogni container, segui questi passaggi:

  1. Scarica la configurazione della dashboard: pod-status.json.

  2. Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:

    gcloud monitoring dashboards create --config-from-file=pod-status.json
  3. Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:

    Vai a Monitoring

  4. Seleziona Risorse > Dashboard e visualizza la dashboard denominata Stato del pod on-prem di GKE.

  5. Crea facoltativamente criteri di avviso.

Crea una dashboard dello stato dei nodi

Per creare una dashboard dello stato dei nodi per monitorare la condizione dei nodi, l'utilizzo della CPU, della memoria e del disco, esegui i seguenti passaggi:

  1. Scarica la configurazione della dashboard: node-status.json.

  2. Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:

    gcloud monitoring dashboards create --config-from-file=node-status.json
  3. Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:

    Vai a Monitoring

  4. Seleziona Risorse > Dashboard e visualizza la dashboard denominata Stato dei nodi on-prem di GKE.

  5. Crea facoltativamente criteri di avviso.

Crea una dashboard dello stato di integrità della VM

Una dashboard dello stato di integrità delle VM monitora gli indicatori di contesa delle risorse di CPU, memoria e disco per le VM nel cluster di amministrazione e nei cluster utente.

Per creare una dashboard dello stato di integrità della VM:

  1. Assicurati che stackdriver.disableVsphereResourceMetrics sia impostato su false. Vedi File di configurazione per il cluster utente.

  2. Scarica la configurazione della dashboard: vm-health-status.json.

  3. Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:

    gcloud monitoring dashboards create --config-from-file=vm-health-status.json
  4. Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:

    Vai a Monitoring

  5. Seleziona Risorse > Dashboard e visualizza la dashboard denominata Stato di integrità delle VM on-prem di GKE.

  6. Crea facoltativamente criteri di avviso.

Configurazione delle risorse dei componenti Stackdriver in corso...

Quando crei un cluster, Cluster Anthos su VMware crea automaticamente una risorsa personalizzata Stackdriver. Puoi modificare le specifiche nella risorsa personalizzata per sostituire i valori predefiniti per le richieste e i limiti di CPU e memoria per un componente di Stackdriver. Inoltre, puoi sostituire separatamente le dimensioni e la classe di archiviazione predefinite.

Sostituisci i valori predefiniti per le richieste e i limiti per CPU e memoria

Per eseguire l'override di questi valori predefiniti:

  1. Apri la risorsa personalizzata Stackdriver in un editor a riga di comando:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    dove KUBECONFIG è il percorso del tuo file kubeconfig per il cluster. Può essere un cluster di amministrazione o un cluster utente.

  2. Nella risorsa personalizzata Stackdriver, aggiungi il campo resourceAttrOverride nella sezione spec:

    resourceAttrOverride:
          POD_NAME_WITHOUT_RANDOM_SUFFIX/CONTAINER_NAME:
            LIMITS_OR_REQUESTS:
              RESOURCE: RESOURCE_QUANTITY

    Tieni presente che il campo resourceAttrOverride sostituisce tutti i limiti e le richieste predefiniti esistenti per il componente specificato. Un file di esempio ha il seguente aspetto:

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      resourceAttrOverride:
        stackdriver-prometheus-k8s/prometheus-server:
          limits:
            cpu: 500m
            memory: 3000Mi
          requests:
            cpu: 300m
            memory: 2500Mi
  3. Salva le modifiche ed esci dall'editor della riga di comando.

  4. Controlla l'integrità dei pod:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    Ad esempio, un pod integro ha il seguente aspetto:

    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. Controlla le specifiche del pod del componente per assicurarti che le risorse siano impostate correttamente.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe pod POD_NAME

    dove POD_NAME è il nome del pod appena modificato. Ad esempio, stackdriver-prometheus-k8s-0

    La risposta ha il seguente aspetto:

      Name:         stackdriver-prometheus-k8s-0
      Namespace:    kube-system
      ...
      Containers:
        prometheus-server:
          Limits:
            cpu: 500m
            memory: 3000Mi
          Requests:
            cpu: 300m
            memory: 2500Mi
          ...
          

Sostituisci le impostazioni predefinite delle dimensioni dello spazio di archiviazione

Per eseguire l'override di questi valori predefiniti:

  1. Apri la risorsa personalizzata Stackdriver in un editor a riga di comando:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
  2. Aggiungi il campo storageSizeOverride nella sezione spec. Puoi utilizzare il componente stackdriver-prometheus-k8s o stackdriver-prometheus-app. La sezione ha il seguente formato:

    storageSizeOverride:
    STATEFULSET_NAME: SIZE
    

    In questo esempio vengono utilizzati l'oggetto StatefulSet stackdriver-prometheus-k8s e la dimensione 120Gi.

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      storageSizeOverride:
        stackdriver-prometheus-k8s: 120Gi
      
  3. Salva ed esci dall'editor della riga di comando.

  4. Controlla l'integrità dei pod:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver
    Ad esempio, un pod integro ha il seguente aspetto:
    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. Controlla le specifiche del pod del componente per assicurarti che le dimensioni dello spazio di archiviazione vengano sostituite correttamente.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    La risposta ha il seguente aspetto:

    Volume Claims:
     Name:          my-statefulset-persistent-volume-claim
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

Esegui l'override dei valori predefiniti della classe di archiviazione

Prerequisito

Devi prima creare un oggetto StorageClass che vuoi utilizzare.

Per eseguire l'override della classe di archiviazione predefinita per i volumi permanenti rivendicati dalla registrazione e dal monitoraggio dei componenti:

  1. Apri la risorsa personalizzata Stackdriver in un editor a riga di comando:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    dove KUBECONFIG è il percorso del tuo file kubeconfig per il cluster. Può essere un cluster di amministrazione o un cluster utente.

  2. Aggiungi il campo storageClassName nella sezione spec:

    storageClassName: STORAGECLASS_NAME

    Tieni presente che il campo storageClassName sostituisce la classe di archiviazione predefinita esistente e si applica a tutti i componenti di logging e monitoraggio con volumi permanenti rivendicati. Un file di esempio è simile al seguente:

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
    name: stackdriver
    namespace: kube-system
    spec:
    projectID: my-project
    clusterName: my-cluster
    clusterLocation: us-west-1a
    proxyConfigSecretName: my-secret-name
    enableVPC: 
    optimizedMetrics: true
    storageClassName: my-storage-class
  3. Salva le modifiche.

  4. Controlla l'integrità dei pod:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    Ad esempio, un pod integro ha il seguente aspetto:

    stackdriver-prometheus-k8s-0                                1/1     Running   0          5d19h
  5. Controlla le specifiche del pod di un componente per assicurarti che la classe di archiviazione sia impostata correttamente.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    Ad esempio, utilizzando l'insieme stateful stackdriver-prometheus-k8s, la risposta ha il seguente aspetto:

    Volume Claims:
     Name:          stackdriver-prometheus-data
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

Accedere ai dati delle metriche

Puoi scegliere tra oltre 1500 metriche utilizzando Metrics Explorer. Per accedere a Metrics Explorer:

  1. Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:

    Vai a Monitoring

  2. Seleziona Risorse > Metrics Explorer.

Accesso ai metadati di Monitoring

I metadati vengono utilizzati indirettamente tramite le metriche. Quando filtri le metriche in Monitoring Metrics Metrics, visualizzi le opzioni per filtrare le metriche per metadata.systemLabels e metadata.userLabels. Le etichette di sistema sono etichette come nome del nodo e nome del servizio per i pod. Le etichette utente sono etichette assegnate ai pod nei file YAML di Kubernetes nella sezione "metadati" delle specifiche dei pod.

Limiti di quota predefiniti di Cloud Monitoring

Il monitoraggio predefinito di Cluster Anthos su VMware ha un limite predefinito di 6000 chiamate API al minuto per ogni progetto. Se superi questo limite, le tue metriche potrebbero non essere visualizzate. Se hai bisogno di un limite di monitoraggio più elevato, richiedine uno tramite la console Google Cloud.

Problema noto: condizione di errore di Cloud Monitoring

(ID problema 159761921)

In determinate condizioni, il pod Cloud Monitoring predefinito, di cui è stato eseguito il deployment per impostazione predefinita in ogni nuovo cluster, può smettere di rispondere. Quando viene eseguito l'upgrade dei cluster, ad esempio i dati di archiviazione possono danneggiarsi quando i pod in statefulset/prometheus-stackdriver-k8s vengono riavviati.

In particolare, è possibile rilevare il pod di monitoraggio stackdriver-prometheus-k8s-0 in un loop quando i dati danneggiati impediscono la scrittura prometheus-stackdriver-sidecar nell'archiviazione cluster PersistentVolume.

Puoi diagnosticare e recuperare manualmente l'errore seguendo questa procedura.

Diagnosticare l'errore di Cloud Monitoring

Quando il pod di monitoraggio non va a buon fine, i log segnaleranno quanto segue:

{"log":"level=warn ts=2020-04-08T22:15:44.557Z caller=queue_manager.go:534 component=queue_manager msg=\"Unrecoverable error sending samples to remote storage\" err=\"rpc error: code = InvalidArgument desc = One or more TimeSeries could not be written: One or more points were written more frequently than the maximum sampling period configured for the metric.: timeSeries[0-114]; Unknown metric: kubernetes.io/anthos/scheduler_pending_pods: timeSeries[196-198]\"\n","stream":"stderr","time":"2020-04-08T22:15:44.558246866Z"}

{"log":"level=info ts=2020-04-08T22:15:44.656Z caller=queue_manager.go:229 component=queue_manager msg=\"Remote storage stopped.\"\n","stream":"stderr","time":"2020-04-08T22:15:44.656798666Z"}

{"log":"level=error ts=2020-04-08T22:15:44.663Z caller=main.go:603 err=\"corruption after 29032448 bytes: unexpected non-zero byte in padded page\"\n","stream":"stderr","time":"2020-04-08T22:15:44.663707748Z"}

{"log":"level=info ts=2020-04-08T22:15:44.663Z caller=main.go:605 msg=\"See you next time!\"\n","stream":"stderr","time":"2020-04-08T22:15:44.664000941Z"}

Ripristino dall'errore di Cloud Monitoring

Per recuperare Cloud Monitoring manualmente:

  1. Interrompi il monitoraggio del cluster. Fai lo scale down dell'operatore stackdriver per evitare il monitoraggio della riconciliazione:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas 0

  2. Elimina i carichi di lavoro della pipeline di monitoraggio:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete statefulset stackdriver-prometheus-k8s

  3. Elimina la pipeline di monitoraggio PersistentVolumeClaim (PVC):

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete pvc -l app=stackdriver-prometheus-k8s

  4. Riavvia il monitoraggio del cluster. Fai lo scale up dell'operatore stackdriver per reinstallare una nuova pipeline di monitoraggio e riprendere la riconciliazione:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas=1

Prometheus e Grafana

Le sezioni seguenti spiegano come utilizzare Prometheus e Grafana con i cluster Anthos sui cluster VMware.

Abilitare Prometheus e Grafana

A partire da Cluster Anthos su VMware versione 1.2, puoi scegliere se abilitare o disabilitare Prometheus e Grafana. Nei nuovi cluster utente, Prometheus e Grafana sono disabilitati per impostazione predefinita.

  1. Il cluster utente ha un oggetto Monitoring denominato monitoring-sample. Apri l'oggetto da modificare:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit \
       monitoring monitoring-sample --namespace kube-system

    dove [USER_CLUSTER_KUBECONFIG] è il file kubeconfig per il cluster utente.

  2. Per attivare Prometheus e Grafana, imposta enablePrometheus su true. Per disattivare Prometheus e Grafana, imposta enablePrometheus su false:

    apiVersion: addons.k8s.io/v1alpha1
    kind: Monitoring
    metadata:
     labels:
       k8s-app: monitoring-operator
     name: monitoring-sample
     namespace: kube-system
    spec:
     channel: stable
     ...
     enablePrometheus: true
  3. Salva le modifiche chiudendo la sessione di modifica.

Problema noto

Nei cluster utente, Prometheus e Grafana vengono disattivati automaticamente durante l'upgrade. I dati della configurazione e delle metriche, tuttavia, non vanno persi.

Per risolvere il problema, dopo l'upgrade apri monitoring-sample per la modifica e imposta enablePrometheus su true.

Accedere alle metriche di monitoraggio dalle dashboard di Grafana

Grafana mostra le metriche raccolte dai tuoi cluster. Per visualizzare queste metriche, devi accedere alle dashboard di Grafana:

  1. Ottieni il nome del pod Grafana in esecuzione nello spazio dei nomi kube-system del cluster utente:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get pods

    dove [USER_CLUSTER_KUBECONFIG] è il file kubeconfig del cluster utente.

  2. Il pod Grafana ha un server HTTP in ascolto sulla porta localhost TCP 3000. Inoltra una porta locale alla porta 3000 nel pod per visualizzare le dashboard di Grafana da un browser web.

    Ad esempio, supponiamo che il nome del pod sia grafana-0. Per inoltrare la porta 50000 alla porta 3000 nel pod, inserisci questo comando:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system port-forward grafana-0 50000:3000
  3. Da un browser web, apri http://localhost:50000.

  4. Nella pagina di accesso, inserisci admin per il nome utente e la password.

  5. Se l'accesso riesce, verrà visualizzato un messaggio che ti chiede di cambiare la password. Dopo aver modificato la password predefinita, dovrebbe essere caricata la dashboard della home page Grafana del cluster utente.

  6. Per accedere ad altre dashboard, fai clic sul menu a discesa Home nell'angolo in alto a sinistra della pagina.

Per un esempio di utilizzo di Grafana, vedi Creare una dashboard di Grafana.

Accesso agli avvisi

Prometheus Alertmanager raccoglie gli avvisi dal server Prometheus. Puoi visualizzare questi avvisi in una dashboard di Grafana. Per visualizzare gli avvisi, devi accedere alla dashboard:

  1. Il container nel pod alertmanager-0 rimane in ascolto sulla porta TCP 9093. Inoltra una porta locale alla porta 9093 nel pod:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward \
       -n kube-system alertmanager-0 50001:9093
  2. Da un browser web, apri http://localhost:50001.

Modifica della configurazione Alertmanager Prometheus

Puoi modificare la configurazione predefinita di Alertme Prometheus modificando il file monitoring.yaml del tuo cluster utente. Devi eseguire questa operazione se vuoi indirizzare gli avvisi a una destinazione specifica, anziché tenerli nella dashboard. Puoi scoprire come configurare Alertmanager nella documentazione sulla configurazione di Prometheus.

Per modificare la configurazione di Alertmanager, procedi nel seguente modo:

  1. Crea una copia del file manifest monitoring.yaml del cluster utente:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system \
       get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. Per configurare Alertmanager, apporta modifiche ai campi in spec.alertmanager.yml. Al termine, salva il manifest modificato.

  3. Applica il manifest al tuo cluster:

    kubectl apply --kubeconfig [USER_CLUSTER_KUBECONIFG] -f monitoring.yaml

Scalabilità delle risorse Prometheus

La configurazione di monitoraggio predefinita supporta fino a cinque nodi. Per i cluster più grandi, puoi regolare le risorse di Prometheus Server. Sono consigliati 50 m core di CPU e 500 Mi di memoria per nodo cluster. Assicurati che il cluster contenga due nodi, ciascuno con risorse sufficienti per adattarsi a Prometheus. Per saperne di più, consulta Ridimensionare un cluster utente.

Per modificare le risorse di Prometheus Server, procedi nel seguente modo:

  1. Crea una copia del file manifest monitoring.yaml del cluster utente:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. Per eseguire l'override delle risorse, apporta modifiche ai campi in spec.resourceOverride. Al termine, salva il manifest modificato. Esempio:

    spec:
      resourceOverride:
      - component: Prometheus
        resources:
          requests:
            cpu: 300m
            memory: 3000Mi
          limits:
            cpu: 300m
            memory: 3000Mi
    
  3. Applica il manifest al tuo cluster:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f monitoring.yaml

Creare una dashboard di Grafana

Hai eseguito il deployment di un'applicazione che espone una metrica, hai verificato che la metrica sia esposta e hai verificato che Prometheus ne esegue il scraping. Ora puoi aggiungere la metrica a livello di applicazione a una dashboard Grafana personalizzata.

Per creare una dashboard Grafana, procedi nel seguente modo:

  1. Se necessario, ottenere l'accesso a Grafana.
  2. Nella dashboard della home page, fai clic sul menu a discesa Home nell'angolo in alto a sinistra della pagina.
  3. Nel menu a destra, fai clic su Nuova dashboard.
  4. Nella sezione Nuovo riquadro, fai clic su Grafico. Viene visualizzata una dashboard del grafico vuota.
  5. Fai clic su Titolo del pannello, quindi su Modifica. Nel riquadro Grafico inferiore si apre la scheda Metriche.
  6. Dal menu a discesa Origine dati, seleziona utente. Fai clic su Aggiungi query e inserisci foo nel campo Cerca.
  7. Fai clic sul pulsante Torna alla dashboard nell'angolo in alto a destra dello schermo. Viene visualizzata la dashboard.
  8. Per salvare la dashboard, fai clic su Salva dashboard nell'angolo in alto a destra dello schermo. Scegli un nome per la dashboard, poi fai clic su Salva.

Disabilitazione del monitoraggio nel cluster

Per disabilitare il monitoraggio nel cluster, ripristina le modifiche apportate all'oggetto monitoring-sample:

  1. Apri l'oggetto monitoring-sample da modificare:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG edit \
       monitoring monitoring-sample --namespace kube-system

    Sostituisci USER_CLUSTER_KUBECONFIG con il file kubeconfig per il cluster utente.

  2. Per disattivare Prometheus e Grafana, imposta enablePrometheus su false:

       apiVersion: addons.k8s.io/v1alpha1
       kind: Monitoring
       metadata:
         labels:
           k8s-app: monitoring-operator
         name: monitoring-sample
         namespace: kube-system
       spec:
         channel: stable
         ...
         enablePrometheus: false
    
  3. Salva le modifiche chiudendo la sessione di modifica.

  4. Conferma che gli StatefulSet prometheus-0, prometheus-1 e grafana-0 siano stati eliminati:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pods --namespace kube-system

Esempio: aggiungere metriche a livello di applicazione a una dashboard di Grafana

Le seguenti sezioni illustrano come aggiungere metriche per un'applicazione. In questa sezione completerai queste attività:

  • Esegui il deployment di un'applicazione di esempio che espone una metrica chiamata foo.
  • Verifica che Prometheus esponga e applichi la metrica.
  • Crea una dashboard Grafana personalizzata.

Esegui il deployment dell'applicazione di esempio

L'applicazione di esempio viene eseguita in un unico pod. il container del pod espone una metrica foo con un valore costante di 40.

Crea il seguente manifest del pod, pro-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: prometheus-example
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: '8080'
    prometheus.io/path: '/metrics'
spec:
  containers:
  - image: registry.k8s.io/prometheus-dummy-exporter:v0.1.0
    name: prometheus-example
    command:
    - /bin/sh
    - -c
    - ./prometheus_dummy_exporter --metric-name=foo --metric-value=40 --port=8080

Quindi applica il manifest del pod al tuo cluster utente:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f pro-pod.yaml

Verificare che la metrica sia esposta e che sia stata appropriata

  1. Il container nel pod prometheus-example rimane in ascolto sulla porta TCP 8080. Inoltra una porta locale alla porta 8080 nel pod:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-example 50002:8080
  2. Per verificare che l'applicazione mostri la metrica, esegui questo comando:

    curl localhost:50002/metrics | grep foo
    

    Il comando restituisce il seguente output:

    # HELP foo Custom metric
    # TYPE foo gauge
    foo 40
  3. Il container nel pod prometheus-0 rimane in ascolto sulla porta TCP 9090. Inoltra una porta locale alla porta 9090 nel pod:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
  4. Per verificare che Prometheus esegua il scraping della metrica, vai a http://localhost:50003/targets, che dovrebbe accedere al pod prometheus-0 nel gruppo di destinazione prometheus-io-pods.

  5. Per visualizzare le metriche in Prometheus, vai a http://localhost:50003/graph. Nel campo di ricerca, inserisci foo e fai clic su Esegui. La pagina dovrebbe mostrare la metrica.