Descripción general
En esta guía, se proporcionan lineamientos sobre qué supervisar y cómo supervisar una implementación de Apigee Hybrid. Está dirigido a administradores de clústeres híbridos y administradores de la organización.
Si eres nuevo en Google Cloud Monitoring, consulta en la documentación de Google Cloud Monitoring lo siguiente: Crea gráficos con el Explorador de métricas y Cómo funcionan las alertas.
Los clústeres de Apigee Hybrid proporcionan métricas de SLI (indicador de nivel de servicio) para ayudarte a comprender el rendimiento de los servicios de aplicaciones y sistemas en un momento determinado. Puedes ver una lista completa de las métricas disponibles.
Google Cloud Monitoring usa el Tipo de recurso para identificar cada métrica de SLI. Hay tres tipos de recursos comunes que se usan para todas las métricas de Apigee Hybrid.
k8s_container
para las métricas a nivel del sistema.Proxy
para las métricas del proxy de la API de Apigee.Target
para las métricas del destino de la API de Apigee
Los tipos de recursos tienen etiquetas comunes que se aplican a todas sus métricas asociadas. Por ejemplo, todas las métricas con el tipo de recurso k8s_container
tienen las etiquetas cluster_name
, pod_name
y container_name
disponibles para usar, además de las etiquetas de métricas. Se debe usar una combinación de etiquetas de tipo de recurso y etiquetas de métricas para supervisar el estado y el rendimiento del clúster de manera eficaz.
Umbral de alerta: En un mundo perfecto, los umbrales de alerta serán obvios y la documentación proporcionada enumerará los valores que deben activar las alertas. En realidad, es menos evidente para Apigee que defina cuál es el rendimiento aceptable y cuál es un uso peligroso de infraestructuras y servicios. Los valores del umbral de alerta variarán en gran medida según los patrones de tráfico y los acuerdos SLO/ANS específicos.
La optimización y determinación del límite de alertas es un proceso continuo que puede cambiar con el uso de la infraestructura y el servicio. Usa los umbrales de advertencia y crítico para notificaciones y alertas.
- En buen estado: El valor es menor que el umbral de advertencia.
- Preocupante: Un valor mayor que el umbral de advertencia, pero menor que el umbral crítico.
- Crítico: Valor >umbral crítico.
Los clientes deben usar las herramientas proporcionadas para determinar el umbral óptimo, ya sean los paneles de Cloud Monitoring que los clientes pueden crear con el MQL que se proporciona a continuación o las estadísticas de Apigee, a fin de identificar cómo se ve lo “normal” y, luego, ajustar los valores de acuerdo con los umbrales correspondientes.
La supervisión de clústeres híbridos se puede clasificar en cuatro grupos generales diferentes, por ejemplo, supervisión de Tráfico, Base de datos, Plano de control de Apigee e Infraestructura. En las siguientes secciones, se describen estos grupos en detalle:
Tráfico
Las métricas de SLI de destino y proxy de Apigee proporcionan latencias y recuentos de solicitudes y respuestas de destinos y proxies de API. La métrica de SLI de latencia de políticas de Apigee proporciona latencias de respuesta de políticas. Estas métricas de SLI proporcionan cobertura para supervisar el tráfico de la API de Apigee.
Porcentaje de solicitudes
Recuento de solicitudes de proxy
Caso de uso: Usa proxy/request_count para supervisar el recuento de solicitudes de los proxies. El gráfico proxy/request_count muestra el porcentaje de solicitudes para los proxies. Este gráfico es útil para identificar qué proxy recibe un porcentaje de solicitudes más alto, los patrones del porcentaje de solicitudes y cualquier aumento anormal en las llamadas de solicitud para un proxy en particular. Cualquier aumento anormal inesperado en el tráfico de API podría ser una preocupación de seguridad en torno a un bot o un ataque en los proxies de API. Del mismo modo, una gran disminución en la nube de tráfico general es señal de problemas con los clientes o la conectividad de los componentes ascendentes de Apigee.
Tipos de recursos | Proxy |
Métrica | Recuento de solicitudes de proxy |
Agrupar por | método y todas las etiquetas de tipo de recurso de Proxy |
Agregador | ponderada |
Consideración de la alerta | Eventos como alertas anormales de request_count spike/drop |
Alert threshold | Ninguna |
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/Proxy | metric 'apigee.googleapis.com/proxy/request_count' | align rate(1m) | every 1m | group_by [metric.method], [value_request_count_aggregate: aggregate(value.request_count)] |
Recuento de solicitudes de destino
Caso de uso: Usa target/request_count para supervisar el recuento de solicitudes de destino del entorno de ejecución de Apigee. El gráfico target/request_count muestra el porcentaje de solicitudes que recibió el destino de Apigee. Este gráfico puede ser útil para ver qué destino recibe un porcentaje de solicitudes más alto, un patrón del porcentaje de solicitudes y cualquier aumento anormal de las llamadas de solicitud para un destino en particular.
Tipos de recursos | Target |
Métrica | target/request_count |
Agrupar por | método y todas las etiquetas de tipo de recurso de Target |
Agregador | ponderada |
Consideración de la alerta | Eventos como alertas anormales de request_count spike/drop |
Alert threshold | Ninguna |
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/Target | metric 'apigee.googleapis.com/target/request_count' | align rate(1m) | every 1m | group_by [metric.method, metric.type, metric.endpoint], [value_request_count_aggregate: aggregate(value.request_count)] |
Tasa de errores
Recuento de respuestas de error del proxy
Caso de uso: Usa proxy/response_count para supervisar el porcentaje de respuestas de error del proxy. El gráfico proxy/response_count muestra el porcentaje de solicitudes del proxy de API. Este gráfico es útil para comprender qué proxy obtiene un porcentaje de errores de solicitud más alto o cualquier aumento de errores anormal en las llamadas de solicitud de un proxy en particular.
Tipos de recursos | Proxy |
Métrica | proxy/response_count |
Filtrar por | response_code != 200
|
Agrupar por | método, response_code , fault_code , fault_source , apigee_fault y todos los tipos de recursos de proxy etiquetas |
Agregador | ponderada |
Consideración de la alerta | Proporción de errores de respuestas del proxy: Recuento total de errores de respuesta / Recuento total de respuestas.
|
Alert threshold | Depende del SLO para la instalación. Las instalaciones de producción y de no producción pueden tener diferentes umbrales. Por ejemplo, para la producción, activa una notificación de evento si la tasa de errores 500 de respuesta del proxy es del 5% durante 5 minutos. |
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/Proxy | metric 'apigee.googleapis.com/proxy/response_count' | filter (metric.response_code != 200) | align rate(1m) | every 1m | group_by [metric.method, metric.response_code, metric.fault_code, metric.fault_source, metric.apigee_fault], [value_response_count_aggregate: aggregate(value.response_count)] |
|
Ejemplo de MQL de políticas de alertas de operación de Google Cloud:
fetch apigee.googleapis.com/Proxy::apigee.googleapis.com/proxy/response_count | { filter (metric.response_code == 500) ; ident } | group_by drop[metric.response_code ], sliding(5m), .sum | ratio | scale '%' | every (30s) | condition val() > 5'%' |
Recuento de respuestas de error del destino
Caso de uso: Usa target/response_count para supervisar la tasa de respuesta de errores del destino de la API. El gráfico target/response_count muestra el porcentaje de solicitudes del destino de la API. Este gráfico puede ser útil para identificar qué destino recibe un porcentaje de solicitudes más alto o cualquier aumento repentino anormal de errores en las llamadas de solicitud.
Tipos de recursos | Target |
Métrica | target/response_count |
Filtrar por | response_code != 200
|
Agrupar por | método y todas las etiquetas de tipo de recurso de Target |
Agregador | ponderada |
Consideración de la alerta | La proporción de errores de respuesta del proxy, por ejemplo: Recuento total de errores de respuesta / Recuento total de respuestas.
|
Alert threshold | Depende del SLO para la instalación. Por ejemplo, para la producción, activa una notificación de evento. Si la tasa de error de respuesta del destino es del 5% durante 3 minutos. |
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/Target | metric 'apigee.googleapis.com/target/response_count' | filter (metric.response_code != 200) | align rate(1m) | every 1m | group_by [metric.method, metric.type, metric.endpoint, metric.response_code], [value_response_count_aggregate: aggregate(value.response_count)] |
Latencias
Latencias de proxy
Caso de uso: Usa proxy/latencies para supervisar las latencias de todas las respuestas del proxy de API a una solicitud. El gráfico proxy/latencies_percentile puede ser útil para identificar la latencia en el proxy de API de Apigee en tu latencia general de solicitudes de proxy de API.
Tipos de recursos | Proxy |
Métrica | proxy/latencies |
Agrupar por | método y todas las etiquetas de tipo de recurso de Proxy |
Agregador | p99 (percentil 99) |
Consideración de la alerta | Valor alto del percentil de latencia p99. |
Alert threshold | Depende del SLO para la instalación. Por ejemplo, para la producción, activa una notificación de eventos si el valor del percentil de latecias de proxy p99 es de 5 segundos durante 5 minutos. |
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/Proxy | metric 'apigee.googleapis.com/proxy/latencies' | align delta(1m) | every 1m | group_by [metric.method], [value_latencies_percentile: percentile(value.latencies, 99)] |
Latencias de destino
Caso de uso: Usa target/latencies para supervisar las latencias de todas las respuestas de destino del proxy de API a una solicitud. El gráfico target/latencies identifica el tiempo total que el destino del proxy de la API de Apigee debe responder a una solicitud. Este valor no incluye la sobrecarga del proxy de la API de Apigee.
Tipos de recursos | Target |
Métrica | target/latencies |
Agrupar por | método, percentil y todas las etiquetas de tipo de recurso de Target |
Agregador | p99 (percentil 99) |
Consideración de la alerta | Valor alto del percentil de latencia p99. |
Alert threshold | Depende del SLO para la instalación. Por ejemplo, para la producción, activa una notificación de eventos si el valor del percentil de latencias de p99 del destino es de 5 segundos durante 5 minutos. |
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/Target | metric 'apigee.googleapis.com/target/latencies' | align delta(1m) | every 1m | group_by [metric.method], [value_latencies_percentile: percentile(value.latencies, 99)] |
Base de datos
Cassandra
El servicio de base de datos de Apigee Cassandra tiene varias métricas de SLI de Cassandra. Estas métricas de SLI pueden proporcionar una supervisión completa para el servicio de Apigee Cassandra. Como mínimo, junto con el uso de recursos de Cassandra (CPU, Memoria y volumen de disco), se debe supervisar la latencia de la solicitud de lectura y escritura del cliente para el estado del servicio de Cassandra.
Porcentaje de solicitudes de lectura de Cassandra
Caso práctico: La métrica de SLI cassandra/clientrequest_rate (con scope=Read) proporciona estadísticas sobre el porcentaje promedio de solicitudes de lectura de los servicios de Cassandra en cualquier tiempo determinado. Esta métrica ayuda a comprender las tendencias de nivel de actividad de solicitudes de lectura de los clientes.
Tipos de recursos | k8s_container |
Métrica | cassandra/clientrequest_rate |
Filtrar por | scope = Read y unit = OneMinuteRate |
Agrupar por | scope, unit y todas las etiquetas de tipo de recurso de k8s_container |
Agregador | ponderada |
Consideración de la alerta | Para cualquier problema posible o cambio significativo en los patrones de consulta de los clientes, haz lo siguiente: por ejemplo, una caída o un aumento repentino e inesperado en el porcentaje de solicitudes de lectura. |
Alert threshold | Ninguna |
Consulta de MQL del panel de Cloud Monitoring:
fetch k8s_container | metric 'apigee.googleapis.com/cassandra/clientrequest_latency' | filter (metric.scope == 'Read' && metric.unit == 'OneMinuteRate') | group_by 1m, [value_clientrequest_latency_mean: mean(value.clientrequest_latency)] | every 1m | group_by [metric.scope, metric.unit], [value_clientrequest_latency_mean_aggregate: aggregate(value_clientrequest_latency_mean)] |
Porcentaje de solicitudes de escritura de Cassandra
Caso práctico: La métrica de SLI cassandra/clientrequest_rate (con scope=Write) proporciona estadísticas sobre la tasa promedio de solicitud de escritura de servicios de Cassandra en cualquier momento determinado. Esta métrica ayuda a comprender las tendencias de nivel de actividad de la solicitud de escritura de los clientes.
Tipos de recursos | k8s_container |
Métrica | cassandra/clientrequest_rate |
Filtrar por | scope = Read y unit = OneMinuteRate |
Agrupar por | scope, unit y todas las etiquetas de tipo de recurso de k8s_container |
Agregador | ponderada |
Consideración de la alerta | Para cualquier problema posible o cambio significativo en los patrones de consulta de los clientes, por ejemplo, una caída o un aumento repentino e inesperado en las solicitudes de escritura que garantizan una investigación más detallada. |
Alert threshold | Ninguna |
Consulta de MQL del panel de Cloud Monitoring:
fetch k8s_container | metric 'apigee.googleapis.com/cassandra/clientrequest_latency' | filter (metric.scope == 'Write' && metric.unit == 'OneMinuteRate') | group_by 1m, [value_clientrequest_latency_mean: mean(value.clientrequest_latency)] | every 1m | group_by [metric.scope, metric.unit], [value_clientrequest_latency_mean_aggregate: aggregate(value_clientrequest_latency_mean)] |
Latencia de solicitudes de lectura de Cassandra
Caso de uso: La métrica de SLI cassandra/clientrequest_latency (con scope=Read) proporciona latencia de solicitud de lectura de los servicios de Cassandra (percentil 99, percentil 95 o percentil 75). Estas métricas ayudan con la vista general del rendimiento de Cassandra y pueden indicar cualquier cambio en los patrones de uso o un problema que se manifieste a lo largo del tiempo.
Tipos de recursos | k8s_container |
Métrica | cassandra/clientrequest_latency |
Filtrar por | scope = Read y unit = 99thPercentile |
Agrupar por | scope, unit y todas las etiquetas de tipo de recurso de k8s_container |
Agregador | ponderada |
Consideración de la alerta | Si el SLI de latencia de las solicitudes de lectura muestra de forma constante una latencia del percentil 99 que aumenta de forma continua. |
Alert threshold | Depende de tu SLO para los servicios de Cassandra. Por ejemplo, en producción, activa una notificación de evento si el valor de lectura clientrequest_latency de 99thPercentile es de 5 segundos durante 3 minutos. |
Consulta de MQL del panel de Cloud Monitoring:
fetch k8s_container | metric 'apigee.googleapis.com/cassandra/clientrequest_latency' | filter (metric.scope == 'Read' && metric.unit == '99thPercentile') | group_by 1m, [value_clientrequest_latency_mean: mean(value.clientrequest_latency)] | every 1m | group_by [metric.scope, metric.unit], [value_clientrequest_latency_mean_aggregate: aggregate(value_clientrequest_latency_mean)] |
Latencia de solicitudes de escritura de Cassandra
Caso de uso: La métrica de SLI cassandra/clientrequest_latency (con scope=Write) proporciona latencia de solicitud de escritura de los servicios de Cassandra (percentil 99, percentil 95 o percentil 75). Estas métricas ayudan con la vista general del rendimiento de Cassandra y pueden indicar cualquier cambio en los patrones de uso o un problema que se manifieste a lo largo del tiempo.
Tipos de recursos | k8s_container |
Métrica | cassandra/clientrequest_latency |
Filtrar por | scope = Write y unit = 99thPercentile |
Agrupar por | scope, unit y todas las etiquetas de tipo de recurso de k8s_container |
Agregador | ponderada |
Consideración de la alerta | Si el SLI de latencia de las solicitudes de escritura muestra de forma constante una latencia del percentil 99 que aumenta de forma continua. |
Alert threshold | Depende de tu SLO para los servicios de Cassandra. Por ejemplo, en producción, activa una notificación de evento si el valor de escritura clientrequest_latency de 99thPercentile es de 5 segundos durante 3 minutos |
Consulta de MQL del panel de Cloud Monitoring:
fetch k8s_container | metric 'apigee.googleapis.com/cassandra/clientrequest_latency' | filter (metric.scope == 'Write' && metric.unit == '99thPercentile') | group_by 1m, [value_clientrequest_latency_mean: mean(value.clientrequest_latency)] | every 1m | group_by [metric.scope, metric.unit], [value_clientrequest_latency_mean_aggregate: aggregate(value_clientrequest_latency_mean)] |
Plano de control de Apigee
Las métricas del SLI del servicio de Apigee Synchronizer proporcionan recuentos de solicitudes y respuestas y el plano de control de Apigee y el plano del entorno de ejecución híbrido. Se espera que las instancias de sincronización que se ejecutan en el plano del entorno de ejecución sondeen el plano de control con regularidad, descarguen los contratos y los pongan a disposición de las instancias de entorno de ejecución locales.
Porcentaje de solicitudes
Recuento de solicitudes ascendentes
Caso de uso: Las métricas upstream/request_count indican la cantidad de solicitudes que realiza el servicio del sincronizador al plano de control de Apigee.
Tipos de recursos | k8s_container |
Métrica | upstream/request_count |
Filtrar por | container_name = apigee-synchronizer y type = CONTRACT |
Agrupar por | method, type, container_name y todas las etiquetas de tipo de recurso de k8s_container |
Agregador | ponderada |
Consideración de la alerta | Usalo para anomalías de tráfico, como un pico anormal request_count o una alerta de caída. |
Alert threshold | Ninguna |
Consulta de MQL del panel de Cloud Monitoring:
fetch k8s_container | metric 'apigee.googleapis.com/upstream/request_count' | filter (resource.container_name == 'apigee-synchronizer') && (metric.type == 'CONTRACT') | align rate(1m) | every 1m | group_by [metric.method, metric.type, resource.container_name], [value_request_count_aggregate: aggregate(value.request_count)] |
Tasa de errores
Recuento de respuestas ascendentes
Caso de uso: La métrica de SLI upstream/response_count proporciona la cantidad de respuestas que los servicios del sincronizador recibieron del plano de control de Apigee. Este gráfico puede ser útil para identificar cualquier problema de conectividad o configuración entre el plano del entorno de ejecución híbrido de Apigee y el plano de control.
Tipos de recursos | k8s_container |
Métrica | upstream/request_count |
Filtrar por | method, response_type, container_name y todas las etiquetas de tipo de recurso k8s_container |
Agrupar por | |
Agregador | ponderada |
Consideración de la alerta | Si hay errores en las upstream/response_count para los que el plano de contro lde Apigee muestra códigos de respuesta que no son 200, se requiere una investigación adicional sobre esos errores. |
Alert threshold | Depende de tu SLO para los servicios de Cassandra. Por ejemplo, en producción, activa una notificación de evento si el sincronizador experimenta más de un error response_code cada tres minutos. |
Consulta de MQL del panel de Cloud Monitoring:
fetch k8s_container | metric 'apigee.googleapis.com/upstream/response_count' | filter (resource.container_name == 'apigee-synchronizer') && (metric.response_code != '200' && metric.type == 'CONTRACT') | align rate(1m) | every 1m | group_by [metric.method, metric.response_code, metric.type, resource.container_name], [value_response_count_aggregate: aggregate(value.response_count)] |
Infraestructura
GKE y otras plataformas de Kubernetes proporcionan métricas de SLI a nivel de sistema. Las etiquetas de métricas de SLI se pueden filtrar y agrupar para supervisar un contenedor específico y su uso de recursos. Para supervisar el estado y la disponibilidad de la infraestructura del clúster de Apigee Runtime, un administrador del clúster puede supervisar el uso común de recursos del contenedor y el Pod, como los recuentos de CPU, memoria, disco y reinicio del contenedor. Sigue la documentación de GKE para obtener más detalles sobre las métricas y etiquetas disponibles.
En la siguiente tabla, se enumeran algunos de los servicios y los contenedores que puedes supervisar para cada servicio.
Nombre del servicio | Nombre del contenedor |
---|---|
Cassandra | apigee-cassandra |
Message Processor(MP) | apigee-runtime |
Sincronizador | apigee-synchronizer |
Telemetría | apigee-prometheus-app apigee-prometheus-proxy apigee-prometheus-agg apigee-stackdriver-exporter |
Contenedores / Pods
Recuento de reinicios
Caso de uso: La métrica de SLI system.io/container/restart_count proporciona la cantidad de veces que se reinició un contenedor. Este gráfico puede ser útil para identificar si un contenedor falla o se reinicia con frecuencia. El contenedor de servicio específico se puede filtrar por etiquetas de métricas para la supervisión de contenedores de un servicio específico.
A continuación, se muestra el uso de la métrica kubernetes.io/container/restart_count para el contenedor de Cassandra. Puedes usar esta métrica para cualquiera de los contenedores de la tabla anterior.
Tipos de recursos | k8s_container |
Métrica | kubernetes.io/container/restart_count |
Filtrar por | namespace_name = apigee y container_name =~ .*cassandra.* |
Agrupar por | cluster_name, namespace_name, pod_name, container_name y todas las etiquetas de tipo de recurso de k8s_container |
Agregador | ponderada |
Consideración de la alerta | Si un contenedor se reinicia con frecuencia, se necesita una investigación más detallada para la causa raíz. Existen varias razones por las que un contenedor puede reiniciarse, como OOMKilled , el disco de datos lleno y los problemas de configuración, por nombrar algunos. |
Alert threshold | Depende del SLO para la instalación. Por ejemplo, para la producción, activa una notificación de evento, si un contenedor se reinicia más de 5 veces en 30 minutos. |
Consulta de MQL del panel de Cloud Monitoring:
fetch k8s_container | metric 'kubernetes.io/container/restart_count' | filter (resource.container_name =~ '.*cassandra.*' && resource.namespace_name == 'apigee') | align rate(1m) | every 1m | group_by [resource.cluster_name, resource.namespace_name, resource.pod_name, resource.container_name], [value_restart_count_aggregate: aggregate(value.restart_count)] |