En este documento, se describe cómo supervisar un clúster de Managed Service para Apache Kafka para garantizar la confiabilidad de tus cargas de trabajo de Kafka.
Descripción general
La confiabilidad es la capacidad de un sistema para funcionar correctamente y de manera constante a lo largo del tiempo. En el caso de las cargas de trabajo basadas en Kafka, la confiabilidad abarca tanto los clústeres de Kafka como las aplicaciones cliente que producen y consumen mensajes.
Managed Service para Apache Kafka está diseñado para tolerar y recuperarse de muchas fallas comunes. Por ejemplo, el servicio coloca réplicas en diferentes zonas para la tolerancia a errores y reinicia automáticamente los intermediarios que fallan. Sin embargo, otros factores que afectan la confiabilidad están fuera del control directo del servicio, como los siguientes:
- Configuración del cliente
- Carga en el clúster, incluidas la carga promedio y las cargas máximas
- La cantidad de particiones y réplicas
- Configuraciones de temas, como la retención de mensajes
Para lograr operaciones confiables, es importante supervisar el clúster en relación con estos parámetros operativos y mantenerlos dentro de los rangos recomendados. En las siguientes secciones, se describen algunas métricas clave que son importantes para la confiabilidad.
Supervisa la capacidad del clúster
Para evitar sobrecargar un clúster, supervisa los siguientes indicadores. Crea alertas para recibir notificaciones si se encuentran fuera del rango recomendado durante un período prolongado.
Uso de CPU Intenta mantener el uso de CPU por debajo del 80% en todos los intermediarios.
Uso del disco del agente: Asegúrate de que el uso del disco del agente se mantenga por debajo del 80%.
Tamaño del disco Como punto de partida seguro, recomendamos tener al menos
2*(segment.bytes)por partición y por agente. En la práctica, los requisitos reales de disco suelen ser considerablemente más bajos.De forma predeterminada, un archivo de segmento se cierra y se mueve al almacenamiento remoto después de 7 días. Es común que la mayoría de las particiones reciban menos de
segment.bytesdatos durante ese período, lo que significa que la mayoría de las particiones usan menos desegment.bytesde espacio en el disco. Antes de aumentar el tamaño del disco, supervisa su utilización a medida que creas más particiones en el clúster.Recuento de particiones. Intenta mantener menos de 4,000 particiones por agente y menos de 100,000 particiones por clúster.
Si tu clúster tiene poca capacidad, considera las siguientes mitigaciones:
Aumenta el recuento de CPU virtuales del clúster. Para obtener más información, consulta Actualiza un clúster de Kafka.
Escala verticalmente el clúster para agregar más intermediarios. Para obtener información sobre cómo el servicio aprovisiona los intermediarios, consulta Aprovisionamiento de intermediarios.
Aumenta el tamaño del disco del agente. Para obtener más información, consulta Cómo configurar el tamaño del disco del agente.
En la siguiente tabla, se muestran las consultas del lenguaje de consultas de Prometheus (PromQL) para estas métricas que puedes agregar a un panel de Cloud Monitoring personalizado.
| Indicador | Consulta de PromQL |
|---|---|
| Uso de CPU | rate( { "managedkafka.googleapis.com/cpu/core_usage_time", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/cpu/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Uso del disco del agente | max_over_time( { "managedkafka.googleapis.com/disk/used_bytes", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/disk/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Tamaño del segmento por partición | # Assumes that segment files are 225 MiB. Check your cluster configuration. 2*225*(1024*1024) * max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/disk/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Particiones por agente | max by (resource_container, location, cluster_id, broker_index) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Particiones por clúster | max by (resource_container, location, cluster_id) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
Supervisa el equilibrio de las particiones en los distintos agentes
Una carga desigual puede impedir que un clúster de Kafka atienda las solicitudes del cliente de forma adecuada. La cantidad de particiones asignadas a un solo agente debe mantenerse dentro del 10% de la cantidad promedio de particiones por agente. Busca valores atípicos en esta métrica.
Para mantener particiones equilibradas, considera habilitar el rebalanceo automático en el escalamiento vertical en tu clúster.
En la siguiente tabla, se muestran las consultas de PromQL que puedes usar para supervisar los desequilibrios de partición.
| Indicador | Consulta de PromQL |
|---|---|
| Recuentos de particiones por agente | sum by (resource_container, location, cluster_id, broker_index) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Desequilibrio de particiones | sum by (resource_container, location, cluster_id, broker_index) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) / on (resource_container, location, cluster_id) group_left avg by (resource_container, location, cluster_id) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) - 1 |
Supervisa la replicación de particiones
La replicación de datos es fundamental para garantizar que tus cargas de trabajo sean tolerantes a errores. En un clúster en buen estado, cada partición de un tema tiene la cantidad completa de réplicas, según el factor de replicación configurado del tema.
Usa los siguientes indicadores para supervisar la replicación de particiones:
Cantidad de ISR por debajo del mínimo. Si una partición tiene menos ISR sincronizados que el mínimo configurado (
min.insync.replicas), existe un riesgo grave de pérdida de datos y disponibilidad. Por lo general, esta situación se debe a una capacidad insuficiente en uno o más intermediarios o a fallas en la infraestructura.Particiones con replicación insuficiente Una partición tiene réplicas insuficientes cuando la cantidad de réplicas sincronizadas es inferior al factor de replicación. Si una partición permanece con una replicación insuficiente durante decenas de minutos, es posible que haya un problema con los agentes, la capacidad de almacenamiento o algún otro factor.
Durante un reinicio progresivo, los agentes dejan de estar disponibles a medida que se reinician, lo que provoca una replicación insuficiente temporal. Esta situación es esperada y no requiere intervención.
En la siguiente tabla, se muestran las consultas de PromQL que puedes usar para supervisar la replicación.
| Indicador | Consulta de PromQL |
|---|---|
| ISRs por debajo del mínimo | max by ( resource_container, location, cluster_id ) ( max_over_time( { "managedkafka.googleapis.com/broker/under_min_isr_partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| En proceso de replicación | max by ( resource_container, location, cluster_id ) ( min_over_time( { "managedkafka.googleapis.com/broker/under_replicated_partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[10m:${__interval}] ) ) |
¿Qué sigue?
- Supervisa un clúster de Kafka
- Supervisa las aplicaciones cliente de Kafka
- Planifica el tamaño de tu clúster de Kafka
- Crea y administra paneles personalizados