Esta solução auxilia na configuração da coleta de métricas prontas para uso com agentes do CloudWatch para workloads do Kafka (agentes, produtores e consumidores) que estão sendo executadas em instâncias do EC2. Além disso, a solução ajuda na configuração de um painel do CloudWatch configurado previamente. Para obter informações gerais sobre todas as soluções de observabilidade do CloudWatch, consulte Soluções de observabilidade do CloudWatch.
Tópicos
Requisitos
Esta solução é aplicável nas seguintes condições:
Workload: Kafka v0.8.2.x e versões posteriores
Computação: Amazon EC2
Fornecimento de suporte para até 500 instâncias do EC2 em todas as workloads do Kafka em uma Região da AWS específica
-
Versão mais recente do agente do CloudWatch
-
SSM Agent instalado na instância do EC2
nota
O AWS Systems Manager (SSM Agent) está instalado previamente em algumas imagens de máquinas da Amazon (AMIs) fornecidas pela AWS e por entidades externas confiáveis. Se o agente não estiver instalado, você poderá instalá-lo manualmente usando o procedimento adequado para o seu tipo de sistema operacional.
Benefícios
A solução disponibiliza monitoramento do servidor do Kafka, fornecendo insights valiosos para os seguintes casos de uso:
-
Monitoramento da integridade do cluster do Kafka por meio de métricas de replicação e de sincronização.
-
Rastreamento da performance do agente por meio de falhas de solicitação e tempos de latência, juntamente com o tráfego de rede.
-
Monitoramento de erros por parte do produtor ou do consumidor, tempos de latência e atrasos do consumidor.
-
Análise da performance subjacente da JVM para clusters do Kafka.
-
Alternância entre diversos clusters, produtores e consumidores do Kafka configurados por meio da solução na mesma conta.
A seguir, apresentamos as principais vantagens da solução:
-
Automatiza a coleta de métricas para o Kafka e para a JVM subjacente usando a configuração do agente do CloudWatch, o que elimina a necessidade de instrumentação manual.
-
Fornece um painel do CloudWatch consolidado e configurado previamente para as métricas do Kafka e da JVM. O painel gerenciará automaticamente as métricas das novas instâncias do EC2 para o Kafka que foram configuradas usando a solução, mesmo que essas métricas não estejam disponíveis no momento de criação do painel. Além disso, o painel permite agrupar as métricas em aplicações lógicas para facilitar o foco e o gerenciamento.
A imagem apresentada a seguir é um exemplo do painel para esta solução.

