Questa pagina mostra come risolvere i problemi relativi alle dashboard di monitoraggio per Google Kubernetes Engine (GKE).
Le dashboard GKE non sono elencate in Cloud Monitoring
Per impostazione predefinita, il monitoraggio è attivo quando crei un cluster. Se non vedi le dashboard GKE quando visualizzi le dashboard fornite Google Cloud in Monitoring, Monitoring non è abilitato per i cluster nel progetto Google Cloud selezionato. Abilita il monitoraggio per visualizzare queste dashboard.
Nella mia dashboard non sono presenti risorse Kubernetes
Se non vedi risorse Kubernetes nella dashboard GKE, controlla quanto segue:
Progetto Google Cloud selezionato
Verifica di aver selezionato il progetto Google Cloud corretto dall'elenco a discesa nella barra dei menu della console Google Cloud per selezionare un progetto. Devi selezionare il progetto di cui vuoi visualizzare i dati.
Attività dei cluster
Se hai appena creato il cluster, attendi qualche minuto affinché venga compilato con i dati. Per maggiori dettagli, consulta la sezione Configurazione di logging e monitoraggio per GKE.
Intervallo di tempo
L'intervallo di tempo selezionato potrebbe essere troppo ristretto. Puoi utilizzare il menu Ora nella barra degli strumenti della dashboard per selezionare altri intervalli di tempo o definire un intervallo Personalizzato.
Autorizzazioni per visualizzare la dashboard
Se visualizzi uno dei seguenti messaggi di errore di autorizzazione negata quando visualizzi i dettagli del deployment di un servizio o le metriche di un progetto Google Cloud , devi aggiornare il tuo ruolo Identity and Access Management in modo da includere roles/monitoring.viewer o roles/viewer:
You do not have sufficient permissions to view this page
You don't have permissions to perform the action on the selected resources
Per maggiori dettagli, vai a Ruoli predefiniti.
Autorizzazioni del account di servizio del cluster e del nodo per scrivere dati in Monitoring e Logging
Se visualizzi tassi di errore elevati nella pagina API e servizi abilitati della console Google Cloud , il tuo account di servizio potrebbe non disporre dei seguenti ruoli:
roles/logging.logWriter
: nella console Google Cloud , questo ruolo è denominato Writer log. Per saperne di più sui ruoli Logging, consulta la guida al controllo dell'accesso Logging.roles/monitoring.metricWriter
: nella console Google Cloud , questo ruolo è denominato Monitoring Metric Writer. Per ulteriori informazioni sui ruoli di Monitoring, consulta la guida al controllo dell'accesso di Monitoring.roles/stackdriver.resourceMetadata.writer
: nella console Google Cloud , questo ruolo è denominato Stackdriver Resource Metadata Writer. Questo ruolo consente l'accesso in sola scrittura ai metadati delle risorse e fornisce esattamente le autorizzazioni necessarie agli agenti per inviare metadati. Per ulteriori informazioni sui ruoli di monitoraggio, consulta la guida controllo dell'accesso Monitoring.
Per elencare i service account, nella console Google Cloud vai a IAM e amministrazione, quindi seleziona Service account.
Impossibile visualizzare i log
Se non vedi i log nelle dashboard, controlla quanto segue:
L'agente è in esecuzione e integro
GKE 1.17 e versioni successive utilizzano Fluent Bit per acquisire i log. Fluent Bit è l'agente Logging che viene eseguito sui nodi Kubernetes. Per verificare che l'agente sia in esecuzione correttamente, segui questi passaggi:
Controlla se l'agente si sta riavviando eseguendo questo comando:
kubectl get pods -l k8s-app=fluentbit-gke -n kube-system
Se non sono presenti riavvii, l'output è simile al seguente:
NAME READY STATUS RESTARTS AGE fluentbit-gke-6zr6g 2/2 Running 0 44d fluentbit-gke-dzh9l 2/2 Running 0 44d
Controlla le condizioni di stato del pod eseguendo il comando seguente:
JSONPATH='{range .items[*]};{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status},{end}{end};' \ && kubectl get pods -l k8s-app=fluentbit-gke -n kube-system -o jsonpath="$JSONPATH" | tr ";" "\n"
Se il deployment è integro, l'output è simile al seguente:
fluentbit-gke-nj4qs:Initialized=True,Ready=True,ContainersReady=True,PodScheduled=True, fluentbit-gke-xtcvt:Initialized=True,Ready=True,ContainersReady=True,PodScheduled=True,
Controlla lo stato del pod, che può aiutarti a determinare se il deployment è integro eseguendo questo comando:
kubectl get daemonset -l k8s-app=fluentbit-gke -n kube-system
Se il deployment è integro, l'output è simile al seguente:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE fluentbit-gke 2 2 2 2 2 kubernetes.io/os=linux 5d19h
In questo output di esempio, lo stato desiderato corrisponde a quello attuale.
Se l'agente è in esecuzione e funziona correttamente in questi scenari e non visualizzi ancora tutti i log, è possibile che sia sovraccarico e che stia eliminando i log.
Agente sovraccarico che elimina i log
Uno dei possibili motivi per cui non vedi tutti i log è che il volume dei log del nodo sta sovraccaricando l'agente. La configurazione predefinita dell'agente Logging in GKE è ottimizzata per una velocità di 100 KiB al secondo per ogni nodo e l'agente potrebbe iniziare a eliminare i log se il volume supera questo limite.
Per rilevare se potresti raggiungere questo limite, cerca uno dei seguenti indicatori:
Visualizza la metrica
kubernetes.io/container/cpu/core_usage_time
con il filtrocontainer_name=fluentbit-gke
per verificare se l'utilizzo della CPU dell'agente Logging è vicino o pari al 100%.Visualizza la metrica
logging.googleapis.com/byte_count
raggruppata permetadata.system_labels.node_name
per verificare se un nodo raggiunge i 100 KiB al secondo.
Se riscontri una di queste condizioni, puoi ridurre il volume dei log dei nodi aggiungendo altri nodi al cluster. Se tutto il volume dei log proviene da un singolo pod, devi ridurre il volume da quel pod.
Per ulteriori informazioni su come esaminare e risolvere i problemi relativi al logging di GKE, consulta Risoluzione dei problemi di logging in GKE.
L'incidente non corrisponde a una risorsa GKE?
Se hai una condizione di criterio di avviso che aggrega le metriche in diverse risorse GKE, potrebbe essere necessario modificare la condizione del criterio per includere più etichette della gerarchia GKE per associare gli incidenti a entità specifiche.
Ad esempio, potresti avere due cluster GKE, uno per la produzione e uno per lo staging, ognuno con la propria copia del servizio
lilbuddy-2
. Quando la condizione del criterio di avviso aggrega una metrica tra i container in entrambi i cluster, la dashboard di GKE Monitoring non è in grado di associare questo incidente in modo univoco al servizio di produzione o al servizio di staging.
Per risolvere il problema, scegli come target del criterio di avviso un servizio specifico aggiungendo namespace
, cluster
e location
al campo Raggruppa per del criterio. Nella scheda evento per l'avviso, fai clic sul link Aggiorna policy di avviso
per aprire la pagina Modifica policy di avviso per la policy di avviso pertinente. Da
qui puoi aggiornare lacriterio di avvisoo con le informazioni aggiuntive in modo che
la dashboard possa trovare la risorsa associata.
Dopo aver aggiornato il criterio di avviso, la dashboard di monitoraggio GKE è in grado di associare tutti i futuri incidenti a un servizio univoco in un determinato cluster, fornendoti ulteriori informazioni per diagnosticare il problema.
A seconda del tuo caso d'uso, potresti voler filtrare in base ad alcune di queste etichette oltre ad aggiungerle al campo Raggruppa per. Ad esempio, se vuoi ricevere
avvisi solo per il cluster di produzione, puoi filtrare in base a cluster_name
.
Passaggi successivi
Se non riesci a trovare una soluzione al tuo problema nella documentazione, consulta la sezione Richiedere assistenza per ulteriore aiuto, inclusi consigli sui seguenti argomenti:
- Aprire una richiesta di assistenza contattando l'assistenza clienti cloud.
- Ricevere assistenza dalla community
ponendo domande su StackOverflow e utilizzando il tag
google-kubernetes-engine
per cercare problemi simili. Puoi anche unirti al canale Slack#kubernetes-engine
per ulteriore assistenza della community. - Apertura di bug o richieste di funzionalità utilizzando lo strumento di monitoraggio dei problemi pubblico.