Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Come posso recuperare i log del piano di controllo (control-plane) di Amazon EKS da CloudWatch Logs?
Desidero risolvere un problema di Amazon Elastic Kubernetes Service (Amazon EKS). Devo recuperare i log di CloudWatch dai componenti in esecuzione sul piano di controllo (control-plane) EKS.
Risoluzione
Prerequisito: per visualizzare gli eventi di log in Amazon CloudWatch Logs, devi attivare la registrazione del piano di controllo (control-plane) di Amazon EKS nel cluster. Per ulteriori informazioni, consulta Visualizza i log del piano di controllo (control-plane) del cluster.
Utilizza Amazon CloudWatch Logs Insights per accedere ai log del piano di controllo (control-plane) di Amazon EKS. Quindi esegui una query sui dati di log del piano di controllo (control-plane) di EKS.
Per ulteriori informazioni, consulta Analisi dei dati di log con CloudWatch Logs Insights.
Visualizza i log del piano di controllo (control-plane) di Amazon EKS
Completa i seguenti passaggi:
- Apri la console CloudWatch.
- Nel pannello di navigazione, scegli Log, quindi seleziona Log Insights.
- Nel menu Seleziona uno o più i gruppi di log, seleziona il gruppo di log del cluster su cui desideri eseguire query.
- Scegli Esegui per visualizzare i risultati.
Nota: per esportare i risultati come file .csv o copiare i risultati negli appunti, scegli Esporta risultati. Puoi modificare l'esempio di query per ottenere dati per un caso d'uso specifico.
Esempi di query per i casi d'uso più comuni di EKS
Vedi i seguenti esempi di query per i casi d'uso più comuni di EKS:
Nota: puoi salvare ed eseguire nuovamente le query in Amazon CloudWatch Logs Insights.
Individua le modifiche mutanti
Esegui questa query per individuare le modifiche mutanti apportate alla ConfigMap aws-auth:
fields @logStream, @timestamp, @message | filter @logStream like /^kube-apiserver-audit/ | filter requestURI like /\/api\/v1\/namespaces\/kube-system\/configmaps/ | filter objectRef.name = "aws-auth" | filter verb like /(create|delete|patch)/ | sort @timestamp desc | limit 50
Individua le richieste negate
Esegui questa query per individuare i messaggi che contengono uno stato denied:
fields @logStream, @timestamp, @message | filter @logStream like /authenticator/ | filter @message like "denied" | sort @timestamp asc | limit 50
Individua il nodo di un pod pianificato
Esegui questa query per individuare il nodo su cui è stato pianificato un pod:
fields @timestamp, @message | filter @logStream like /kube-scheduler/ | filter @message like "example-pod-name" | filter @message like "ip-" | sort @timestamp asc | limit 3
Nota: sostituisci example-pod-name con il nome del tuo pod.
Individua gli errori del server HTTP 5xx
Esegui questa query per individuare gli errori del server HTTP 5xx per le richieste del server API Kubernetes:
fields @logStream, @timestamp, responseStatus.code, @message | filter @logStream like /^kube-apiserver-audit/ | filter responseStatus.code >= 500 | limit 50
Risolvi i problemi di attivazione di un oggetto CronJob
Esegui questa query per individuare le chiamate API effettuate da cronjob-controller:
fields @logStream, @timestamp, @message | filter @logStream like /kube-apiserver-audit/ | filter user.username like "system:serviceaccount:kube-system:cronjob-controller" | display @logStream, @timestamp, @message, objectRef.namespace, objectRef.name | sort @timestamp desc | limit 50
Individua le chiamate API replicaset-controller
Esegui questa query per individuare le chiamate API effettuate da replicaset-controller:
fields @logStream, @timestamp, @message | filter @logStream like /kube-apiserver-audit/ | filter user.username like "system:serviceaccount:kube-system:replicaset-controller" | display @logStream, @timestamp, requestURI, verb, user.username | sort @timestamp desc | limit 50
Individua e conta i codici di risposta HTTP
Esegui questa query per contare il numero di codici di risposta HTTP per le chiamate effettuate al server API Kubernetes:
fields @logStream, @timestamp, @message |filter @logStream like /^kube-apiserver-audit/ | stats count(*) as count by responseStatus.code | sort count desc
Esempio di output:
responseStatus.code,count 200,35066 201,525 403,125 404,116 101,2
Nota: le statistiche dei codici di risposta del server API mostrano 35.066 occorrenze di richiesta riuscita per HTTP 200, 525 occorrenze di risorsa creata per HTTP 201, 125 occorrenze di richiesta vietata per HTTP 403, 116 occorrenze di errore non trovato per HTTP 404 e 2 occorrenze di richiesta di commutazione di protocollo per HTTP 101.
Individua le modifiche apportate a DaemonSets/Addons
Esegui questa query per individuare le modifiche apportate a DaemonSets/Addons nel namespace kube-system:
filter @logStream like /^kube-apiserver-audit/ | fields @logStream, @timestamp, @message | filter verb like /(create|update|delete)/ and strcontains(requestURI,"/apis/apps/v1/namespaces/kube-system/daemonsets") | sort @timestamp desc | limit 50
Individua le chiamate di patch, aggiornamento, creazione ed eliminazione
Esegui questa query per individuare tutte le chiamate di patch, aggiornamento, creazione ed eliminazione relative a una specifica distribuzione e a specifici pod di distribuzione:
`fields @timestamp,verb, objectRef.name, objectRef.resource, requestObject.message | filter objectRef.name like /example-deployment-name/ | filter objectRef.resource not like /serviceaccounts/ `| filter objectRef.resource not like /events/` | filter verb like /create|delete|patch|update/ | sort @timestamp asc`
Nota: sostituisci example-deployment-name con il nome della distribuzione. Nella query precedente, puoi rimuovere la riga | filter objectRef.resource not like /events/ per escludere eventi.
Identifica l'utente che ha eliminato un nodo o una risorsa
Esegui questa query per individuare l'utente che ha eliminato un nodo:
fields @logStream, @timestamp, @message | filter @logStream like /^kube-apiserver-audit/ | filter verb == "delete" and requestURI like "/api/v1/nodes" | sort @timestamp desc | limit 10
Esegui questa query per individuare l'utente che ha eliminato una risorsa, ad esempio una ConfigMap, un pod o una distribuzione:
fields @timestamp,verb, user.username, user.extra.arn.0, user.extra.canonicalArn.0 | filter objectRef.name like /aws-auth/ | filter verb like /delete/ | sort @timestamp asc
Nota: sostituisci aws-auth con il nome del tuo pod per individuare le chiamate di eliminazione per il tuo pod.
Individua la versione dell'immagine di una distribuzione
Esegui questa query per individuare la versione dell'immagine di una distribuzione:
fields @timestamp, verb, objectRef.name, objectRef.resource | filter objectRef.name like /example-deployment-name/ | filter @message like /image/ | filter objectRef.resource like /deployments/ | parse requestObject.spec.template.spec ‘image”:*,’ as image | sort @timestamp asc | limit 10000
Nota: sostituisci example-deployment-name con il nome della distribuzione.
Identifica gli eventi per un nodo specifico
Esegui questa query per individuare un nodo che non è stato aggiornato:
fields @timestamp, @message, @logStream | sort @timestamp asc | filter @message like "node example-node-name hasn't been updated for"
Nota: sostituisci example-node-name con il nome del tuo nodo.
Esegui questa query per verificare il tempo dell'ultima transizione per i parametri di un nodo specifico:
fields @timestamp | parse responseObject.status.conditions.0 "lastTransitionTime*" as MemoryPressure | parse responseObject.status.conditions.1 "lastTransitionTime*" as DiskPressure | parse responseObject.status.conditions.2 "lastTransitionTime*" as PIDPressure | parse responseObject.status.conditions.3 "lastTransitionTime*" as ReadyStatus | parse responseObject.status.conditions.3 "lastTransitionTime*" as Timepass | filter objectRef.name like /example-node-name/ | filter verb like /patch/ | filter @message like /lastTransitionTime/ | sort @timestamp asc
Nota: sostituisci example-node-name con il nome del tuo nodo.
Identifica l'utente che ha reso indisponibile un nodo
Esegui questa query per individuare l'utente che ha reso indisponibili nodi specifici o ha reso i nodi non pianificabili:
fields @timestamp, objectRef.name as node_name, verb,user.username, user.extra.sessionName.0 as name, requestObject.spec.unschedulable as unschedulable_flag| filter @logStream like /kube-apiserver-audit/ | filter @message like /example-node-IP/ | filter verb like /patch/ | filter requestObject.spec.unschedulable like /1/
Nota: sostituisci example-node-IP con l'indirizzo IP del tuo nodo.
Identifica il PoDip di un pod eliminato
Esegui questa query per trovare il podIP di un pod eliminato:
fields @timestamp,objectRef.name as pod, requestObject.status.podIP as podIP | filter @logStream like /kube-apiserver-audit/ | filter objectRef.name = "example-pod-name" | filter verb like /patch/ | filter ispresent(requestObject.status.podIP) | sort @timestamp asc
Nota: sostituisci example-pod-name con il nome del tuo pod.
Individua l'output dell'oggetto di un pod sconosciuto
Esegui questa query per visualizzare l'output della descrizione di un pod eliminato senza il nome del pod:
fields @timestamp, requestURI, requestObject.message | filter requestURI like '/api/v1/namespaces/example-namespace/events' | filter responseObject.involvedObject.name like /example-deployment-name/ | sort @timestamp asc
Nota: sostituisci example-deployment-name con il nome della tua distribuzione e example-namespace con il tuo namespace. Se non sono più presenti oggetti con lo stesso nome in più namespace, rimuovi la riga che contiene filter requestURI like.
Individua il nodo di un pod pianificato
Esegui questa query per individuare il nodo su cui hai pianificato un pod:
fields @timestamp, @message | filter @logStream like /kube-scheduler/ | filter @message like "example-pod-name" | filter @message like "ip-" | sort @timestamp asc | limit 3
Nota: sostituisci example-pod-name con il nome del tuo pod.
Verifica la presenza di un'API eviction
Nota: se le patch del sistema operativo di AWS Fargate hanno eliminato i pod o i nodi, nei log di controllo viene visualizzata l'API eviction.
Esegui questa query per verificare se nei log di controllo appare un'API eviction:
filter @logStream like /kube-apiserver-audit/ | fields @timestamp, user.username,user.extra.canonicalArn.0, responseStatus.code, responseObject.status, responseStatus.message | sort @timestamp asc | filter verb == "create" and objectRef.subresource == 'eviction'
Esegui questa query per individuare l'evento della chiamata API eviction:
fields @logStream, @timestamp, @message | sort @timestamp asc | filter user.username == "eks:node-manager" and requestURI like "eviction" and requestURI like "pod"
Individua l'ID attività di un pod Fargate
Esegui questa query per individuare l'ID attività del pod Fargate:
fields @timestamp, verb, responseObject.spec.providerID as InstanceID | filter @message like /example-fargate-node-IP/ | filter ispresent(responseObject.spec.providerID)
Nota: nella query precedente, sostituisci example-fargate-node-IP con l'indirizzo IP del tuo nodo Amazon Fargate.
Identifica un URL che riceve errori
Esegui questa query per individuare un URL che riceve più di un certo numero di errori 4## o 5##:
fields requestURI | filter @logStream like "kube-apiserver-audit-i" | filter count > example-filter-count | stats count(*) as count by requestURI, responseStatus.code | filter responseStatus.code >= 400 | sort count desc
Nota: sostituisci example-filter-count con il numero minimo di errori che l'output della query deve visualizzare.
Risolvi gli errori di webhook
Esegui questa query per individuare gli errori di webhook:
fields @timestamp, @message | filter @logStream like /kube-apiserver/ and @logStream not like /kube-apiserver-audit/ | filter @message like /failed calling webhook/ | sort @timestamp desc | stats count(*) by bin(1m)
Elenca i controlli dell'integrità del server API non superati
Esegui questa query per elencare i controlli dell'integrità del server API che non sono stati superati:
fields @message | sort @timestamp asc | filter @logStream like "kube-apiserver" | filter @logStream not like "kube-apiserver-audit" | filter @message like "healthz check failed"
Conta le richieste provenienti da oggetti Kubernetes e userAgent in CloudWatch Logs Insights
Esegui questa query per contare le richieste provenienti da oggetti Kubernetes e userAgent in CloudWatch Logs Insights:
fields @timestamp, @message, @logStream | filter @logStream like "kube-apiserver-audit" | display @logStream, requestURI, verb | stats count(*) as count by objectRef.resource, userAgent | sort count desc | display objectRef.resource, userAgent, count
Visualizza i log frequenti
Esegui questa query per visualizzare i log più frequenti:
fields @timestamp, @message, @logStream | filter @logStream not like /kube-apiserver-audit/ | parse @message "*] *" as loggingTimeStamp, loggingMessage | stats count(*) as count by loggingMessage | sort count desc
- Argomenti
- Containers
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 3 mesi fa
AWS UFFICIALEAggiornata un anno fa