View a markdown version of this page

Integrar o Amazon MSK - Amazon CloudWatch

Integrar o Amazon MSK

Com um coletor do Prometheus gerenciado pelo Amazon CloudWatch, você pode descobrir e coletar automaticamente métricas do Prometheus dos seus clusters do Amazon MSK. Quando você habilita o Open Monitoring em seu cluster do Amazon MSK, ele expõe as métricas do Prometheus por meio do Java Management Extensions (JMX) Exporter e do Node Exporter. O coletor gerenciado se conecta à sua VPC e extrai essas métricas de todos os operadores usando a descoberta de serviços baseada em DNS e as entrega diretamente ao CloudWatch. Com essa integração, você pode monitorar métricas em nível de host, métricas em nível de JVM e métricas do operador do Kafka no CloudWatch sem implantar nenhum agente.

nota

Quando um coletor do Prometheus gerenciado pelo Amazon CloudWatch entrega suas métricas do Amazon MSK ao CloudWatch, ele enriquece automaticamente cada métrica com atributos que identificam sua origem. Cada métrica carrega o escopo de instrumentação do coletor, os atributos da nuvem que registram a conta e a região da AWS e uma unidade que o coletor infere do nome da métrica. Você pode filtrar e agrupar nesses atributos ao consultar suas métricas com o PromQL.

Pré-requisitos

Este procedimento pressupõe familiaridade com a administração de clusters do Amazon MSK e os conceitos de rede do Amazon VPC.

  • Cluster do Amazon MSK em modo provisionado, com operadores padrão ou expressos. Coletores gerenciados não são compatíveis com o Amazon MSK Sem Servidor.

  • Monitoramento aberto habilitado no cluster. Para obter mais informações, consulte Open Monitoring com o Prometheus no Guia do desenvolvedor do Amazon MSK.

  • Pelo menos duas sub-redes em zonas de disponibilidade diferentes

  • Grupo de segurança que permite que o coletor alcance as portas 11001 e 11002 do operador

Etapa 1: habilitar o monitoramento aberto

Habilite o Open Monitoring em seu cluster do Amazon MSK para expor as métricas do Prometheus. Para obter instruções sobre como habilitar o Open Monitoring, consulte Open Monitoring com o Prometheus no Guia do desenvolvedor do Amazon MSK.

aws kafka update-monitoring \ --cluster-arn "arn:aws:kafka:us-west-2:123456789012:cluster/my-cluster/abc123-def456" \ --current-version "K1A2B3C4D5" \ --open-monitoring '{ "Prometheus": { "JmxExporter": {"EnabledInBroker": true}, "NodeExporter": {"EnabledInBroker": true} } }'
nota

O parâmetro --open-monitoring sozinho expõe os endpoints do Prometheus nas portas 11001 e 11002. Os níveis de monitoramento aprimorados, como PER_TOPIC_PER_PARTITION, são separados do Open Monitoring e podem gerar cobranças adicionais, portanto, defina-os somente se precisar desse nível de métricas do Amazon MSK.

Etapa 2: obter o nome do DNS do cluster

O Amazon MSK fornece um nome DNS em nível de cluster que é resolvido para todos os IPs do operador. Usar isso para a descoberta de serviços torna seu monitoramento resiliente às substituições de operadores e à escalabilidade dos clusters.

Obtenha o nome DNS do seu cluster (remova o prefixo específico do operador, como b-1. ou b-2.):

aws kafka get-bootstrap-brokers --cluster-arn "arn:aws:kafka:us-west-2:123456789012:cluster/my-cluster/abc123-def456"

Por exemplo, se o operador de bootstrap retornar b-1.my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com, use my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com como o nome DNS do seu cluster.

Etapa 3: configurar a configuração de extração

Confira a seguir um exemplo de configuração de extração para o Amazon MSK. Você fará referência a essa configuração quando cria o extrator na próxima etapa. Para obter mais informações sobre as opções de configuração do , consulte Configuração do extrator.

global: scrape_interval: 60s external_labels: cluster_name: my-msk-cluster scrape_configs: - job_name: 'msk-jmx' dns_sd_configs: - names: - my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com type: A port: 11001 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance - target_label: compute_platform replacement: 'msk' - job_name: 'msk-node' dns_sd_configs: - names: - my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com type: A port: 11002 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance - target_label: compute_platform replacement: 'msk'