Custos
Esta solução cria e usa recursos em sua conta. A cobrança será realizada com base no uso padrão, que inclui o seguinte:
Todas as métricas coletadas pelo agente do CloudWatch são cobradas como métricas personalizadas. O número de métricas usadas por esta solução depende do número de hosts do EC2.
Cada host do agente configurado para a solução publica 33 métricas, além de uma métrica (
disk_used_percent
) cuja contagem de métricas para cada host do EC2 depende do número de caminhos dos discos fornecidos para este host.Cada host produtor configurado para a solução publica três métricas com a dimensão
topic
e três métricas sem a dimensãotopic
. Para as métricas com a dimensãotopic
, cada tópico é contabilizado como uma métrica distinta.Cada host consumidor configurado para a solução publica duas métricas com dimensões
topic
e três métricas sem dimensõestopic
. Para as métricas com a dimensões “topic”, cada tópico é contabilizado como uma métrica distinta.
Um painel personalizado.
As operações da API solicitadas pelo agente do CloudWatch para publicar as métricas. Com a configuração padrão para esta solução, o agente do CloudWatch chama a operação PutMetricData uma vez por minuto para cada host do EC2. Isso significa que a API PutMetricData será chamada
30*24*60=43,200
em um mês com 30 dias para cada host do EC2.
Para obter mais informações sobre os preços do CloudWatch, consulte Preço do Amazon CloudWatch
A calculadora de preços pode ajudar a estimar os custos mensais aproximados para o uso desta solução.
Como usar a calculadora de preços para estimar os custos mensais da solução
-
Na seção Métricas, em Número de métricas, insira
broker_metrics_count + producer_metrics_count + consumer_metrics_count
. Calcule estas métricas da seguinte forma:broker_metrics_count
= (33 + número médio de caminhos do disco por host do EC2) * number_of_ec2_broker_hostsproducer_metrics_count
= (3 * average_number_of_topics_per_producer_host + 3) * number_of_ec2_producer_hostsconsumer_metrics_count
= (2 * average_number_of_topics_per_consumer_host + 3) * number_of_ec2_consumer_hosts
-
Na seção APIs, em Número de solicitações de API, insira
43200 * number of EC2 instances configured for this solution
.Por padrão, o agente do CloudWatch executa uma operação PutMetricData a cada minuto para cada host do EC2.
Na seção Painéis e alarmes, em Número de painéis, insira
1
.-
É possível visualizar os custos mensais estimados na parte inferior da calculadora de preços.
Configuração do agente do CloudWatch para esta solução
O agente do CloudWatch é um software que opera de maneira contínua e autônoma em seus servidores e em ambientes com contêineres. Ele coleta métricas, logs e rastreamentos da infraestrutura e das aplicações e os envia para o CloudWatch e para o X-Ray.
Para obter mais informações sobre o agente do CloudWatch, consulte Coletar métricas, logs e rastreamentos com o agente do CloudWatch.
A configuração do agente nesta solução coleta as métricas fundamentais para o Kafka, a JVM e o EC2. O agente do CloudWatch pode ser configurado para coletar mais métricas do Kafka e da JVM do que as que são exibidas por padrão no painel. Para obter uma lista de todas as métricas do Kafka que você pode coletar, consulte Coletar métricas do Kafka. Para obter uma lista de todas as métricas da JVM que você pode coletar, consulte Coletar métricas da JVM. Para obter uma lista das métricas do EC2, consulte Métricas coletadas pelo atendente do CloudWatch em instâncias do Linux e macOS.
Exposição de portas do JMX para perfis de agente, produtor e consumidor do Kafka
O agente do CloudWatch depende do JMX para coletar as métricas relacionadas aos agentes, produtores e consumidores do Kafka. Para que isso aconteça, é necessário expor a porta do JMX em seus servidores e aplicações.
Para os agentes do Kafka, é necessário usar a variável de ambiente JMX_PORT
para definir a porta. Será necessário reiniciar os agentes após definir essa variável de ambiente. Analise os scripts de inicialização e os arquivos de configuração da aplicação para encontrar o local mais adequado para adicionar esses argumentos.
Por exemplo, para os sistemas do Linux e do macOS, você pode usar o comando apresentado a seguir para definir a porta do JMX. Certifique-se de especificar um número de porta que não esteja em uso.
export JMX_PORT=
port-number
Para os produtores e consumidores do Kafka, as instruções para expor a porta do JMX dependem do tipo de workload que você está usando para a aplicação da JVM voltada para os produtores e para os consumidores. Consulte a documentação específica para a aplicação para encontrar essas instruções.
De maneira geral, para habilitar uma porta do JMX para monitoramento e gerenciamento, você precisa configurar as propriedades do sistema apresentadas a seguir para a aplicação da JVM. O exemplo apresentado a seguir configura o JMX sem autenticação. Se suas políticas ou seus requisitos de segurança exigirem que você habilite o JMX com autenticação por senha ou SSL para a obtenção de acesso remoto, consulte a documentação do JMX
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=
port-number
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Para verificar a porta do JMX, execute ps aux | grep jmxremote.port
. Os resultados devem mostrar que a porta do JMX foi definida nos processos da JVM.
Configuração do agente para esta solução
As métricas coletadas pelo agente são definidas na configuração do agente. A solução fornece configurações do agente para a coleta das métricas recomendadas com dimensões adequadas para o painel da solução. Cada perfil do Kafka, como agente, produtor ou consumidor, tem sua própria configuração de agente que possibilita a coleta de métricas do Kafka e de métricas da JVM e do EC2 subjacentes.
As etapas para a implantação da solução são descritas posteriormente em Implantação do agente para a sua solução. As informações apresentadas a seguir são destinadas a ajudar você a compreender como personalizar a configuração do agente para o seu ambiente.
Você deve personalizar algumas partes da seguinte configuração do agente para o seu ambiente:
O número da porta do JMX corresponde ao número da porta que você configurou na seção anterior desta documentação. O número da porta está na linha
endpoint
na configuração.ClusterName
: esta variável é usada como uma dimensão para as métricas de agentes coletadas. Forneça um nome significativo que represente o agrupamento do cluster para as instâncias que executam o agente do Kafka.ProcessGroupName
: esta variável é usada como uma dimensão para as métricas da JVM coletadas para os agentes. Forneça o mesmo valor fornecido paraClusterName
. Isso possibilita a visualização das métricas da JVM pertencentes ao mesmo grupo de agentes do Kafka, agrupando-as junto com as métricas dos agentes no painel da solução.ProducerGroupName
: esta variável é usada como uma dimensão para as métricas de produtores coletadas. Forneça um nome significativo que represente o grupo de instâncias de produtores. Para este valor, é possível especificar a aplicação ou o serviço dos produtores que você deseja usar para obter uma visualização combinada das métricas de produtores no painel da solução.ConsumerGroupName
: esta variável é usada como uma dimensão para as métricas de consumidores coletadas. Forneça um nome significativo que represente o grupo de instâncias de consumidores. Este nome não deve ser confundido com o conceito de grupo de consumidores no Kafka. Trata-se apenas de uma dimensão de agrupamento, na qual você pode especificar a aplicação ou o serviço de consumidores para obter uma visualização combinada das métricas de consumidores no painel da solução.
Por exemplo, caso você tenha dois clusters do Kafka em execução na mesma conta, sendo uma para a aplicação order-processing
e a outra para a aplicação inventory-management
, é necessário configurar as dimensões ClusterName
e ProcessGroupName
de maneira adequada na configuração do agente da instância do agente.
-
Para as instâncias do agente do cluster
order-processing
, definaClusterName=order-processing
eProcessGroupName=order-processing
. -
Para as instâncias do agente do cluster
inventory-management
, definaClusterName=inventory-management
eProcessGroupName=inventory-management
. -
De forma semelhante, configure o
ProducerGroupName
para as instâncias de produtores e oConsumerGroupName
para as instâncias de consumidores, com base em suas respectivas aplicações.
Ao configurar corretamente as dimensões mencionadas acima, o painel das soluções agrupará automaticamente as métricas com base nas dimensões ClusterName
, ProducerGroupName
e ConsumerGroupName
. O painel incluirá opções do menu suspenso para a seleção e para a visualização de métricas de clusters e de grupos específicos, permitindo o monitoramento da performance de clusters e de grupos individuais separadamente.
Certifique-se de implantar a configuração relevante do agente nas instâncias adequadas do EC2. Cada configuração será armazenada como um parâmetro distinto no Parameter Store do SSM, conforme detalhado posteriormente em Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store.
As instruções apresentadas a seguir descrevem a situação em que os perfis de produtor, consumidor e corretor são implantados em instâncias distintas do EC2, sem a ocorrência de sobreposições. Caso você esteja executando diversos perfis do Kafka na mesma instância do EC2, consulte Configuração do agente para diversos perfis do Kafka na mesma instância para obter mais informações.
Configuração do agente para agentes do agente do Kafka
Use a configuração apresentada a seguir do agente do CloudWatch nas instâncias do EC2 em que os agentes do agente do Kafka estão implantados. Substitua ClusterName
pelo nome do cluster que será usado para agrupar essas métricas para obter uma visualização unificada. O valor especificado para o ClusterName
é usado tanto como a dimensão ClusterName
quanto como a dimensão ProcessGroupName
. Substitua port-number
pela porta do JMX do seu servidor do Kafka. Se o JMX tiver sido habilitado com autenticação por senha ou SSL para acesso remoto, consulte Coletar métricas do Java Management Extensions (JMX) para obter informações sobre como configurar o TLS ou a autorização, conforme necessário.
As métricas do EC2 mostradas nesta configuração (configuração apresentada de forma externa ao bloco do JMX) funcionam somente para instâncias do Linux e do macOS. Caso esteja usando instâncias do Windows, é possível optar por omitir essas métricas na configuração. Para obter mais informações sobre as métricas coletadas em instâncias do Windows, consulte Métricas coletadas pelo atendente do CloudWatch em instâncias do Windows Server.
{
"metrics": {
"namespace": "CWAgent",
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"jmx": [
{
"endpoint": "localhost:port-number
",
"kafka": {
"measurement": [
"kafka.request.time.avg",
"kafka.request.failed",
"kafka.request.count",
"kafka.purgatory.size",
"kafka.partition.under_replicated",
"kafka.partition.offline",
"kafka.network.io",
"kafka.leader.election.rate",
"kafka.isr.operation.count"
]
},
"append_dimensions": {
"ClusterName": "ClusterName
"
}
},
{
"endpoint": "localhost:port-number
",
"jvm": {
"measurement": [
"jvm.classes.loaded",
"jvm.gc.collections.count",
"jvm.gc.collections.elapsed",
"jvm.memory.heap.committed",
"jvm.memory.heap.max",
"jvm.memory.heap.used",
"jvm.memory.nonheap.committed",
"jvm.memory.nonheap.max",
"jvm.memory.nonheap.used",
"jvm.threads.count"
]
},
"append_dimensions": {
"ProcessGroupName": "ClusterName
"
}
}
],
"disk": {
"measurement": [
"used_percent"
]
},
"mem": {
"measurement": [
"used_percent"
]
},
"swap": {
"measurement": [
"used_percent"
]
},
"netstat": {
"measurement": [
"tcp_established",
"tcp_time_wait"
]
}
}
}
}
Configuração do agente para produtores do Kafka
Use a configuração apresentada a seguir do agente do CloudWatch nas instâncias do Amazon EC2 em que os produtores do Kafka estão implantados. Substitua ProducerGroupName
pelo nome da aplicação ou do grupo que você deseja usar para agrupar as métricas para obter uma visualização unificada. Substitua port-number
pelo número da porta do JMX da aplicação do produtor do Kafka.
A solução não habilita métricas da JVM para os produtores do Kafka, pois o painel da solução não exibe métricas da JVM relacionadas à JVM para os produtores. Além disso, é possível personalizar a configuração do agente para emitir métricas da JVM, no entanto, as métricas da JVM relacionadas aos produtores não são visíveis no painel da solução.
{
"metrics": {
"namespace": "CWAgent",
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"jmx": [
{
"endpoint": "localhost:port-number
",
"kafka-producer": {
"measurement": [
"kafka.producer.request-rate",
"kafka.producer.byte-rate",
"kafka.producer.request-latency-avg",
"kafka.producer.response-rate",
"kafka.producer.record-error-rate",
"kafka.producer.record-send-rate"
]
},
"append_dimensions": {
"ProducerGroupName": "ProducerGroupName
"
}
}
]
}
}
}
Configuração do agente para consumidores do Kafka
Use a configuração apresentada a seguir do agente do CloudWatch nas instâncias do EC2 em que os consumidores do Kafka estão em execução. Substitua ConsumerGroupName
pelo nome da aplicação ou do grupo que você deseja usar para agrupar essas métricas para obter uma visualização unificada. Substitua port-number
pelo número da porta do JMX da aplicação do consumidor do Kafka.
A solução não habilita métricas da JVM para os consumidores do Kafka, pois o painel da solução não exibe métricas da JVM relacionadas à JVM para os consumidores. Além disso, é possível personalizar a configuração do agente para emitir métricas da JVM, no entanto, as métricas da JVM relacionadas aos consumidores não são visíveis no painel da solução.
{
"metrics": {
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"jmx": [
{
"endpoint": "localhost:port-number
",
"kafka-consumer": {
"measurement": [
"kafka.consumer.fetch-rate",
"kafka.consumer.total.bytes-consumed-rate",
"kafka.consumer.records-consumed-rate",
"kafka.consumer.bytes-consumed-rate",
"kafka.consumer.records-lag-max"
]
},
"append_dimensions": {
"ConsumerGroupName": "ConsumerGroupName
"
}
}
]
}
}
}
Implantação do agente para a sua solução
Existem várias abordagens para instalar o agente do CloudWatch, dependendo do caso de uso. Recomendamos o uso do Systems Manager para esta solução. Ele fornece uma experiência no console e simplifica o gerenciamento de uma frota de servidores gerenciados em uma única conta da AWS. As instruções apresentadas nesta seção usam o Systems Manager e são destinadas para situações em que o agente do CloudWatch não está em execução com as configurações existentes. É possível verificar se o agente do CloudWatch está em execução ao seguir as etapas apresentadas em Verificar se o atendente do CloudWatch está em execução.
Se você já estiver executando o agente do CloudWatch nos hosts do EC2 nos quais a workload está implantada e gerenciando as configurações do agente, pode pular as instruções apresentadas nesta seção e usar o mecanismo de implantação existente para atualizar a configuração. Certifique-se de combinar a configuração do agente de acordo com o perfil (agente, produtor ou consumidor) com a configuração do agente existente e, em seguida, implante a configuração combinada. Se você estiver usando o Systems Manager para armazenar e gerenciar a configuração do agente do CloudWatch, poderá combinar a configuração com o valor do parâmetro existente. Para obter mais informações, consulte Managing CloudWatch agent configuration files.
nota
Ao usar o Systems Manager para implantar as configurações do agente do CloudWatch apresentadas a seguir, qualquer configuração existente do agente do CloudWatch nas suas instâncias do EC2 será substituída ou sobrescrita. É possível modificar essa configuração para atender às necessidades do ambiente ou do caso de uso específico. As métricas definidas nesta solução representam o requisito mínimo para o painel recomendado.
O processo de implantação inclui as seguintes etapas:
Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
Etapa 2: armazenar o arquivo de configuração recomendado do agente no Systems Manager Parameter Store.
Etapa 3: instalar o agente do CloudWatch em uma ou mais instâncias do EC2 usando uma pilha do AWS CloudFormation.
Etapa 4: verificar se a configuração do agente foi realizada corretamente.
Essas etapas devem ser repetidas dependendo de os agentes, produtores e consumidores estarem implantados na mesma instância do EC2 ou em instâncias distintas. Por exemplo, se o agente, o produtor e os consumidores do Kafka forem implantados em instâncias separadas, sem sobreposição, você deverá repetir essas etapas três vezes, com as configurações de agente apropriadas para as instâncias do EC2 destinadas ao agente, ao produtor e ao consumidor.
Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias
Você deve conceder permissão para o Systems Manager instalar e configurar o agente do CloudWatch. Além disso, é necessário conceder permissão para que o agente do CloudWatch publique a telemetria da instância do EC2 para o CloudWatch. Certifique-se de que o perfil do IAM anexado à instância tenha as políticas do IAM CloudWatchAgentServerPolicy e AmazonSSMManagedInstanceCore associadas.
-
Para criar uma função, consulte Criar funções do IAM a serem usadas com o atendente do CloudWatch em instâncias do Amazon EC2.
-
Após criar o perfil, associe-o às suas instâncias do EC2. Siga as etapas apresentadas em Launch an instance with an IAM role para anexar um perfil durante a inicialização de uma nova instância do EC2. Para anexar um perfil a uma instância do EC2 existente, siga as etapas apresentadas em Attach an IAM role to an instance.
Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store
O Parameter Store simplifica a instalação do agente do CloudWatch em uma instância do EC2 ao armazenar e gerenciar os parâmetros de configuração de forma segura, eliminando a necessidade de valores com codificação rígida. Isso garante um processo de implantação mais seguro e flexível ao possibilitar o gerenciamento centralizado e as atualizações simplificadas para as configurações em diversas instâncias.
Use as etapas apresentadas a seguir para armazenar o arquivo de configuração recomendado do agente do CloudWatch como um parâmetro no Parameter Store.
Como criar o arquivo de configuração do agente do CloudWatch como um parâmetro
Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/
. No painel de navegação, escolha Gerenciamento de aplicações e, em seguida, Parameter Store.
Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.
-
Escolha Criar Parâmetro.
-
Forneça um nome para o parâmetro que armazenará a configuração do seu agente do CloudWatch, como
AmazonCloudWatch-Kafka-Producer-Configuration
para produtores,AmazonCloudWatch-Kafka-Consumer-Configuration
para consumidores ouAmazonCloudWatch-Kafka-Broker-Configuration
para agentes. Caso você tenha diversos perfis do Kafka em uma única instância do EC2, nomeie-os de forma apropriada para facilitar a identificação. Esse valor será usado posteriormente para distribuir essa configuração para o agente em execução na instância do EC2. -
Em Camadas de parâmetros, escolha Padrão.
-
Para Type (Tipo), escolha String.
Em Tipo de dados, selecione texto.
-
Na caixa Valor, cole o texto completo da configuração do agente do CloudWatch. Certifique-se de selecionar o bloco em JSON correspondente ao perfil do Kafka que essa instância está hospedando. Consulte as configurações fornecidas em Configuração do agente para agentes do agente do Kafka, Configuração do agente para produtores do Kafka e Configuração do agente para consumidores do Kafka ao armazenar a configuração para agentes, produtores e consumidores, respectivamente. Caso você esteja executando diversos perfis do Kafka na mesma instância do EC2, certifique-se de combinar as configurações, se necessário, conforme descrito em Configuração do agente para diversos perfis do Kafka na mesma instância.
-
Escolha Criar Parâmetro.
-
Etapa 3: instalar o agente do CloudWatch e aplicar a configuração usando um modelo do AWS CloudFormation
É possível usar o AWS CloudFormation para instalar o agente e configurá-lo para usar a configuração do agente do CloudWatch criada nas etapas anteriores.
Como instalar e configurar o agente do CloudWatch para esta solução
-
Abra o assistente para criar pilha de forma rápida do AWS CloudFormation usando este link: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json
. -
Verifique se a região selecionada no console corresponde à região em que a workload do Kafka está em execução.
-
Em Nome da pilha, insira um nome para identificar esta pilha, como
CWAgentInstallationStack
. -
Na seção Parâmetros, especifique o seguinte:
-
Para CloudWatchAgentConfigSSM, insira o nome do parâmetro do Systems Manager para a configuração do agente que você criou anteriormente, como
AmazonCloudWatch-Kafka-Broker-Configuration
para agentes,AmazonCloudWatch-Kafka-Producer-Configuration
para produtores eAmazonCloudWatch-Kafka-Consumer-Configuration
para consumidores. -
Para selecionar as instâncias de destino, você tem duas opções.
-
Para InstanceIds, especifique uma lista delimitada por vírgulas de IDs de instâncias nas quais você deseja instalar o agente do CloudWatch com esta configuração. É possível listar uma única instância ou várias instâncias.
-
Se você estiver realizando implantações em grande escala, é possível especificar a TagKey e o TagValue correspondente para direcionar todas as instâncias do EC2 associadas a essa etiqueta e a esse valor. Se você especificar uma TagKey, é necessário especificar um TagValue correspondente. (Para um grupo do Auto Scaling, especifique
aws:autoscaling:groupName
para a TagKey e defina o nome do grupo do Auto Scaling para a TagValue para realizar a implantação em todas as instâncias do grupo do Auto Scaling.)Caso você especifique tanto os parâmetros InstanceIds quanto TagKeys, InstanceIds terá precedência, e as etiquetas serão desconsideradas.
-
-
-
Analise as configurações e, em seguida, escolha Criar pilha.
Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção Fazer upload de um arquivo de modelo no Assistente de criação de pilha para fazer o upload do modelo editado. Para obter mais informações, consulte Criar uma pilha no console do AWS CloudFormation. É possível usar o seguinte link para fazer download do modelo: https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json
nota
Após a conclusão desta etapa, este parâmetro do Systems Manager será associado aos agentes do CloudWatch em execução nas instâncias de destino. Isto significa que:
-
Se o parâmetro do Systems Manager for excluído, o agente será interrompido.
-
Se o parâmetro do Systems Manager for editado, as alterações de configuração serão aplicadas automaticamente ao agente na frequência programada, que, por padrão, é de 30 dias.
-
Se você desejar aplicar imediatamente as alterações a este parâmetro do Systems Manager, você deverá executar esta etapa novamente. Para obter mais informações sobre as associações, consulte Working with associations in Systems Manager.
Etapa 4: verificar se a configuração do agente foi realizada corretamente
É possível verificar se o agente do CloudWatch está instalado ao seguir as etapas apresentadas em Verificar se o atendente do CloudWatch está em execução. Se o agente do CloudWatch não estiver instalado e em execução, certifique-se de que todas as configurações foram realizadas corretamente.
-
Certifique-se de ter anexado um perfil com as permissões adequadas para a instância do EC2, conforme descrito na Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
-
Certifique-se de ter configurado corretamente o JSON para o parâmetro do Systems Manager. Siga as etapas em Solução de problemas de instalação do atendente do CloudWatch com o AWS CloudFormation.
Se todas as configurações estiverem corretas, as métricas do Kafka serão publicadas no CloudWatch e estarão disponíveis para visualização. É possível verificar no console do CloudWatch para assegurar que as métricas estão sendo publicadas corretamente.
Como verificar se as métricas do Kafka estão sendo publicadas no CloudWatch
Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/
. Escolha Métricas e, depois, Todas as métricas.
Certifique-se de ter selecionado a região na qual a solução foi implantada, escolha Namespaces personalizados e, em seguida, selecione CWAgent.
Pesquise pelas métricas mencionadas na seção de configuração do agente deste documento, como
kafka.partition.offline
para agentes,kafka.consumer.fetch.rate
para consumidores oukafka.producer.request-rate
para produtores. Caso encontre resultados para essas métricas, isso significa que elas estão sendo publicadas no CloudWatch.
Criação do painel da solução do Kafka
Este painel exibe as métricas emitidas recentemente para o Kafka e para a JVM subjacente. Este painel fornece uma visualização do principal colaborador para a integridade da workload do Kafka, entre produtores, agentes e consumidores. A visualização do principal colaborador exibe os dez principais colaboradores por widget de métrica. Isso permite a identificação de discrepâncias rapidamente.
O painel da solução não exibe métricas do EC2. Para visualizar as métricas relacionadas ao EC2, é necessário usar o painel automático do EC2 para acessar as métricas fornecidas diretamente pelo EC2 e usar o painel do console do EC2 para consultar as métricas do EC2 que são coletadas pelo agente do CloudWatch. Para obter mais informações sobre os painéis automáticos para serviços da AWS, consulte Visualização de um painel do CloudWatch para um único serviço da AWS.
Para criar o painel, é possível usar as seguintes opções:
Usar o console do CloudWatch para criar o painel.
Usar o console do AWS CloudFormation para implantar o painel.
Fazer o download do código de infraestrutura como código do AWS CloudFormation e integrá-lo como parte da automação de integração contínua (CI).
Ao usar o console do CloudWatch para criar um painel, é possível visualizá-lo previamente antes de criá-lo e incorrer em custos.
nota
O painel criado com o AWS CloudFormation nesta solução exibe métricas da região em que a solução está implantada. Certifique-se de que a pilha do AWS CloudFormation seja criada na mesma região em que as métricas do Kafka e da JVM são publicadas.
Se você especificou um namespace personalizado diferente de CWAgent
na configuração do agente do CloudWatch, será necessário alterar o modelo do AWS CloudFormation para o painel, substituindo CWAgent
pelo namespace personalizado que você está usando.
Como criar o painel usando o console do CloudWatch
nota
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere name=\"G1 Young Generation\"
para name=\"Parallel GC\"
da métrica de contagem de coleta de resíduos jvm.gc.collections.count
.
-
Abra o console do CloudWatch e acesse Criar painel usando este link: https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=ApacheKafkaOnEc2&referrer=os-catalog
. -
Verifique se a região selecionada no console corresponde à região em que a workload do Kafka está em execução.
-
Insira o nome do painel e, em seguida, escolha Criar painel.
Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo,
KafkaDashboard-us-east-1
. -
Visualize previamente o painel e escolha Salvar para criá-lo.
Como criar o painel usando o AWS CloudFormation
-
Abra o assistente para criar pilha de forma rápida do AWS CloudFormation usando este link: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
. -
Verifique se a região selecionada no console corresponde à região em que a workload do Kafka está em execução.
-
Em Nome da pilha, insira um nome para identificar esta pilha, como
KafkaDashboardStack
. -
Na seção Parâmetros, especifique o nome do painel no parâmetro DashboardName.
Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo,
KafkaDashboard-us-east-1
. -
Confirme as funcionalidades de acesso relacionadas às transformações na seção Capacidades e transformações. Lembre-se de que o CloudFormation não adiciona recursos do IAM.
-
Analise as configurações e, em seguida, escolha Criar pilha.
-
Quando o status da pilha mostrar CREATE_COMPLETE, selecione a guia Recursos na pilha criada e, em seguida, escolha o link exibido em ID físico para acessar o painel. Como alternativa, é possível acessar o painel diretamente no console do CloudWatch ao selecionar Painéis no painel de navegação do console à esquerda e localizar o nome do painel na seção Painéis personalizados.
Se você desejar editar o arquivo de modelo para personalizá-lo para atender a uma necessidade específica, é possível usar a opção Fazer upload de um arquivo de modelo no Assistente de criação de pilha para fazer o upload do modelo editado. Para obter mais informações, consulte Criar uma pilha no console do AWS CloudFormation. É possível usar este link para fazer download do modelo: https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
nota
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere name=\"G1 Young Generation\"
para name=\"Parallel GC\"
da métrica de contagem de coleta de resíduos jvm.gc.collections.count
.
Como começar a usar o painel do Kafka
A seguir, apresentamos algumas tarefas que você pode realizar para explorar o novo painel do Kafka. Essas tarefas permitem a validação do funcionamento correto do painel e fornecem uma experiência prática ao usá-lo para monitorar um cluster do Kafka. À medida que realiza as tarefas, você se familiarizará com a navegação no painel e com a interpretação das métricas visualizadas.
Uso das listas suspensas
O painel fornece listas suspensas na parte superior, que podem ser usadas para filtrar e selecionar os clusters, os produtores e os grupos de consumidores específicos do Kafka que você deseja monitorar.
Para exibir métricas para um cluster específico do Kafka, selecione o nome desse cluster na lista suspensa Cluster do Kafka.
Para exibir métricas para um grupo de produtores específico do Kafka, selecione o nome desse grupo de produtores na lista suspensa Produtor do Kafka.
Para exibir métricas para um grupo de consumidores específico do Kafka, selecione o nome desse grupo de consumidores na lista suspensa Grupo de consumidores do Kafka.
Verificação da integridade do cluster
Na seção Visão geral do cluster, localize os widgets Partições sub-replicadas e Réplicas em sincronização. Esses valores devem ser, idealmente, zero ou um número pequeno. Um valor elevado em qualquer uma dessas métricas podem indicar problemas no cluster do Kafka que requerem investigação.
Investigação da performance do agente
Na seção Agentes, localize os widgets Falha nas solicitações de busca e Falha nas solicitações do produtor. Esses widgets apresentam a quantidade de falhas nas solicitações de operações de busca e de produção, respectivamente. As taxas elevadas de falha podem indicar problemas nos agentes ou na conectividade da rede, que requerem uma investigação mais aprofundada.
Monitoramento da performance do produtor
Na seção Visão geral do grupo de produtores, localize os widgets Taxa média de solicitações, Latência média de solicitações e Taxa média de registros de envio ou de erros. Esses widgets disponibilizarão uma visão geral sobre a performance dos produtores do grupo selecionado. Além disso, é possível obter um detalhamento para visualizar métricas de produtores e de tópicos específicos na seção Produtores.
Monitoramento de atrasos dos consumidores
Na seção Visão geral do grupo de consumidores, localize o widget Atraso dos consumidores. Esse widget mostra o quão atrasados os consumidores estão no processamento das mensagens em relação aos últimos deslocamentos que ocorreram nas partições às quais eles são assinantes. Idealmente, o atraso dos consumidores deve ser um valor baixo ou zero. Um atraso dos consumidores significativo pode indicar que os consumidores não estão conseguindo acompanhar o ritmo de produção de dados, o que pode resultar em possíveis perdas de dados ou atrasos no processamento. Além disso, é possível obter um detalhamento para visualizar métricas de consumidores e de tópicos específicos na seção Consumidores.
Configuração do agente para diversos perfis do Kafka na mesma instância
As configurações individuais para os perfis do Kafka listadas na Configuração do agente do CloudWatch para esta solução são aplicáveis somente quando os perfis de produtor, consumidor e agente estão implantados em instâncias do EC2 distintas, sem sobreposição. Se você estiver executando diversos perfis do Kafka na mesma instância do Amazon EC2, existem duas opções:
Criar um único arquivo de configuração do agente que lista e configura todas as métricas para todos os perfis do Kafka implantados nessa instância. Se você planeja usar o Systems Manager para gerenciar a configuração do agente, esta é a opção recomendada.
Ao escolher essa opção, se os diversos perfis do Kafka fizerem parte do mesmo processo da JVM, será necessário especificar o mesmo endpoint para cada um dos perfis do Kafka no arquivo de configuração do agente. Se os diversos perfis do Kafka fizerem parte de processos diferentes da JVM, o endpoint para cada um dos perfis pode ser distinto, dependendo da porta do JMX configurada para esse processo.
Criar arquivos de configuração do agente distintos para cada um dos perfis do Kafka e configurar o agente para aplicar ambos os arquivos de configuração. Para obter instruções sobre como aplicar diversos arquivos de configuração, consulte Vários arquivos de configuração do atendente CloudWatch.
O exemplo apresentado a seguir mostra uma configuração de agente do CloudWatch em que os perfis de produtor e de consumidor estão em execução em uma instância como parte do mesmo processo da JVM. Nesse caso, o número da porta deve ser semelhante nas partes de produtor e de consumidor da configuração abaixo. Se, em vez disso, os dois perfis estivessem em execução como parte de diferentes processos da JVM, você poderia especificar números de portas diferentes para cada um dos perfis, de acordo com a porta do JMX de cada processo individual da JVM.
{
"metrics": {
"namespace": "CWAgent",
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"jmx": [
{
"endpoint": "localhost:port-number
",
"kafka-producer": {
"measurement": [
"kafka.producer.request-rate",
"kafka.producer.byte-rate",
"kafka.producer.request-latency-avg",
"kafka.producer.response-rate",
"kafka.producer.record-error-rate",
"kafka.producer.record-send-rate"
]
},
"append_dimensions": {
"ProducerGroupName": "ProducerGroupName
"
}
},
{
"endpoint": "localhost:port-number
",
"kafka-consumer": {
"measurement": [
"kafka.consumer.fetch-rate",
"kafka.consumer.total.bytes-consumed-rate",
"kafka.consumer.records-consumed-rate",
"kafka.consumer.bytes-consumed-rate",
"kafka.consumer.records-lag-max"
]
},
"append_dimensions": {
"ConsumerGroupName": "ConsumerGroupName
"
}
}
]
}
}
}