Lineamientos de supervisión de clústeres

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.
  • ProxyV2 para las métricas del proxy de la API de Apigee.
  • TargetV2 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 proxyv2/request_count para supervisar el recuento de solicitudes de los proxies. El gráfico proxyv2/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 ProxyV2
Métrica proxyv2/request_count
Agrupar por método y todas las etiquetas de tipo de recurso de ProxyV2
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/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/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 targetv2/request_count para supervisar el recuento de solicitudes de destino del entorno de ejecución de Apigee. El gráfico targetv2/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 TargetV2
Métrica targetv2/request_count
Agrupar por método y todas las etiquetas de tipo de recurso de TargetV2
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/TargetV2
| metric 'apigee.googleapis.com/targetv2/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 práctico: Usa proxyv2/response_count para supervisar el porcentaje de respuestas de error del proxy. El gráfico proxyv2/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 ProxyV2
Métrica proxyv2/response_count
Filtrar por response_code != 200

Usa una regex para excluir todos los response_code 2xx y 3xx, por ejemplo:

"response_code !=~ 1.*| 2.*|3.*"
Agrupar por method, response_code, fault_code, fault_source, apigee_fault y todas las etiquetas de tipos de recursos de ProxyV2
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.
  • Total de errores de respuesta = Suma de proxyv2/response_count con filtro response_code != 200
  • Recuento total de respuestas = Suma de proxyv2/response_count
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/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/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/ProxyV2::apigee.googleapis.com/proxyv2/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 práctico: Usa targetv2/response_count para supervisar la tasa de respuesta de errores del destino de la API. El gráfico targetv2/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 TargetV2
Métrica targetv2/response_count
Filtrar por response_code != 200

Usa una regex para excluir todos los response_code 2xx y 3xx, por ejemplo:

"response_code !=~ 1.*| 2.*|3.*"
Agrupar por método y todas las etiquetas de tipo de recurso de TargetV2
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.
  • Total de errores de respuesta = Suma de targetv2/response_count con filtro response_code != 200
  • Recuento total de respuestas = Suma de targetv2/response_count
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/TargetV2
| metric 'apigee.googleapis.com/targetv2/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

Percentil de latencias de proxy

Caso de uso: Usa proxyv2/latencies_percentile para supervisar el percentil de latencia (p50, p90, p95 y p99) de todas las respuestas del proxy de API a una solicitud. El gráfico proxyv2/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 ProxyV2
Métrica proxyv2/latencies_percentile
Filtrar por percentile = p99
Agrupar por método, percentil y todas las etiquetas de tipo de recurso de ProxyV2
Agregador p99 (percentil 99)
Consideración de la alerta Valor alto de p66 latencies_percentile.
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 proxy p99 latencies_percentile es de 5 segundos durante 5 minutos.
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.method, metric.percentile],
  [value_latencies_percentile_mean_percentile:
     percentile(value_latencies_percentile_mean, 99)]

Percentil de latencias de destino

Caso de uso: Usa targetv2/latencies_percentile para supervisar el percentil de latencia (p50, p90, p95 y p99) de todas las respuestas de destino del proxy de API a una solicitud. El gráfico targetv2/latencies_percentile 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 TargetV2
Métrica targetv2/latencies_percentile
Filtrar por percentile = p99
Agrupar por método, percentil y todas las etiquetas de tipo de recurso de TargetV2
Agregador p99 (percentil 99)
Consideración de la alerta Valor alto de p66 latencies_percentile.
Alert threshold Depende del SLO para la instalación. Por ejemplo, para la producción, activa una notificación de eventos si el valor de p99 latencies_percentile del destino es de 5 segundos durante 5 minutos.
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.method, metric.percentile],
  [value_latencies_percentile_mean_percentile:
     percentile(value_latencies_percentile_mean, 99)]

Percentil de latencias de políticas

Caso de uso: Usa el policyv2/latencies_percentile para supervisar el percentil de latencia de procesamiento (p50, p90, p95 y p99) de todas las políticas de Apigee. El gráfico policyv2/latencies_percentile puede ser útil para identificar la latencia en la política de la API de Apigee en relación con la latencia general de solicitudes del proxy de API del cliente.

Tipos de recursos ProxyV2
Métrica proxyv2/latencies_percentile
Filtrar por percentile = p99
Agrupar por método, percentil y todas las etiquetas de tipo de recurso de ProxyV2
Agregador p99 (percentil 99)
Consideración de la alerta Valor alto de p66 latencies_percentile.
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 proxy p99 latencies_percentile es de 5 segundos durante 5 minutos.
Consulta de MQL del panel de Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/policyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.policy_name, metric.percentile],
  [value_latencies_percentile_mean_aggregate:
     aggregate(value_latencies_percentile_mean)]

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 Usa esto para anomalías en el tráfico, como un aumento repentino anormal de request_count o una alerta de disminución.
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)]