Monitoramento do Kafka com Elasticsearch, Kibana e Beats

Publicamos pela primeira vez sobre o monitoramento do Kafka com o Filebeat em 2016. Desde o lançamento da versão 6.5, a equipe do Beats dá suporte a um módulo do Kafka. Esse módulo automatiza grande parte do trabalho envolvido no monitoramento de um cluster do Kafka.

Neste post do blog, nosso foco será a coleta de logs e dados de metrics com os módulos do Kafka no Filebeat e no Metricbeat. Faremos a ingestão desses dados em um cluster hospedado no Elasticsearch Service e exploraremos os dashboards do Kibana fornecidos pelos módulos do Beats.

Este post usa o Elastic Stack 7.1. Um ambiente de exemplo é fornecido no GitHub.

Por que usar módulos?

Qualquer pessoa que já tenha trabalhado com os complexos filtros grok do Logstash apreciará a simplicidade na configuração da coleta de logs por meio de um módulo do Filebeat. Existem outros benefícios na utilização de módulos na sua configuração de monitoramento:

  • Configuração simplificada da coleta de logs e metrics
  • Documentos padronizados por meio do Elastic Common Schema
  • Modelos de índice sensatos, fornecendo tipos de dados de campo ideais
  • Dimensionamento apropriado do índice. Os Beats utilizam a API de rollover para ajudar a garantir tamanhos de shard saudáveis para os índices dos Beats.

Consulte a documentação para obter uma lista completa dos módulos compatíveis com o Filebeat e o Metricbeat.

Apresentação do ambiente

Nosso exemplo de configuração é composto pelo cluster do Kafka de três nós (kafka0, kafka1 e kafka2). Cada nó executa o Kafka 2.1.1, juntamente com o Filebeat e o Metricbeat para monitorar o nó. Os Beats são configurados por meio do Cloud ID para enviar dados para o nosso cluster do Elasticsearch Service. Os módulos do Kafka fornecidos com o Filebeat e o Metricbeat configurarão dashboards no Kibana para visualização. A título de observação, se quiser tentar isso no seu próprio cluster, você poderá executar uma versão de avaliação gratuita de 14 dias do Elasticsearch Service, que vem com todos os recursos e funcionalidades.

Configuração dos Beats

Em seguida, você vai configurar e iniciar os Beats.

Instale e habilite os serviços dos Beats

Seguiremos o Guia de introdução para instalar o Filebeat e o Metricbeat. Como estamos executando no Ubuntu, instalaremos os Beats por meio do repositório do APT.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install filebeat metricbeat
systemctl enable filebeat.service
systemctl enable metricbeat.service

Configure o Cloud ID da nossa implantação do Elasticsearch Service

Copie o Cloud ID do console Elastic Cloud e use-o para configurar a saída para o Filebeat e o Metricbeat.

Copiando e configurando o Cloud ID

CLOUD_ID=Kafka_Monitoring:ZXVyb3BlLXdlc...
CLOUD_AUTH=elastic:password
filebeat export config -E cloud.id=${CLOUD_ID} -E cloud.auth=${CLOUD_AUTH} > /etc/filebeat/filebeat.yml
metricbeat export config -E cloud.id=${CLOUD_ID} -E cloud.auth=${CLOUD_AUTH} > /etc/metricbeat/metricbeat.yml

Habilite os módulos do Kafka e do System no Filebeat e no Metricbeat

Em seguida, precisaremos habilitar os módulos do Kafka e do System para os dois Beats.

filebeat modules enable kafka system
metricbeat modules enable kafka system

Após a habilitação, podemos executar a configuração dos Beats. Isso configura os modelos de índice e os dashboards do Kibana usados pelos módulos.

filebeat setup -e --modules kafka,system
metricbeat setup -e --modules kafka,system

Inicie os Beats!

OK! Agora que está tudo configurado, vamos iniciar o Filebeat e o Metricbeat.

systemctl start metricbeat.service
systemctl start filebeat.service

Exploração dos dados de monitoramento

O dashboard de logging padrão mostra:

  • Exceções recentes encontradas pelo cluster do Kafka. As exceções são agrupadas pela classe de exceção e pelos detalhes completos da exceção
  • Uma visão geral da taxa de processamento do log por nível, juntamente com os detalhes completos do log.

Dashboard de logging padrão mostrando os dados de monitoramento

    O Filebeat ingere dados seguindo o Elastic Common Schema, permitindo filtrar até o nível do host.

    Gráfico de linhas mostrando o número de rastreamentos de pilha por classe

    O dashboard fornecido pelo Metricbeat mostra o estado atual de qualquer tópico no cluster do Kafka. Também temos um menu suspenso para filtrar o dashboard para um único tópico.

    Dashboard produzido pelo Metricbeat, fornecendo uma visão geral do cluster do Kafka

    As visualizações de deslocamento e defasagem dos consumidores mostram se os consumidores estão ficando para trás em tópicos específicos. Os deslocamentos por partição também mostram se uma única partição está ficando defasada.

    A configuração padrão do Metricbeat coleta dois conjuntos de dados: kafka.partition e kafka.consumergroup. Esses conjuntos de dados fornecem informações sobre o estado de um cluster do Kafka e seus consumidores.

    O conjunto de dados kafka.partition inclui detalhes completos sobre o estado das partições em um cluster. Esses dados podem ser usados para:

    • Criar dashboards mostrando como as partições são mapeadas para os nós do cluster
    • Alertar sobre partições sem réplicas sincronizadas
    • Acompanhar a atribuição das partições ao longo do tempo
    • Visualizar os limites de deslocamento das partições ao longo do tempo.

    Um documento completo do kafka.partition é mostrado abaixo.

    Documento completo do kafka.partition fornecendo todos os detalhes das partições de um cluster

    O conjunto de dados kafka.consumergroup captura o estado de um único consumidor. Esses dados podem ser usados para mostrar de quais partições um único consumidor está lendo e os deslocamentos atuais desse consumidor.

    Documento do kafka.consumergroup mostrando o estado de um único consumidor

    Resumo

    Os módulos do Filebeat e do Metricbeat fornecem um método simples para configurar o monitoramento de um cluster do Kafka. Em geral, os módulos do Beats simplificam a configuração da coleta de logs e metrics. Muitos módulos fornecem dashboards de exemplo para utilizar esses dados. O Filebeat e o Metricbeat também configuram os índices do Elasticsearch para alcançar o melhor desempenho. Baixe o Filebeat e o Metricbeat e comece a enviar seus logs e metrics para o Elasticsearch Service ou seu cluster local do Elasticsearch hoje mesmo.