Brains4Cloud
ESEN
Practicar

Tema 10 de 10

D3 · Garantizar el funcionamiento de una solución en la nube

Diagnóstico, optimización y estado del servicio

El apartado 3.4 termina con el diagnóstico: encontrar cuellos de botella en las aplicaciones y en las consultas, y saber si un problema es tuyo o de Google Cloud con Personalized Service Health y Cloud Hub.

Qué herramienta usar

PreguntaHerramienta
¿Dónde se va el tiempo de una petición entre servicios?Cloud Trace
¿Qué parte del código gasta más CPU o memoria?Cloud Profiler
¿Qué excepciones están fallando y desde cuándo?Error Reporting
¿Qué consulta SQL es lenta o carga la base de datos?Query insights (Cloud SQL, Spanner)
¿Es una incidencia de Google Cloud?Personalized Service Health
¿Cómo está todo en conjunto?Cloud Hub

Cloud Trace

Sistema de trazas distribuidas que mide la latencia de las peticiones de extremo a extremo y señala qué dependencia causa los retrasos en una arquitectura de microservicios (también en aplicaciones de IA generativa). Funciona en Compute Engine, GKE, App Engine, Cloud Run y fuera de Google Cloud.

  • Automático en Cloud Run y Cloud Run functions para las peticiones HTTP entrantes y salientes, y en App Engine estándar.
  • Para instrumentar el código, Google recomienda OpenTelemetry en lugar de las bibliotecas cliente de Trace.
  • Trace Explorer muestra un mapa de calor de latencias y cada traza en detalle. Observability Analytics permite unir trazas y logs con SQL.
  • Los spans se guardan 30 días en el bucket _Trace. Un trace scope agrega trazas de varios proyectos.

Cloud Profiler

Perfilador estadístico de baja sobrecarga que recoge continuamente el uso de CPU y la asignación de memoria de las aplicaciones en producción y lo atribuye al código fuente que lo generó.

  • Lenguajes: Go, Java, Node.js y Python. Tipos de perfil según el lenguaje: tiempo de CPU, heap, heap asignado, contención, hilos y tiempo real.
  • Se añade un agente de perfilado específico del lenguaje a la aplicación. Funciona en Compute Engine, GKE, App Engine y fuera de Google Cloud.
  • Sobrecarga inferior al 5 % durante la recogida y normalmente inferior al 0,5 % en promedio, así que se puede dejar siempre activo.

Error Reporting

Agrega y muestra los errores de los servicios en ejecución en una interfaz centralizada para encontrar los errores nuevos o más frecuentes. Los errores se envían escribiéndolos en Cloud Logging con el formato adecuado o llamando a la API de Error Reporting. Necesita que los logs estén en buckets de logs. Para apps Android e iOS Google recomienda Firebase Crashlytics.

Query insights detecta y diagnostica problemas de rendimiento de las consultas: muestra la carga de la base por consulta, permite identificar una consulta o etiqueta problemática y examinar una traza de una consulta de ejemplo. Rastrea el origen por modelo, vista, controlador, ruta, usuario y host. Por defecto muestra consultas terminadas; las consultas activas se ven en tiempo real.

gcloud sql instances patch my-instance --insights-config-query-insights-enabled
CapacidadEnterpriseEnterprise Plus
Retención de métricas7 días30 días
Longitud máxima de la consulta4500 bytes100 KB
Planes de consulta por minuto20200
Eventos de espera, index advisor, terminar sesiones, ayuda con IANoSí

El index advisor de Cloud SQL para PostgreSQL analiza periódicamente las consultas habituales y recomienda nuevos índices con su comando CREATE INDEX, el tamaño estimado y el impacto en las consultas. Requiere la edición Enterprise Plus con query insights de Enterprise Plus; no funciona en réplicas de lectura. Rol para ver las recomendaciones: roles/cloudsql.viewer.

Además, los recomendadores de Cloud SQL Enterprise Plus detectan instancias que se beneficiarían de mantenimiento casi sin interrupción o de la caché de datos.

Detecta y diagnostica problemas de rendimiento de consultas y sentencias DML: comprueba si consultas ineficientes provocan un uso alto de CPU e identifica la consulta o etiqueta de petición responsable. Funciona en configuraciones regionales y multirregionales, no tiene coste adicional y guarda datos hasta 30 días.

