A New Relic integração no host do Kafka reporta dados métricos e de configuração do seu serviço Kafka. Instrumentamos todos os elementos-chave do seu cluster, incluindo corretores (ZooKeeper e Bootstrap), produtores, consumidores e tópicos.
Para instalar a integração de monitoramento Kafka, você deve executar as seguintes etapas:
Se o Kafka não estiver em execução no Kubernetes ou no Amazon ECS, você poderá instalar o agente de infraestrutura em um host do sistema operacional Linux ou Windows ou em um host capaz de acessar remotamente o local onde o Kafka está instalado. De outra forma:
Se estiver executando
Se estiver executando
Java versão 8 ou superior.
JMX habilitado em todos os corretores.
Somente consumidores e produtores baseados em Java e com JMX habilitado.
O número total de tópicos de monitor deve ser inferior a 10.000.
Requisitos de conectividade
A integração precisa ser configurada e ter permissão para se conectar a:
Hosts listados em zookeeper_hosts no protocolo Zookeeper, usando o mecanismo de autenticação Zookeeper, se autodiscover_strategy estiver definido como zookeeper.
Hosts definidos em bootstrap_broker_host por meio do protocolo Kafka, usando os mecanismos de autenticação/transporte do corretor Kafka, se autodiscover_strategy estiver configurado como bootstrap.
Todos os corretores no cluster sobre o protocolo e porta Kafka, usando os mecanismos de autenticação/transporte dos corretores Kafka.
Todos os brokers no cluster através do protocolo e porta JMX, usando os mecanismos de autenticação/transporte especificados na configuração JMX dos brokers.
Todos os produtores/consumidores especificados em produtores e consumidor através do protocolo JMX e porta, caso queira monitoramento produtor/consumidor. As configurações JMX para o consumidor devem ser as mesmas dos corretores.
Importante
Por padrão, os grupos de segurança e seus equivalentes em outros provedores de nuvem, na AWS, não têm as portas necessárias abertas por padrão. JMX requer duas portas para funcionar: a porta JMX e a porta RMI. Eles podem ser definidos com o mesmo valor ao configurar a JVM para habilitar JMX e devem estar abertos para que a integração possa se conectar e coletar métricas dos corretores.
Prepare-se para a instalação
Kafka é um software complexo construído como sistemas distribuídos. Por esse motivo, é necessário garantir que a integração possa contatar todos os hosts e serviços necessários para que os dados sejam coletados corretamente.
Dada a natureza distribuída do Kafka, o número real e a lista de corretores geralmente não são fixados pela configuração e, em vez disso, são bastante dinâmicos. Por esse motivo, a integração Kafka oferece dois mecanismos para realizar a descoberta automática da lista de brokers do cluster: Bootstrap e Zookeeper. O mecanismo usado depende da configuração do cluster Kafka que está sendo monitorado.
Bootstrap
Com o mecanismo de inicialização, a integração utiliza um broker de inicialização para realizar a autodescoberta. Trata-se de uma corretora cujo endereço é bem conhecido e que será solicitada a quaisquer outras corretoras de que tenha conhecimento. A integração precisa ser capaz de entrar em contato com esse broker no endereço fornecido no parâmetro bootstrap_broker_host para que a descoberta de bootstrap funcione.
Zookeeper
Alternativamente, a integração Kafka também pode se comunicar com um servidor Zookeeper para obter a lista de corretores. Para fazer isso, a integração precisa ser fornecida com o seguinte:
A lista de hosts do Zookeeper, zookeeper_hosts, para contato.
Os segredos de autenticação adequados para conectar-se aos hosts.
Juntamente com a lista de corretores que conhece, o Zookeeper também anunciará quais mecanismos de conexão são suportados por cada corretor.
Você pode configurar a integração do Kafka para tentar diretamente um desses mecanismos com o parâmetro preferred_listener . Caso este parâmetro não seja fornecido, a integração tentará entrar em contato com os corretores com todas as configurações anunciadas até que um deles tenha sucesso.
Dica
A integração usará o Zookeeper apenas para descobrir corretores e não recuperará métricas dele.
Para listar corretamente os tópicos processados pelas corretoras, a integração precisa entrar em contato com as corretoras através do protocolo Kafka. Dependendo de como os intermediários estão configurados, isso pode exigir a configuração de SSL e/ou SASL para corresponder à configuração do intermediário. Os tópicos devem ter acesso DESCRIBE.
O Kafka integração consulta JMX, uma extensão Java padrão para troca de métricas em aplicativo Java. O JMX não está habilitado por padrão nos corretores Kafka e você precisa habilitá-lo para que a coleta de métricas funcione corretamente. O JMX requer que o RMI esteja habilitado e a porta RMI precisa ser configurada para a mesma porta do JMX.
Você pode configurar o JMX para usar autenticação de nome de usuário/senha, bem como SSL. Caso tal recurso tenha sido habilitado nas configurações JMX da corretora, é necessário configurar a integração adequadamente.
Se a descoberta automática estiver definida como inicialização, as configurações JMX definidas para o corretor de inicialização serão aplicadas a todos os outros corretores descobertos, portanto, a Porta e outras configurações devem ser as mesmas em todos os corretores.
Importante
Não recomendamos habilitar o acesso JMX/RMI anônimo e/ou não criptografado em segmentos de rede públicos ou não confiáveis porque isso representa um grande risco de segurança.
O deslocamento dos grupos de consumidores e consumidores dos tópicos, bem como o lag, podem ser recuperados como um KafkaOffsetSample com a sinalização CONSUMER_OFFSET=true, mas devem estar em uma instância separada porque quando esta sinalização for ativada a instância não coletará outras amostras.
Produtores e consumidores escritos em Java também podem ser monitorados para obter metadados mais específicos através do mesmo mecanismo (JMX). Isso irá gerar KafkaConsumerSamples e KafkaProducerSamples. O JMX precisa ser habilitado e configurado nos aplicativos onde não está habilitado por padrão.
Produtores e consumidores não-Java não suportam JMX e, portanto, não são suportados pela integração Kafka.
Instale e ative a integração
Para instalar a integração do Kafka, siga as instruções para seu ambiente:
Instalação Linux
Siga as instruções para instalar uma integração e substitua a variável INTEGRATION_FILE_NAME por nri-kafka.
Altere o diretório para a pasta integração configuração executando:
bash
$
cd /etc/newrelic-infra/integrations.d
Copie o arquivo de configuração de amostra executando:
Existem diversas formas de configurar a integração, dependendo de como ela foi instalada:
Se habilitado através
Se habilitado através
Se instalado no host, edite a configuração no arquivo de configuração YAML da integração, kafka-config.yml. A configuração no formato YAML de uma integração é onde você pode colocar as credenciais de login necessárias e configurar como os dados são coletados. Quais opções você altera dependem de sua configuração e preferência. O arquivo de configuração possui configurações comuns aplicáveis a todas as integrações como interval, timeout, inventory_source. Para ler tudo sobre essas configurações comuns, consulte nosso documento Formato de configuração .
Importante
Se você ainda estiver usando nossos arquivos de configuração e definição de legado, consulte este documento para obter ajuda.
Tal como acontece com outras integração, um arquivo de configuração kafka-config.yml pode ter várias instâncias da integração coletando diferentes métricas de corretores, consumidores e produtores. Você pode ver exemplos de configuração com uma ou múltiplas instâncias nos arquivos de amostrakafka-config.yml
As configurações específicas relacionadas ao Kafka são definidas usando a seção env de cada instância no arquivo de configuração kafka-config.yml . Essas configurações controlam a conexão com seus Brokers, Zookeeper e JMX, bem como outras configurações e recursos de segurança. A lista de configurações válidas está descrita nas definições de configuração do Kafka.
A integração tem dois modos de operação em cada instância, que são mutuamente exclusivos, que podem ser configurados com o parâmetro CONSUMER_OFFSET :
Coleta de compensação do consumidor: defina CONSUMER_OFFSET = true para coletar KafkaOffsetSample.
Esses modos são mutuamente exclusivos porque a coleta de compensação do consumidor leva muito tempo para ser executada e possui requisitos de alto desempenho, para coletar os dois grupos de Amostras, defina duas instâncias, uma com cada modo.
Os valores para estas configurações podem ser definidos de diversas maneiras:
Adicionando o valor diretamente no arquivo de configuração. Esta é a forma mais comum.
Usando gerenciamento de segredos. Use isto para proteger informações confidenciais, como senhas que seriam expostas em texto simples no arquivo de configuração. Para obter mais informações, consulte gerenciamento de segredos.
Monitoramento Offset
Ao definir CONSUMER_OFFSET = true, por padrão, serão coletadas apenas as métricas dos grupos de consumidores com consumidor ativo (e métrica de consumo). Para coletar também a métrica de grupos de consumidores com consumidores inativos deve-se definir INACTIVE_CONSUMER_GROUP_OFFSET como true.
Quando um grupo de consumidores está monitorando mais de um tópico, é valioso ter métricas de grupo de consumidores separadas por tópicos, principalmente se um dos tópicos tiver consumidor inativo, pois assim é possível identificar em qual tópico o grupo de consumidores está tendo lag e se há são consumidores ativos para esse grupo e tópico de consumidores.
Para obter as métricas do grupo de consumidores separadas por tópico, você deve definir CONSUMER_GROUP_OFFSET_BY_TOPIC como true (o padrão é false)