Quero atualizar o período de retenção do meu cluster do Amazon Managed Streaming for Apache Kafka (Amazon MSK).
Breve descrição
Use o período de retenção de dados do Amazon MSK para controlar a quantidade de dados que você armazena em seu cluster do MSK. Ao definir um período de retenção, é possível excluir automaticamente mensagens antigas desnecessárias, além de reduzir os custos de armazenamento e melhorar o desempenho do cluster.
Por padrão, o período de retenção de dados do Amazon MSK é de 7 dias. No entanto, é possível modificar o período de retenção conforme precisar. Se não configurar corretamente o período de retenção, o Amazon MSK pode não excluir seus dados no prazo correto.
O Apache Kafka divide as partições de tópicos em segmentos. O tamanho máximo padrão do segmento é 1 GB. Para alterar o tamanho máximo, atualize log.segment.bytes no nível do agente ou segment.bytes no nível do tópico. Para mais informações, consulte Atualizar configurações do agente e Atualizar a configuração padrão do tópico no site do Apache Kafka.
O Apache Kafka também usa log.roll.ms para controlar o ciclo de vida de um segmento. Essas configurações determinam a idade máxima de um segmento e o valor padrão é 168 horas. O Apache Kafka só cria novos segmentos quando segments.bytes ou log.roll.ms atingem o valor limite configurado. Depois que o Apache Kafka cria o novo segmento, os segmentos mais antigos ficam inativos. Em seguida, o MSK exclui segmentos mais antigos quando os novos atingem o valor de retention.ms configurado.
Observação: somente segmentos inativos podem ser excluídos.
Resolução
Para configurar seu período de retenção, modifique seu parâmetro retention.ms e sua configuração de segment.ms.
Por exemplo, se você definir o valor de segment.ms como 24hrs e retention.ms como 24hrs, o Amazon MSK excluirá os dados após 48 horas. O segmento fica inativo, dependendo se ele primeiro cumpre o período de 24 horas ou o limite de dados de 1 GB.
Para excluir os dados após 24 horas, reduza o valor padrão de segment.ms para 1hr e retention.ms para 23hrs. O Amazon MSK exclui os dados após 24 horas ou quando o segmento atinge o valor de tamanho configurado, o que ocorrer primeiro.
Para calcular o tamanho atual de todos os tópicos, execute o seguinte comando na interface de linha de comandos (CLI) do Apache Kafka no Amazon MSK:
./kafka-topics.sh --command-config client.properties --bootstrap-server $BK --list |
xargs -I{} sh -c "echo -n '{} - ' &&
./kafka-log-dirs.sh --command-config client.properties --bootstrap-server $BK --topic-list {} --describe |
grep '^{' |
jq '[ ..|.size? | numbers ] | add' |
numfmt --to iec " |
tee /tmp/topics-by-size.list
Observação: o comando anterior usa a CLI do Apache Kafka para listar todos os tópicos e, em seguida, calcula e retorna o tamanho de cada tópico.
Exemplo de saída:
BrandNewTopic - 0
CrossAccountMskTopic - 0
NewTopicwithNewInstance - 0
SameAccountMskTopic - 0
Test - 0
__amazon_msk_canary - 4.6M
__consumer_offsets - 33M
dataloss - 1.8K
datalossB1 - 999
provisioned - 0
Seguem as práticas recomendadas de utilização do armazenamento:
- Verifique seu valor log.segments.bytes ou log.roll.ms e reduza o valor do seu segmento. Se você definir um valor menor, poderá criar segmentos com frequência e desativar segmentos mais antigos.
- Ajuste os parâmetros segment.ms e segment.bytes para equilibrar a eficiência do armazenamento e o desempenho do agente. Não defina os parâmetros muito baixos, pois isso pode criar uma sobrecarga adicional de CPU e sobrecarregar os recursos do seu agente.
Observação: log.segments.bytes and log.roll.ms são configurações de segmento a nível do agente, enquanto segment.bytes e segment.ms são configurações de segmento a nível de tópico. As configurações a nível de tópico têm prioridade sobre as configurações a nível de agente.
Informações relacionadas
retention.ms no site do Apache Kafka