Este documento descreve como monitorar um cluster do Serviço Gerenciado para Apache Kafka para garantir a confiabilidade das cargas de trabalho do Kafka.
Visão geral
Confiabilidade é a capacidade de um sistema de funcionar corretamente e de maneira consistente ao longo do tempo. Para cargas de trabalho baseadas no Kafka, a confiabilidade abrange os clusters do Kafka e os aplicativos cliente que produzem e consomem mensagens.
O Serviço Gerenciado para Apache Kafka foi projetado para tolerar e se recuperar de muitas falhas comuns. Por exemplo, o serviço coloca réplicas em zonas diferentes para tolerância a falhas e reinicia automaticamente os brokers com falha. No entanto, outros fatores que afetam a confiabilidade estão fora do controle direto do serviço, como:
- Configuração do cliente
- Carga no cluster, incluindo carga média e picos
- O número de partições e réplicas
- Configurações de tópicos, como retenção de mensagens
Para operações confiáveis, é importante monitorar o cluster para esses parâmetros operacionais e mantê-los dentro dos intervalos recomendados. As seções a seguir descrevem algumas métricas importantes para a confiabilidade.
Capacidade do cluster
Para evitar a sobrecarga de um cluster, monitore os seguintes indicadores. Crie alertas para notificar você se eles ficarem fora do intervalo recomendado por um período prolongado.
Utilização de CPU. Tente manter a utilização da CPU abaixo de 80% em todos os brokers.
Utilização do disco do broker: verifique se a utilização do disco do broker permanece abaixo de 80%.
Contador de partições. Tente manter menos de 4.000 partições por broker e menos de 100.000 partições por cluster.
Se o cluster estiver com pouca capacidade, considere as seguintes mitigações:
Aumente a contagem de vCPUs do cluster. Para mais informações, consulte Atualizar um cluster do Kafka.
Escalone verticalmente o cluster para adicionar mais brokers. Para informações sobre como o serviço provisiona brokers, consulte Provisionamento de brokers.
A tabela a seguir mostra consultas da linguagem de consulta do Prometheus (PromQL) para essas métricas que podem ser adicionadas a um painel personalizado do Cloud Monitoring.
| Indicador | Consulta do PromQL |
|---|---|
| Utilização 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}] ) |
| Utilização do disco do broker | 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}] ) |
| Tamanho do segmento por partição | # 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}] ) |
| Partições por broker | max by (resource_container, location, cluster_id, broker_index) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Partições por cluster | max by (resource_container, location, cluster_id) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
Desequilíbrio de partições
A carga desigual pode impedir que um cluster do Kafka atenda às solicitações do cliente corretamente. O número de partições atribuídas a um único broker precisa ficar dentro de cerca de 10% da contagem média de partições por broker. Procure outliers nessa métrica.
Para manter as partições equilibradas, considere ativar o rebalanceamento automático no escalonamento vertical do cluster.
A tabela a seguir mostra consultas do PromQL que podem ser usadas para monitorar desequilíbrios de partições.
| Indicador | Consulta do PromQL |
|---|---|
| Contagens de partições por broker | sum by (resource_container, location, cluster_id, broker_index) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Desequilíbrio de partições | 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 |
Replicação de partições
A replicação de dados é fundamental para garantir que as cargas de trabalho sejam tolerantes a falhas. Em um cluster íntegro, cada partição em um tópico tem o número total de réplicas, com base no fator de replicação configurado do tópico.
Use os indicadores a seguir para monitorar a replicação de partições:
Abaixo do mínimo de réplicas sincronizadas (ISRs). Se uma partição tiver menos ISRs sincronizadas do que o mínimo configurado (
min.insync.replicas), haverá um risco sério de perda de dados e disponibilidade. Normalmente, essa situação é causada por capacidade insuficiente em um ou mais brokers ou por falhas de infraestrutura.Partições com replicação insuficiente. Uma partição tem replicação insuficiente quando o número de réplicas sincronizadas fica abaixo do fator de replicação. Se uma partição permanecer com replicação insuficiente por dezenas de minutos, poderá haver um problema com os brokers, a capacidade de armazenamento ou algo mais.
Durante uma reinicialização contínua, os brokers ficam indisponíveis à medida que são reiniciados, causando replicação insuficiente temporária. Essa situação é esperada e não requer intervenção.
A tabela a seguir mostra consultas do PromQL que podem ser usadas para monitorar a replicação.
| Indicador | Consulta do PromQL |
|---|---|
| Abaixo do mínimo de ISRs | 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}] ) ) |
| Abaixo da replicação | 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}] ) ) |
A seguir
- Monitorar um cluster do Kafka
- Monitorar aplicativos cliente do Kafka
- Planejar o tamanho do cluster do Kafka
- Criar e gerenciar painéis personalizados