- v1.12 (più recente)
- Versione 1.11
- Versione 1.10
- Elenco delle versioni supportate
- Versione 1.9
- Versione 1.8
- Versione 1.7
- Versione 1.6
- Versione 1.5
- Versione 1.4
- Versione 1.3
- Versione 1.2
- Versione 1.1
Versioni supportate:
Versioni non supportate:
apigeectl diagnostic
.
Quali dati di sistema vengono acquisiti?
Il raccoglitore Diagnostica acquisisce i seguenti tipi di dati:
- Modifica dei livelli di log.
- Jstack.
- YAML della configurazione dei pod.
- Output PS -ef.
- il dump TCP.
- Output TOP.
Cosa succede ai dati?
Quando il raccoglitore di diagnostica acquisisce i dati, questi vengono caricati in un bucket di archiviazione nel tuo progetto Google Cloud. Puoi visualizzare i dati archiviati nel browser Google Cloud Platform: Cloud Storage.
Facoltativamente, puoi scegliere di condividere questi dati con l'Assistenza Google Apigee quando crei un ticket di assistenza.
Prerequisiti per l'esecuzione del raccoglitore di diagnostica
Prima di utilizzare il raccoglitore di diagnostica, devi completare i seguenti prerequisiti:
Bucket Google Cloud Storage
Crea un bucket Google Cloud Storage con un nome univoco nel tuo progetto Google Cloud. Puoi creare e gestire i bucket con i comandi gsutil
o nel browser Cloud Storage di Google Cloud Platform.
Ad esempio:
gsutil mb gs://apigee_diagnostic_data
Creating gs://apigee_diagnostic_data/...
Per le istruzioni, consulta Creazione di bucket di archiviazione.
Account di servizio
Crea un account di servizio con il ruolo Amministratore archiviazione (roles/storage.admin
) nel progetto e scarica il file delle chiavi .json
dell'account di servizio.
L'account di servizio può avere qualsiasi nome univoco. Questa guida utilizza "apigee-diagnostic
" per il nome dell'account di servizio.
Ad esempio:
gcloud config set project ${PROJECT_ID}
gcloud iam service-accounts create apigee-diagnostic
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:apigee-diagnostic@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin"
gcloud iam service-accounts keys create ${PROJECT_ID}-apigee-diagnostic.json \ --iam-account=apigee-diagnostic@${PROJECT_ID}.iam.gserviceaccount.com
Vedi:
- Creazione e gestione degli account di servizio.
- Creazione e gestione delle chiavi degli account di servizio.
- Informazioni sui ruoli: ruoli di Cloud Storage.
Utilizzo del raccoglitore di diagnostica
La sequenza per utilizzare il raccoglitore di diagnostica è:
- Configura la stanza di diagnostica nel file
overrides.yaml
per selezionare il tipo di informazioni, il container Apigee e i singoli pod da cui vuoi i dati diagnostici. Consulta Configurazione dioverrides.yaml
per il raccoglitore di diagnostica. - Esegui il raccoglitore diagnostico con il seguente comando
apigeectl
.apigeectl diagnostic -f OVERRIDES_FILE
Dove OVERRIDES_FILE è il percorso del file
overrides.yaml
. - Controlla i log:
- Recupera i pod nello spazio dei nomi
apigee-diagnostic
.kubectl get pods -n apigee-diagnostic
- Prendi nota del pod il cui nome contiene
diagnostic-collector
- Controlla i log con il seguente comando:
kubectl -n apigee-diagnostic logs -f POD_NAME
Dove POD_NAME è il nome del pod del raccoglitore di diagnostica.
Puoi anche visualizzare i log raccolti nel browser Google Cloud Platform: Cloud Storage.
- Recupera i pod nello spazio dei nomi
- Dopo aver raccolto i dati, elimina il raccoglitore di diagnostica. Non puoi eseguirlo di nuovo finché non lo elimini.
apigeectl diagnostic delete -f OVERRIDES_FILE
Configurazione di overrides.yaml
per il raccoglitore di diagnostica in corso...
Prima di poter eseguire il raccoglitore di diagnostica, devi configurarlo nel
file overrides.yaml
.
Per un riferimento completo delle proprietà di configurazione di diagnostic
, consulta
Riferimento alla proprietà di configurazione:
diagnostic
.
Proprietà obbligatorie
Per l'esecuzione del raccoglitore di diagnostica, sono necessarie le seguenti proprietà.
diagnostic.serviceAccountPath
: il percorso di un file della chiave dell'account di servizio per l'account di servizio con il ruolo Amministratore Storage in Prerequisiti.diagnostic.operation
: specifica se raccogliere tutte le statistiche o solo i log.I valori sono:
"ALL"
o"LOGGING"
Se imposti
diagnostic.operation
su"LOGGING"
, sono obbligatorie le seguenti proprietà:diagnostic.bucket
: il nome del bucket Google Cloud Storage in cui verranno depositati i dati diagnostici. Questo è il bucket che hai creato in Prerequisiti.diagnostic.container
: specifica da quale tipo di pod stai acquisendo i dati. I valori possono essere uno dei seguenti:Valore container
Componente Apigee Spazio dei nomi Kubernetes Esempio di nome di pod in questo container apigee-cassandra
Cassandra apigee
apigee-cassandra-default-0
istio-proxy
Ingress Istio istio-system
istio-ingressgateway-696879cdf8-9zzzf
apigee-mart-server
MART apigee
apigee-mart-hybrid-example-d89fed1-151-jj2ux-l7nlb
apigee-runtime
processore di messaggi apigee
apigee-runtime-hybrid-example-3b2ebf3-151-s64bh-g9qmv
apigee-synchronizer
Sincronizzatore apigee
apigee-synchronizer-hybrid-example-3b2ebf3-151-xx4z6cg78
apigee-udca
UDCA (UDCA) apigee
apigee-udca-hybrid-example-3b2ebf3-151-q4g2c-vnzg9
apigee-watcher
Osservatore apigee
apigee-watcher-hybrid-example-d89fed1-151-cpu3s-sxxdf
diagnostic.namespace
: lo spazio dei nomi Kubernetes in cui risiedono i pod su cui stai raccogliendo i dati. Lo spazio dei nomi deve essere quello corretto per il container specificato condiagnostic.container
.diagnostic.podNames
: i nomi dei singoli pod su cui vuoi raccogliere dati diagnostici. Ad esempio:diagnostic: … podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2
Proprietà obbligatorie solo quando l'operazione è impostata su LOGGING
Le seguenti proprietà sono obbligatorie solo se l'esecuzione del raccoglitore di diagnostica con
diagnostic.operation
è LOGGING
.
diagnostic.loggerNames
: specifica in base al nome i logger da cui raccogliere i dati. Per Apigee versione ibrida 1.6.0, l'unico valore supportato èALL
, ovvero tutti i logger. Ad esempio:diagnostic: … loggingDetails: loggerNames: - ALL
diagnostic.logLevel
: specifica la granularità dei dati di logging da raccogliere. In Apigee hybrid 1.6, è supportato soloFINE
.diagnostic.logDuration
: la durata in millisecondi dei dati di log raccolti. Un valore tipico è30000
.
Proprietà facoltative
Le seguenti proprietà sono facoltative.
diagnostic.tcpDumpDetails.maxMsgs
: imposta il numero massimo di messaggitcpDump
da raccogliere. Apigee consiglia un valore massimo non superiore a1000
.diagnostic.tcpDumpDetails.timeoutInSeconds
: imposta il tempo in secondi di attesa prima chetcpDump
restituisca i messaggi.diagnostic.threadDumpDetails.delayInSeconds
: il ritardo in secondi tra la raccolta di ogni thread dump. Da utilizzare condiagnostic.threadDumpDetails.iterations
.diagnostic.threadDumpDetails.iterations
: il numero di iterazioni del dump del thread jstack da raccogliere. Da utilizzare condiagnostic.threadDumpDetails.delayInSeconds
.
Esempio generale
Di seguito è riportata una stanza diagnostic
di esempio che mostra tutte le voci possibili:
diagnostic: # required properties: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "apigee-runtime" namespace: "apigee" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 # required if operation is Logging loggingDetails: loggerNames: - ALL logLevel: FINE logDuration: 30000 # optional properties: tcpDumpDetails: maxMsgs: 10 timeoutInSeconds: 100 threadDumpDetails: iterations: 5 delayInSeconds: 2
Casi d'uso comuni
I seguenti esempi mostrano come configurare e utilizzare il raccoglitore di diagnostica in alcune situazioni comuni.
Latenza proxy elevata
In questo caso, il runtime di Apigee sta richiedendo molto tempo per elaborare le richieste, causando ai clienti la visualizzazione di latenze proxy elevate. Devi raccogliere l'output Jstack e TOP.
- Seleziona due pod di runtime.
- Crea la tua stanza
diagnostic
con la seguente struttura:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "apigee-runtime" namespace: "apigee" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 tcpDumpDetails: maxMsgs: 10 threadDumpDetails: iterations: 15 delayInSeconds: 1
- Dopo aver configurato la stanza
diagnostic
, esegui il raccoglitore di diagnostica.apigeectl diagnostic -f OVERRIDES_FILE
- Raccogli i log ed elimina il raccoglitore di diagnostica.
apigeectl diagnostic delete -f OVERRIDES_FILE
Problemi di rete / connettività
Devi eseguire la diagnostica su apigee-runtime e pod gateway in entrata.
- Seleziona due pod di runtime.
- Crea la tua stanza
diagnostic
con la seguente struttura:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "apigee-runtime" namespace: "apigee" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 tcpDumpDetails: maxMsgs: 1000
- Dopo aver configurato la stanza
diagnostic
, esegui il raccoglitore di diagnostica.apigeectl diagnostic -f OVERRIDES_FILE
- Raccogli i log ed elimina il raccoglitore di diagnostica.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Seleziona due pod dal gateway in entrata Istio.
- Riconfigura la stanza
diagnostic
con i pod in entrata Istio:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "istio-proxy" namespace: "istio-system" podNames: - istio-ingressgateway-696879cdf8-9zzzf - istio-ingressgateway-696879cdf8-6abc7 tcpDumpDetails: maxMsgs: 1000
- Dopo aver configurato la stanza
diagnostic
, esegui il raccoglitore di diagnostica.apigeectl diagnostic -f OVERRIDES_FILE
- Raccogli i log ed elimina il raccoglitore di diagnostica.
apigeectl diagnostic delete -f OVERRIDES_FILE
I proxy generano errori imprevisti o i nuovi contratti non vengono applicati
In questo caso, devi modificare i livelli dei log per eseguire il debug per almeno 5 minuti o anche per 10 minuti, come in questo esempio. Ciò aumenterà la quantità di log, ma verranno registrate informazioni utili. Eseguirai il raccoglitore di diagnostica due volte, una sul runtime Apigee e poi sul sincronizzatore Apigee.
- Seleziona due pod di runtime.
- Crea la tua stanza
diagnostic
con la seguente struttura:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "LOGGING" bucket: "diagnostics_data" namespace: "apigee" container: "apigee-runtime" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 loggingDetails: loggerNames: - ALL logLevel: FINE logDuration: 60000
- Dopo aver configurato la stanza
diagnostic
, esegui il raccoglitore di diagnostica.apigeectl diagnostic -f OVERRIDES_FILE
- Raccogli i log ed elimina il raccoglitore di diagnostica.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Seleziona due pod del sincronizzatore.
- Crea la tua stanza
diagnostic
con la seguente struttura:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "LOGGING" bucket: "diagnostics_data" namespace: "apigee" container: "apigee-synchronizer" podNames: - apigee-synchronizer-hybrid-example-3b2ebf3-150-xx4z-6cg78 - apigee-synchronizer-hybrid-example-3b2ebf3-150-xx4z-1a2b3 loggingDetails: loggerNames: - ALL logLevel: FINE logDuration: 60000
- Dopo aver configurato la stanza
diagnostic
, esegui il raccoglitore di diagnostica.apigeectl diagnostic -f OVERRIDES_FILE
- Raccogli i log ed elimina il raccoglitore di diagnostica.
apigeectl diagnostic delete -f OVERRIDES_FILE