Personalized Service Health

Identifica los eventos de salud de Google Cloud que afectan a tus proyectos (incidencias y su estado por producto y ubicación). Es el canal principal de información de incidencias para tus proyectos; el panel público Cloud Service Health es general.

AccesoPara qué
Panel Service HealthIncidencias activas y pasadas de tus proyectos u organización, también en el móvil
Service Health APIObtener eventos y sus detalles por proyecto u organización
AlertasAvisos basados en logs: nuevas incidencias, actualizaciones o incidencias de productos o ubicaciones concretos
LogsLos eventos se registran en Cloud Logging y se pueden exportar

Las vistas de organización agregan las incidencias de todos los proyectos. Permiso para listar eventos: servicehealth.events.list.

Cloud Hub

Vista centralizada de los datos de operaciones de tus aplicaciones y recursos, por proyecto o por aplicación de App Hub.

PáginaQué muestra
Health & troubleshootingAlertas abiertas de Cloud Monitoring, incidencias activas de Google Cloud y métricas de salud
DeploymentsDespliegues fallidos de Application Design Center y actualizaciones disponibles
Security & complianceHallazgos críticos y altos de Security Command Center y marcos de cumplimiento
OptimizationCoste total y tendencia, recursos más caros y los caros con menos uso
Quotas & reservationsCuotas por encima del 90 %, uso previsto de Compute Engine y reservas
MaintenanceMantenimientos próximos, en curso y terminados; algunos se pueden reprogramar
SupportCasos de soporte abiertos y tu paquete de soporte

Escenarios de examen

SituaciónRespuestaPor qué
Averiguar qué microservicio añade latencia a una peticiónCloud TraceLatencia de extremo a extremo por cada salto.
Descubrir qué función del código consume más CPU en producciónCloud ProfilerPerfilado continuo con poca sobrecarga.
Ver los errores nuevos y más frecuentes de una aplicación agrupadosError ReportingAgrega los errores de los servicios en ejecución.
Encontrar la consulta que satura una instancia de Cloud SQL para PostgreSQLQuery insightsCarga de la base por consulta, etiqueta y plan.
Recibir recomendaciones de índices para Cloud SQL para PostgreSQLIndex advisorRequiere Enterprise Plus y query insights de Enterprise Plus.
Saber si una incidencia de Google Cloud afecta a tus proyectos y recibir avisosPersonalized Service HealthPanel, API, alertas y logs de eventos.
Ver en una sola página alertas, incidencias, cuotas casi agotadas y mantenimientosCloud HubVista centralizada de operaciones.
Averiguar si consultas ineficientes causan CPU alta en SpannerQuery insights de SpannerSin coste adicional; 30 días de datos.

Trampas frecuentes del examen

❓ ¿Cloud Trace o Cloud Profiler para ver qué servicio retrasa una petición?

Cloud Trace. Profiler mide el consumo de CPU y memoria dentro del código de un servicio.

❓ ¿Cloud Profiler es solo para entornos de prueba?

No. Está pensado para producción: su sobrecarga suele estar por debajo del 0,5 %.

❓ ¿El index advisor está disponible en la edición Enterprise de Cloud SQL?

No. Requiere Enterprise Plus con query insights de Enterprise Plus, y no funciona en réplicas de lectura.

❓ ¿Hay que instrumentar Cloud Run para ver la latencia de las peticiones HTTP en Trace?

No para lo básico: Cloud Run y Cloud Run functions envían la latencia de las peticiones HTTP automáticamente.

❓ ¿El panel público de Cloud Service Health te dice qué incidencias afectan a tus proyectos?

No es lo mismo. Personalized Service Health muestra los eventos relevantes para tus proyectos y permite alertas.

❓ ¿Cuánto tiempo guarda Cloud Trace los spans?

30 días en el bucket _Trace.

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Los usuarios notan que el checkout de una aplicación de microservicios en GKE tarda 4 segundos. Necesitas saber cuál de los seis servicios que intervienen en la petición causa el retraso. ¿Qué usas?

¿Listo para poner a prueba "Diagnóstico, optimización y estado del servicio"?

Preguntas originales, cada una con su explicación.

Empezar un simulacro