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 campostackdriver.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 campostackdriver.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:
- Apri Esplora log nella console Google Cloud per il tuo progetto.
- Trova i log per un container in base a:
- Fai clic sulla casella a discesa del catalogo dei log in alto a sinistra e seleziona Container Kubernetes.
- 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:
- Dashboard tempo di attività del piano di controllo
- Dashboard dello stato dei pod
- Dashboard dello stato dei nodi
- Dashboard dello stato di integrità delle VM
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.
Scarica la configurazione della dashboard:
control-plane-uptime.json
.Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:
gcloud monitoring dashboards create --config-from-file=control-plane-uptime.json
Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:
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.
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:
Scarica la configurazione della dashboard:
pod-status.json
.Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:
gcloud monitoring dashboards create --config-from-file=pod-status.json
Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:
Seleziona Risorse > Dashboard e visualizza la dashboard denominata Stato del pod on-prem di GKE.
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:
Scarica la configurazione della dashboard:
node-status.json
.Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:
gcloud monitoring dashboards create --config-from-file=node-status.json
Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:
Seleziona Risorse > Dashboard e visualizza la dashboard denominata Stato dei nodi on-prem di GKE.
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:
Assicurati che
stackdriver.disableVsphereResourceMetrics
sia impostato su false. Vedi File di configurazione per il cluster utente.Scarica la configurazione della dashboard:
vm-health-status.json
.Crea una dashboard personalizzata con il file di configurazione eseguendo questo comando:
gcloud monitoring dashboards create --config-from-file=vm-health-status.json
Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:
Seleziona Risorse > Dashboard e visualizza la dashboard denominata Stato di integrità delle VM on-prem di GKE.
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:
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.
Nella risorsa personalizzata Stackdriver, aggiungi il campo
resourceAttrOverride
nella sezionespec
: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
Salva le modifiche ed esci dall'editor della riga di comando.
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
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:
Apri la risorsa personalizzata Stackdriver in un editor a riga di comando:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
Aggiungi il campo
storageSizeOverride
nella sezionespec
. Puoi utilizzare il componentestackdriver-prometheus-k8s
ostackdriver-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 dimensione120Gi
.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
Salva ed esci dall'editor della riga di comando.
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
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:
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.
Aggiungi il campo
storageClassName
nella sezionespec
: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 Salva le modifiche.
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
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:
Nella console Google Cloud, seleziona Monitoring o utilizza il pulsante seguente:
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:
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
Elimina i carichi di lavoro della pipeline di monitoraggio:
kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete statefulset stackdriver-prometheus-k8s
Elimina la pipeline di monitoraggio PersistentVolumeClaim (PVC):
kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete pvc -l app=stackdriver-prometheus-k8s
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.
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.
Per attivare Prometheus e Grafana, imposta
enablePrometheus
sutrue
. Per disattivare Prometheus e Grafana, impostaenablePrometheus
sufalse
:apiVersion: addons.k8s.io/v1alpha1 kind: Monitoring metadata: labels: k8s-app: monitoring-operator name: monitoring-sample namespace: kube-system spec: channel: stable ... enablePrometheus: true
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:
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.
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
Da un browser web, apri
http://localhost:50000
.Nella pagina di accesso, inserisci
admin
per il nome utente e la password.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.
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:
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
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:
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
Per configurare Alertmanager, apporta modifiche ai campi in
spec.alertmanager.yml
. Al termine, salva il manifest modificato.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:
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
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
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:
- Se necessario, ottenere l'accesso a Grafana.
- Nella dashboard della home page, fai clic sul menu a discesa Home nell'angolo in alto a sinistra della pagina.
- Nel menu a destra, fai clic su Nuova dashboard.
- Nella sezione Nuovo riquadro, fai clic su Grafico. Viene visualizzata una dashboard del grafico vuota.
- Fai clic su Titolo del pannello, quindi su Modifica. Nel riquadro Grafico inferiore si apre la scheda Metriche.
- Dal menu a discesa Origine dati, seleziona utente. Fai clic su Aggiungi query e inserisci
foo
nel campo Cerca. - Fai clic sul pulsante Torna alla dashboard nell'angolo in alto a destra dello schermo. Viene visualizzata la dashboard.
- 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
:
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.
Per disattivare Prometheus e Grafana, imposta
enablePrometheus
sufalse
:apiVersion: addons.k8s.io/v1alpha1 kind: Monitoring metadata: labels: k8s-app: monitoring-operator name: monitoring-sample namespace: kube-system spec: channel: stable ... enablePrometheus: false
Salva le modifiche chiudendo la sessione di modifica.
Conferma che gli StatefulSet
prometheus-0
,prometheus-1
egrafana-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
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
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
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
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 destinazioneprometheus-io-pods
.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.