Etapa 4: Criar o raspador

Crie o extrator com um destino do CloudWatch usando a configuração de extração para seus agentes do Amazon MSK da etapa anterior.

AWS API

Use a operação da API CreateScraper para criar um extrator com um destino do CloudWatch. Substitua as informações de sub-rede, grupo de segurança e conjunto de dados pelos seus próprios valores.

POST /scrapers HTTP/1.1 { "alias": "msk-metrics-scraper", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }, "scrapeConfiguration": { "configurationBlob": "base64-encoded-blob" } }
AWS CLI

Use o comando create-scraper para criar um extrator com um destino do CloudWatch. Substitua as informações de sub-rede, grupo de segurança e conjunto de dados pelos seus próprios valores.

aws amp create-scraper \ --alias "msk-metrics-scraper" \ --source '{ "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }' \ --scrape-configuration configurationBlob=$(cat msk-config.yaml | base64 -w 0) \ --destination '{ "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }'

Métricas disponíveis

  • JMX Exporter (porta 11001): componentes internos do operador do Kafka, incluindo métricas de tópicos, métricas de partição, taxas de solicitação, atraso do consumidor e partições sub-replicadas.

  • Node Exporter (porta 11002): métricas em nível de host, incluindo CPU, memória, E/S de disco e throughput de rede.

Para obter uma lista completa das métricas disponíveis, consulte Métricas do MSK coletadas por coletores gerenciados no Guia do usuário do Amazon Managed Service for Prometheus.

Validar a coleta de métricas

Para confirmar se o coletor está entregando as métricas do JMX e do Node Exporter, execute as consultas a seguir no CloudWatch com o Query Studio. Se cada consulta retornar pontos de dados, o coletor está extraindo o exportador correspondente com êxito.

A consulta a seguir retorna uma métrica do Kafka em nível de operador do JMX Exporter (porta 11001). Ele relata a taxa média da atividade do tópico do operador, como mensagens e bytes que fluem pelos operadores. Os pontos de dados confirmam que o coletor está extraindo as métricas do operador do Kafka.

kafka_server_BrokerTopicMetrics_MeanRate

A consulta a seguir retorna a utilização da CPU em nível de host do Node Exporter (porta 11002). Ele subtrai de 100 a taxa média de CPU ociosa em uma janela de cinco minutos para fornecer a porcentagem de CPU que os operadores estão usando. Os pontos de dados confirmam que o coletor está extraindo métricas do nível do host.

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

Visualizar o painel automático

Depois que o coletor começa a entregar suas métricas do Amazon MSK para o CloudWatch, o console do CloudWatch fornece um painel automático denominado MSK OTel. Para abri-lo, consulte MSK OTel ou faça login no Console de Gerenciamento da AWS, abra o console do CloudWatch, escolha Painéis no painel de navegação, depois Painéis automáticos e então MSK OTel. Você pode começar a monitorar seus clusters sem criar widgets ou painéis por conta própria.

Se o painel automático atender às suas necessidades, você poderá usá-lo como está. Para criar uma experiência de monitoramento personalizada, você pode adicionar qualquer um de seus widgets a um painel personalizado. Para obter mais informações sobre painéis personalizados, consulte Usar painéis do CloudWatch.

Observabilidade entre contas

Para o monitoramento entre contas do Amazon MSK, recomendamos usar a centralização de métricas do Amazon CloudWatch. Para obter mais informações, consulte Centralização de métricas do CloudWatch.

Para configurações alternativas de extrator entre contas usando o encadeamento de perfis, consulte Integração entre contas do Amazon MSK no Guia do usuário do Amazon Managed Service for Prometheus.

Limitações atuais

  • Os coletores gerenciados não são compatíveis com os clusters do Amazon MSK Sem Servidor.

  • Os coletores gerenciados não são compatíveis com o acesso público combinado com o modo de metadados do KRaft.

  • Cada combinação de cluster do Amazon MSK e conjunto de dados do CloudWatch requer um coletor.