- v1.15 (última)
- v1.14
- v1.13
- Lista de versiones admitidas
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- Versión 1.6
- v1.5
- Versión 1.4
- Versión 1.3
- v1.2
- v1.1
Versiones compatibles:
Versiones no compatibles:
apigeectl diagnostic
.
¿Qué datos del sistema se registran?
El recopilador de diagnósticos recoge los siguientes tipos de datos:
- Cambiar los niveles de registro.
- Jstack.
- Archivo YAML de configuración de POD.
- Salida de PS -ef.
- Captura TCP.
- Salida TOP.
¿Qué ocurre con los datos?
Cuando el recopilador de diagnósticos captura los datos, se suben a un segmento de almacenamiento de tu proyecto de Google Cloud. Puedes ver los datos almacenados en el navegador de Cloud Storage de Google Cloud Platform.
También puede compartir estos datos con el equipo de Asistencia de Google Apigee cuando cree una incidencia.
Requisitos para ejecutar el recopilador de diagnóstico
Antes de usar el recopilador de Diagnóstico, debes completar los siguientes requisitos previos:
Segmento de Google Cloud Storage
Crea un segmento de Google Cloud Storage con un nombre único en tu proyecto de Google Cloud. Puedes crear y gestionar contenedores con comandos de gcloud storage
o en el navegador de Cloud Storage de Google Cloud Platform.
Por ejemplo:
gcloud storage buckets create gs://apigee_diagnostic_data
Creating gs://apigee_diagnostic_data/...
Consulta las instrucciones en el artículo Crear segmentos de almacenamiento.
Cuenta de servicio
Crea una cuenta de servicio con el rol Administrador de Storage (roles/storage.admin
)
en tu proyecto y descarga el archivo de clave .json
de la cuenta de servicio.
La cuenta de servicio puede tener cualquier nombre único. En esta guía se usa "apigee-diagnostic
"
como nombre de la cuenta de servicio.
Por ejemplo:
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
Consulta los siguientes artículos:
- Crear y gestionar cuentas de servicio
- Crear y gestionar claves de cuentas de servicio.
- Información sobre los roles de Cloud Storage
Usar el recopilador de diagnóstico
La secuencia para usar el recopilador de Diagnóstico es la siguiente:
- Configura la stanza Diagnostic en tu archivo
overrides.yaml
para seleccionar el tipo de información, el contenedor de Apigee y los pods individuales de los que quieras obtener datos de diagnóstico. Consulta Configuraroverrides.yaml
para el recopilador de diagnóstico. - Ejecuta el recopilador de diagnóstico con el siguiente comando
apigeectl
.apigeectl diagnostic -f OVERRIDES_FILE
Donde OVERRIDES_FILE es la ruta a tu archivo
overrides.yaml
. - Consulta los registros:
- Obtén los pods del espacio de nombres
apigee-diagnostic
.kubectl get pods -n apigee-diagnostic
- Anota el pod cuyo nombre contenga
diagnostic-collector
. - Consulta los registros con el siguiente comando:
kubectl -n apigee-diagnostic logs -f POD_NAME
Donde POD_NAME es el nombre del pod del recopilador de diagnóstico.
También puedes ver los registros recogidos en el navegador de Google Cloud Platform: Cloud Storage.
- Obtén los pods del espacio de nombres
- Una vez que hayas recogido los datos, elimina el recopilador de diagnóstico. No puedes volver a ejecutarlo hasta que lo hayas eliminado.
apigeectl diagnostic delete -f OVERRIDES_FILE
Configurar overrides.yaml
para el recopilador de diagnóstico
Antes de ejecutar Diagnostic collector, debes configurarlo en el archivo overrides.yaml
.
Para ver una referencia completa de las propiedades de configuración de diagnostic
, consulta el artículo Referencia de la propiedad de configuración:
diagnostic
.
Propiedades obligatorias
Para que se ejecute el recolector de diagnósticos, son obligatorias las siguientes propiedades.
diagnostic.serviceAccountPath
: ruta al archivo de clave de la cuenta de servicio con el rol Administrador de almacenamiento que se indica en la sección Requisitos.diagnostic.operation
: especifica si se deben recoger todas las estadísticas o solo los registros.Los valores son
"ALL"
o"LOGGING"
.Si asignas el valor
"LOGGING"
adiagnostic.operation
, debes incluir las siguientes propiedades:diagnostic.bucket
: nombre del segmento de almacenamiento de Google Cloud en el que se depositarán sus datos de diagnóstico. Este es el segmento que has creado en la sección Requisitos.diagnostic.container
: especifica el tipo de pod del que estás recogiendo datos. Los valores pueden ser uno de los siguientes:Valor de container
Componente de Apigee Espacio de nombres de Kubernetes Nombre de pod de ejemplo en este contenedor apigee-cassandra
Cassandra apigee
apigee-cassandra-default-0
istio-proxy
Entrada de Istio istio-system
istio-ingressgateway-696879cdf8-9zzzf
apigee-mart-server
MART apigee
apigee-mart-hybrid-example-d89fed1-151-jj2ux-l7nlb
apigee-runtime
Message Processor apigee
apigee-runtime-hybrid-example-3b2ebf3-151-s64bh-g9qmv
apigee-synchronizer
Sincronizador apigee
apigee-synchronizer-hybrid-example-3b2ebf3-151-xx4z6cg78
apigee-udca
UDCA apigee
apigee-udca-hybrid-example-3b2ebf3-151-q4g2c-vnzg9
apigee-watcher
Watcher apigee
apigee-watcher-hybrid-example-d89fed1-151-cpu3s-sxxdf
diagnostic.namespace
: el espacio de nombres de Kubernetes en el que residen los pods de los que recoges datos. El espacio de nombres debe ser el correcto para el contenedor que especifiques condiagnostic.container
.diagnostic.podNames
: los nombres de los pods individuales de los que quieras recoger datos de diagnóstico. Por ejemplo:diagnostic: … podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2
Propiedades obligatorias solo cuando la operación se establece en LOGGING
Las siguientes propiedades solo son obligatorias cuando se ejecuta el recopilador de diagnóstico con diagnostic.operation
como LOGGING
.
diagnostic.loggerNames
: especifica por nombre de qué registradores se deben recoger datos. En la versión 1.6.0 de Apigee hybrid, el único valor admitido esALL
, lo que significa que se incluyen todos los registradores. Por ejemplo:diagnostic: … loggingDetails: loggerNames: - ALL
diagnostic.logLevel
: especifica la granularidad de los datos de registro que se van a recoger. En Apigee hybrid 1.6, solo se admiteFINE
.diagnostic.logDuration
: duración en milisegundos de los datos de registro recogidos. Un valor habitual es30000
.
Propiedades opcionales
Las siguientes propiedades son opcionales.
diagnostic.tcpDumpDetails.maxMsgs
: define el número máximo de mensajes detcpDump
que se van a recoger. Apigee recomienda un valor máximo que no supere1000
.diagnostic.tcpDumpDetails.timeoutInSeconds
: define la cantidad de tiempo en segundos que se debe esperar a quetcpDump
devuelva mensajes.diagnostic.threadDumpDetails.delayInSeconds
: el retraso en segundos entre la recogida de cada volcado de pila. Debe usarse condiagnostic.threadDumpDetails.iterations
.diagnostic.threadDumpDetails.iterations
: número de iteraciones de volcado de pila de subprocesos de jstack que se van a recoger. Debe usarse condiagnostic.threadDumpDetails.delayInSeconds
.
Ejemplo general
A continuación se muestra un ejemplo de stanza diagnostic
con todas las entradas posibles:
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
Casos prácticos habituales
En los siguientes ejemplos se muestra cómo configurar y usar Diagnostic collector en algunas situaciones habituales.
Latencia de proxy alta
En este caso, Apigee-runtime tarda mucho en procesar las solicitudes, lo que provoca que los clientes experimenten latencias altas en los proxies. Debes recoger la salida de Jstack y TOP.
- Selecciona dos pods de tiempo de ejecución.
- Crea tu stanza
diagnostic
con la siguiente estructura: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
- Después de configurar la sección
diagnostic
, ejecuta el recopilador de diagnóstico.apigeectl diagnostic -f OVERRIDES_FILE
- Recopila los registros y elimina el recopilador de diagnóstico.
apigeectl diagnostic delete -f OVERRIDES_FILE
Problemas de red o de conectividad
Debes ejecutar diagnósticos en apigee-runtime y en los pods de la pasarela de entrada.
- Selecciona dos pods de tiempo de ejecución.
- Crea tu stanza
diagnostic
con la siguiente estructura: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
- Después de configurar la sección
diagnostic
, ejecuta el recopilador de diagnóstico.apigeectl diagnostic -f OVERRIDES_FILE
- Recopila los registros y elimina el recopilador de diagnóstico.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Selecciona dos pods de la pasarela de entrada de Istio.
- Vuelve a configurar la estrofa
diagnostic
con los pods de entrada de 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
- Después de configurar la sección
diagnostic
, ejecuta el recopilador de diagnóstico.apigeectl diagnostic -f OVERRIDES_FILE
- Recopila los registros y elimina el recopilador de diagnóstico.
apigeectl diagnostic delete -f OVERRIDES_FILE
Los proxies devuelven errores inesperados o no se aplican los nuevos contratos
En este caso, debes cambiar los niveles de registro a depuración durante al menos 5 minutos o incluso 10 minutos, como en este ejemplo. De esta forma, aumentará la cantidad de registros, pero se registrará información útil. Ejecutarás Diagnostic collector dos veces: una en el tiempo de ejecución de Apigee y otra en el sincronizador de Apigee.
- Selecciona dos pods de tiempo de ejecución.
- Crea tu stanza
diagnostic
con la siguiente estructura: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
- Después de configurar la sección
diagnostic
, ejecuta el recopilador de diagnóstico.apigeectl diagnostic -f OVERRIDES_FILE
- Recopila los registros y elimina el recopilador de diagnóstico.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Selecciona dos pods de sincronización.
- Crea tu stanza
diagnostic
con la siguiente estructura: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
- Después de configurar la sección
diagnostic
, ejecuta el recopilador de diagnóstico.apigeectl diagnostic -f OVERRIDES_FILE
- Recopila los registros y elimina el recopilador de diagnóstico.
apigeectl diagnostic delete -f OVERRIDES_FILE