Questo documento mostra come configurare il logging e il monitoraggio per il sistema in Google Distributed Cloud (solo software) per VMware.
Per impostazione predefinita, Cloud Logging, Cloud Monitoring Google Cloud Managed Service per Prometheus è abilitato.
Per ulteriori informazioni sulle opzioni, vedi Panoramica di Logging e monitoraggio.
Risorse monitorate
Le risorse monitorate sono il modo in cui Google rappresenta risorse come cluster, nodi, pod e container. Per saperne di più, consulta Tipi di risorse monitorate documentazione.
Per eseguire query su log e metriche, devi conoscere almeno queste risorse etichette:
project_id
: ID progetto del progetto di logging-monitoraggio del cluster. Hai fornito questo valore nel campostackdriver.projectID
del file di configurazione del cluster.location
: una regione Google Cloud in cui archiviare Log di Cloud Logging e metriche di Cloud Monitoring. È un buon l'idea di scegliere una regione vicina al tuo data center on-premise. Hai fornito durante l'installazionestackdriver.clusterLocation
del file di configurazione del cluster.cluster_name
: il nome del cluster che hai scelto quando lo hai creato.Puoi recuperare il valore
cluster_name
per l'amministratore o per l'utente mediante l'ispezione della risorsa personalizzata di Stackdriver:kubectl get stackdriver stackdriver --namespace kube-system \ --kubeconfig CLUSTER_KUBECONFIG --output yaml | grep 'clusterName:'
dove
CLUSTER_KUBECONFIG
è il percorso dell'amministratore o il file kubeconfig del cluster utente per il quale è richiesto il nome del cluster.
Utilizzo di Cloud Logging
Non devi intraprendere alcuna azione per abilitare Cloud Logging per un cluster.
Tuttavia, devi specificare il progetto Google Cloud in cui vuoi visualizzare i log. Nella
di configurazione del cluster, specifichi il progetto Google Cloud
sezione stackdriver
.
Puoi accedere ai log utilizzando Esplora log nella console Google Cloud. Ad esempio, per accedere ai log di un container:
- Apri l'app Esplora log nella console Google Cloud per il tuo progetto.
- Per trovare i log di un container:
- Fai clic sulla casella a discesa Catalogo log in alto a sinistra e selezionando Container Kubernetes.
- Seleziona il nome del cluster, poi lo spazio dei nomi e infine un container dalla gerarchia.
Visualizzazione dei log per i controller nel cluster di bootstrap
Trova il nome del pod onprem-admin-cluster-controller / clusterapi-controllers
Per impostazione predefinita, il nome del cluster di tipo è
gkectl-bootstrap-cluster
."ADMIN_CLUSTER_NAME" resource.type="k8s_container" resource.labels.cluster_name="gkectl-bootstrap-cluster"
Modifica la query utilizzando il nome del pod trovato e recupera il log
resource.type="k8s_container" resource.labels.cluster_name="gkectl-bootstrap-cluster" resource.labels.pod_name="POD_NAME"
Utilizzo di Cloud Monitoring
Non devi intraprendere alcuna azione per abilitare Cloud Monitoring per un cluster.
Tuttavia, devi specificare il progetto Google Cloud in cui vuoi visualizzare le metriche.
Nel file di configurazione del cluster specifichi il progetto Google Cloud in
sezione stackdriver
.
Utilizzando Metrics Explorer,puoi scegliere tra oltre 1500 metriche. Per accedere a Metrics Explorer, segui questi passaggi:
Nella console Google Cloud, seleziona Monitoring o utilizza seguente pulsante:
Seleziona Risorse > Esplora metriche.
Puoi visualizzare le metriche anche nelle dashboard della console Google Cloud. Per informazioni sulla creazione di dashboard e sulla visualizzazione delle metriche, consulta Creazione delle dashboard.
Visualizzazione dei dati di monitoraggio a livello di parco risorse
Per una visione generale dell'utilizzo delle risorse del parco risorse mediante I dati di Cloud Monitoring, compresi i cluster Google Distributed Cloud, puoi utilizzare la panoramica di Google Kubernetes Engine nella console Google Cloud. Consulta Gestisci i cluster dalla console Google Cloud per saperne di più.
Limiti di quota predefiniti di Cloud Monitoring
Google Distributed Cloud Monitoring ha un limite predefinito di 6000 chiamate API al minuto per per ogni progetto. Se superi questo limite, le metriche potrebbero non essere visualizzate. Se hai bisogno di un limite di monitoraggio più elevato, richiedine uno tramite la console Google Cloud.
Utilizzo di Managed Service per Prometheus
Google Cloud Managed Service per Prometheus fa parte di Cloud Monitoring ed è disponibile per impostazione predefinita. I vantaggi di Managed Service per Prometheus includono seguenti:
Puoi continuare a utilizzare il monitoraggio basato su Prometheus esistente senza modificare gli avvisi e le dashboard di Grafana.
Se utilizzi sia GKE che Google Distributed Cloud, puoi utilizzare lo stesso PromQL per le metriche su tutti i tuoi cluster. Puoi anche utilizzare la scheda PROMQL in Esplora metriche nella console Google Cloud.
Abilitazione e disabilitazione di Managed Service per Prometheus
Managed Service per Prometheus è abilitato per impostazione predefinita in Google Distributed Cloud.
Per disabilitare Managed Service per Prometheus in un cluster:
Apri l'oggetto Stackdriver denominato
stackdriver
per la modifica:kubectl --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system \ edit stackdriver stackdriver
Aggiungi il blocco di caratteristiche
enableGMPForSystemMetrics
e impostalo sufalse
:apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: featureGates: enableGMPForSystemMetrics: false
Chiudi la sessione di modifica.
Visualizzare i dati delle metriche
Quando Managed Service per Prometheus è abilitato, le metriche per i componenti hanno un formato diverso per come vengono archiviati Cloud Monitoring:
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- kubelet e cadvisor
- kube-state-metrics
- node-exporter
Nel nuovo formato puoi eseguire query sulle metriche precedenti utilizzando PromQL o Monitoring Query Language (MQL).
Esempio di PromQL:
histogram_quantile(0.95, sum(rate(apiserver_request_duration_seconds_bucket[5m])) by (le))
Per utilizzare MQL, imposta la risorsa monitorata su prometheus_target
e aggiungi
Tipo Prometheus come suffisso della metrica.
Esempio di MQL:
fetch prometheus_target | metric 'kubernetes.io/anthos/apiserver_request_duration_seconds/histogram' | align delta(5m) | every 5m | group_by [], [value_histogram_percentile: percentile(value.histogram, 95)]
Configurazione delle dashboard di Grafana con Managed Service per Prometheus
Per utilizzare Grafana con i dati delle metriche di Managed Service per Prometheus, segui i passaggi descritti in Eseguire query con Grafana per autenticare e configurare un'origine dati Grafana per eseguire query sui dati da Managed Service per Prometheus.
Nella sezione sono disponibili anche dashboard di esempio Grafana anthos-campioni su GitHub. Per installare le dashboard di esempio, segui questi passaggi:
Scarica i file
.json
di esempio:git clone https://github.com/GoogleCloudPlatform/anthos-samples.git cd anthos-samples/gmp-grafana-dashboards
Se l'origine dati Grafana è stata creata con un nome diverso con
Managed Service for Prometheus
, modifica il campodatasource
in tutti i file.json
:sed -i "s/Managed Service for Prometheus/[DATASOURCE_NAME]/g" ./*.json
Sostituisci [DATASOURCE_NAME] con il nome dell'origine dati in Grafana che puntava al servizio
frontend
Prometheus.Accedi all'interfaccia utente di Grafana dal tuo browser e seleziona + Importa nel menu Dashboard.
Carica il file
.json
oppure copia e incolla i contenuti del file e seleziona Carica. Una volta caricati correttamente i contenuti del file, seleziona Importa. Facoltativamente, puoi anche modificare il nome e l'UID della dashboard prima dell'importazione.La dashboard importata dovrebbe caricarsi correttamente se Google Distributed Cloud e l'origine dati sono configurati correttamente. Ad esempio, il seguente screenshot mostra la dashboard configurata da
cluster-capacity.json
.
Risorse aggiuntive
Per ulteriori informazioni su Managed Service per Prometheus, consulta quanto segue:
Le metriche del piano di controllo GKE sono compatibili con PromQL
Utilizzo di Managed Service per Prometheus per le applicazioni utente su Google Distributed Cloud
Utilizzo di Prometheus e Grafana
A partire dalla versione 1.16, Prometheus e Grafana non sono disponibili nelle nuove i cluster creati automaticamente. Ti consigliamo di utilizzare Managed Service per Prometheus come un sostituto per il monitoraggio nel cluster.
Se esegui l'upgrade di un Cluster 1,15 con Prometheus e Grafana abilitati alla versione 1.16, Prometheus e Grafana continueranno a funzionare così come sono, ma non verranno aggiornati o hai ricevuto patch di sicurezza.
Se vuoi eliminare tutte le risorse Prometheus e Grafana dopo l'upgrade alla versione 1.16, esegui questo comando:
kubectl --kubeconfig KUBECONFIG delete -n kube-system \ statefulsets,services,configmaps,secrets,serviceaccounts,clusterroles,clusterrolebindings,certificates,deployments \ -l addons.gke.io/legacy-pg=true
In alternativa all'utilizzo dei componenti Prometheus e Grafana inclusi in versioni precedenti di Google Distributed Cloud, puoi passare versione community di Prometheus e Grafana.
Problema noto
Nei cluster utente, Prometheus e Grafana vengono disabilitati automaticamente durante upgrade. Tuttavia, i dati di configurazione e metriche non andranno persi.
Per aggirare il problema, dopo l'upgrade apri monitoring-sample
per
modifica e imposta enablePrometheus
su true
.
Accesso alle metriche di monitoraggio dalle dashboard di Grafana
Grafana visualizza le metriche raccolte dai tuoi cluster. Per visualizzare queste metriche, accedere alle dashboard di Grafana:
Ottieni il nome del pod Grafana in esecuzione nell'oggetto
kube-system
di un cluster utente spazio dei nomi:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get pods
dove [USER_CLUSTER_KUBECONFIG] è il campo kubeconfig del cluster utente .
Il pod Grafana dispone di un server HTTP in ascolto sulla porta localhost 3000 TCP. Inoltra una porta locale alla porta 3000 nel pod, in modo da poter visualizzare da un browser web.
Ad esempio, supponiamo che il nome del pod sia
grafana-0
. Per inoltrare la porta Da 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, vai a
http://localhost:50000
.Nella pagina di accesso, inserisci
admin
per nome utente e password.Se l'accesso viene eseguito correttamente, ti verrà chiesto 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 nella nell'angolo in alto a sinistra della pagina.
Per un esempio di utilizzo di Grafana, vedi Creare una dashboard 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 un dalla 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, vai a
http://localhost:50001
.
Modifica della configurazione di Prometheus Alertmanager
Puoi cambiare la configurazione predefinita di Prometheus Alertmanager modificando
del cluster utente monitoring.yaml
. Devi fare in questo modo se vuoi indirizzare
verso una destinazione specifica, invece di mantenerli nella dashboard. Tu
puoi scoprire come configurare Alertmanager in Prometheus
documentazione sulla configurazione.
Per modificare la configurazione di Alertmanager:
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 cluster:
kubectl apply --kubeconfig [USER_CLUSTER_KUBECONIFG] -f monitoring.yaml
Crea una dashboard Grafana
Hai eseguito il deployment di un'applicazione che espone una metrica e hai verificato che la metrica è esposto e verificato che Prometheus esegue lo scraping della metrica. Ora puoi aggiungere a livello di applicazione a una dashboard Grafana personalizzata.
Per creare una dashboard Grafana, segui questi passaggi:
- Se necessario, ottieni l'accesso a Grafana.
- Nella dashboard della home page, fai clic sul menu a discesa Home nella nell'angolo in alto a sinistra della pagina.
- Nel menu a destra, fai clic su Nuova dashboard.
- Nella sezione Nuovo riquadro, fai clic su Graph. Una dashboard grafico vuota .
- Fai clic su Titolo del riquadro e poi su Modifica. Si apre il riquadro Grafico in basso alla scheda Metriche.
- Nel menu a discesa Origine dati, seleziona utente. Fai clic su Aggiungi
query e inserisci
foo
nel campo di ricerca. - Fai clic sul pulsante Torna alla dashboard nell'angolo in alto a destra della schermo. Viene visualizzata la tua dashboard.
- Per salvare la dashboard, fai clic su Salva dashboard nell'angolo in alto a destra. della schermata. Scegli un nome per la dashboard, poi fai clic su Salva.
Disattivazione di Prometheus e Grafana
A partire dalla versione 1.16, Prometheus e Grafana non sono più controllati
il campo enablePrometheus
nell'oggetto monitoring-sample
.
Per informazioni dettagliate, consulta Utilizzo di Prometheus e Grafana.
Esempio: aggiunta di metriche a livello di applicazione a una dashboard Grafana
Le sezioni seguenti illustrano la procedura per aggiungere metriche per un'applicazione. Nella di questa sezione, completi le seguenti attività:
- Esegui il deployment di un'applicazione di esempio che espone una metrica denominata
foo
. - Verifica che Prometheus mostri ed esprima 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 cluster utente:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f pro-pod.yaml
Verifica che la metrica sia esposta e sottoposta a scraping
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 esponga 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. Ala una porta locale alla porta 9090 nel pod:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
Per verificare che Prometheus stia estraendo la metrica, vai a http://localhost:50003/targets, che dovrebbe portarti alla
prometheus-0
pod 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 visualizzare la metrica.
Configurazione della risorsa personalizzata di Stackdriver
Quando crei un cluster, Google Distributed Cloud crea automaticamente una risorsa personalizzata di Stackdriver. Puoi modificare le specifiche nella risorsa personalizzata per eseguire l'override dei valori predefiniti per CPU e memoria richieste e limiti per un componente di Stackdriver. Puoi anche eseguire l'override separato della dimensione e della classe di archiviazione predefinite.
Esegui l'override dei valori predefiniti per richieste e limiti per CPU e memoria
Per sostituire queste impostazioni predefinite:
Apri la risorsa personalizzata di Stackdriver in un editor della riga di comando:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
dove KUBECONFIG è il percorso del file kubeconfig per il cluster. Può essere un cluster di amministrazione o un cluster utente.
Nella risorsa personalizzata di 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 tutte le impostazioni predefinite esistenti limiti e richieste per il componente specificato. I seguenti componenti sono supportati daresourceAttrOverride
:- gke-metrics-agent/gke-metrics-agent
- stackdriver-log-forwarder/stackdriver-log-forwarder
- stackdriver-metadata-agent-cluster-level/metadata-agent
- node-exporter/node-exporter
- kube-state-metrics/kube-state-metrics
Un file di esempio ha il seguente aspetto
apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a resourceAttrOverride: gke-metrics-agent/gke-metrics-agent: requests: cpu: 110m memory: 240Mi limits: cpu: 200m memory: 4.5Gi
Salva le modifiche ed esci dall'editor della riga di comando.
Controlla l'integrità dei tuoi pod:
kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep gke-metrics-agent
Ad esempio, un pod integro ha il seguente aspetto:
gke-metrics-agent-4th8r 1/1 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 che hai appena modificato. Ad esempio,stackdriver-prometheus-k8s-0
La risposta è simile alla seguente:
Name: gke-metrics-agent-4th8r Namespace: kube-system ... Containers: gke-metrics-agent: Limits: cpu: 200m memory: 4.5Gi Requests: cpu: 110m memory: 240Mi ...
Override dei valori predefiniti per le dimensioni dello spazio di archiviazione
Per sostituire queste impostazioni predefinite:
Apri la risorsa personalizzata di Stackdriver in un editor della riga di comando:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
Aggiungi il campo
storageSizeOverride
nella sezionespec
. Puoi utilizzare il componentestackdriver-prometheus-k8s
oppurestackdriver-prometheus-app
. La sezione assume questo formato:storageSizeOverride: STATEFULSET_NAME: SIZE
Questo esempio utilizza l'oggetto StatefulSet
stackdriver-prometheus-k8s
e la dimensione120Gi
.apiVersion: addons.gke.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 tuoi 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 siano state sostituite in modo corretto.
kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME
La risposta è simile alla seguente:
Volume Claims: Name: my-statefulset-persistent-volume-claim StorageClass: my-storage-class Labels: Annotations: Capacity: 120Gi Access Modes: [ReadWriteOnce]
Esegui override dei valori predefiniti delle classi 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 richiesti dai componenti di logging e monitoraggio:
Apri la risorsa personalizzata di Stackdriver in un editor della riga di comando:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
dove KUBECONFIG è il percorso del 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
esegue l'override della classe di archiviazione predefinita esistente e si applica a tutti i componenti di logging e monitoraggio con volumi permanenti richiesti. Un file di esempio ha il seguente aspetto:apiVersion: addons.gke.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 tuoi 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, se utilizzi il set stateful
stackdriver-prometheus-k8s
, la risposta sarà simile alla seguente:Volume Claims: Name: stackdriver-prometheus-data StorageClass: my-storage-class Labels: Annotations: Capacity: 120Gi Access Modes: [ReadWriteOnce]
Disattiva le metriche ottimizzate
Per impostazione predefinita, gli agenti delle metriche in esecuzione nel cluster raccolgono e segnalano un set ottimizzato di metriche di container, kubelet e kube-state-metrics per Stackdriver. Se richiedono metriche aggiuntive, ti consigliamo di trovarne dall'elenco delle metriche di GKE Enterprise.
Ecco alcuni esempi di sostituzioni che potresti usare:
Metrica disabilitata | Sostituzioni |
---|---|
kube_pod_start_time |
container/uptime |
kube_pod_container_resource_requests |
container/cpu/request_cores container/memory/request_bytes |
kube_pod_container_resource_limits |
container/cpu/limit_cores container/memory/limit_bytes |
Per disabilitare l'impostazione predefinita delle metriche kube-state-metrics ottimizzate (non consigliato), segui questi passaggi:
Apri la risorsa personalizzata di Stackdriver in un editor della riga di comando:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
dove KUBECONFIG è il percorso del file kubeconfig per il cluster. Può essere un cluster di amministrazione o un cluster utente.
Imposta il campo
optimizedMetrics
sufalse
:apiVersion: addons.gke.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: false storageClassName: my-storage-class Salva le modifiche ed esci dall'editor della riga di comando.
Problema noto: condizione di errore di Cloud Monitoring
(ID problema 159761921)
In determinate condizioni, il pod di Cloud Monitoring predefinito
il cui deployment viene eseguito per impostazione predefinita in ogni nuovo cluster, può non rispondere.
Quando viene eseguito l'upgrade dei cluster, ad esempio, i dati di archiviazione possono diventare
danneggiato quando i pod in statefulset/prometheus-stackdriver-k8s
vengono riavviati.
Nello specifico, il monitoraggio del pod stackdriver-prometheus-k8s-0
può essere
catturati in un loop quando i dati danneggiati impediscono a prometheus-stackdriver-sidecar
scrivendo nello spazio di archiviazione del cluster PersistentVolume
.
Puoi diagnosticare e recuperare manualmente l'errore seguendo i passaggi riportati di seguito.
Diagnosi dell'errore di Cloud Monitoring
Se il pod di monitoraggio ha esito negativo, i log riporteranno 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"}
Recupero dall'errore di Cloud Monitoring
Per recuperare manualmente Cloud Monitoring:
Arresta il monitoraggio del cluster. Fai lo scale down dell'operatore
stackdriver
per impedire 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 gli oggetti PersistentVolumeClaim (PVC) della pipeline di monitoraggio:
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