Configure coletores gerenciados do Prometheus para o Amazon MSK - Amazon Managed Service for Prometheus

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configure coletores gerenciados do Prometheus para o Amazon MSK

Para usar um coletor do Amazon Managed Service for Prometheus, crie um extrator que descubra e extraia métricas no cluster do Amazon Streaming gerenciado para Apache Kafka. É possível também criar um extrator que se integre ao Amazon Elastic Kubernetes Service. Para obter mais informações, consulte Integrar o Amazon EKS.

Criar um extrator

Um coletor do Amazon Managed Service for Prometheus consiste em um extrator que descobre e coleta métricas de um cluster do Amazon MKS. O Amazon Managed Service for Prometheus gerencia o extrator para você, fornecendo a escalabilidade, a segurança e a confiabilidade necessárias, sem que você precise gerenciar instâncias, agentes ou extratores por conta própria.

Você pode criar um raspador usando a AWS API ou a AWS CLI conforme descrito nos procedimentos a seguir.

Há alguns pré-requisitos para a criação de um extrator próprio:

  • É necessário ter um cluster do Amazon MKS.

  • Configure o grupo de segurança do seu cluster Amazon MSK para permitir tráfego de entrada nas portas 11001 (JMX Exporter) e 11002 (Node Exporter) em sua Amazon VPC, pois o extrator exige acesso a esses registros DNS para coletar métricas do Prometheus.

  • A Amazon VPC na qual o cluster Amazon MKS reside deve ter o DNS habilitado.

nota

O cluster será associado ao extrator pelo nome do recurso da Amazon (ARN). Se você excluir um cluster e criar um novo com o mesmo nome, o ARN será reutilizado para o novo cluster. Por esse motivo, o extrator tentará coletar métricas para o novo cluster. Você exclui extratores separadamente da exclusão do cluster.

To create a scraper using the AWS API

Use a operação CreateScraper da API para criar um raspador com a AWS API. O exemplo a seguir cria um extrator na Região Leste dos EUA (Norte da Virgínia). Substitua o example conteúdo pelas informações do cluster do Amazon MSK e forneça a configuração do seu scraper.

nota

Configure o grupo de segurança e as sub-redes para corresponder ao seu cluster de destino. Inclua pelo menos duas sub-redes em duas zonas de disponibilidade.

POST /scrapers HTTP/1.1 Content-Length: 415 Authorization: AUTHPARAMS X-Amz-Date: 20201201T193725Z User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6 { "alias": "myScraper", "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-east-1:123456789012:workspace/ws-workspace-id" } }, "source": { "vpcConfiguration": { "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": base64-encoded-blob } }

No exemplo, o parâmetro scrapeConfiguration exige um arquivo YAML de configuração do Prometheus codificado em base64 que especifique os registros DNS do cluster MSK.

Cada registro DNS representa um endpoint de corretor em uma zona de disponibilidade específica, permitindo que os clientes se conectem a corretores distribuídos por sua escolha AZs para alta disponibilidade.

O número de registros DNS nas propriedades do cluster MSK corresponde ao número de nós de agente e zonas de disponibilidade na configuração do cluster:

  • Configuração padrão — 3 nós de intermediário em 3 AZs = 3 registros DNS

  • Configuração personalizada — 2 nós de intermediário em 2 AZs = 2 registros DNS

Para obter os registros DNS do seu cluster MSK, abra o console MSK em casa? https://console.aws.amazon.com/msk/ region=us-east-1#/home/. Acesse o cluster do MSK. Selecione Propriedades, Agentes e Endpoints.

Você tem duas opções para configurar o Prometheus para extrair métricas do seu cluster MSK:

  1. Resolução de DNS em nível de cluster (recomendada): use o nome DNS base do cluster para descobrir automaticamente todos os agentes. Se o endpoint do seu agente for b-1.clusterName.xxx.xxx.xxx, use clusterName.xxx.xxx.xxx como registro DNS. Isso permite que o Prometheus extraia automaticamente todos os agentes no cluster.

    Endpoints individuais de agente: especifique cada endpoint do agente individualmente para controle granular. Use os identificadores completos do agente (b-1, b-2) em sua configuração. Por exemplo:

    dns_sd_configs: - names: - b-1.clusterName.xxx.xxx.xxx - b-2.clusterName.xxx.xxx.xxx - b-3.clusterName.xxx.xxx.xxx
nota

clusterName.xxx.xxx.xxxSubstitua pelo endpoint real do cluster MSK a partir do AWS console.

Para obter mais informações, consulte <dns_sd_config> na documentação do Prometheus.

Este é um exemplo do arquivo de configuração do extrator:

global: scrape_interval: 30s external_labels: clusterArn: msk-test-1 scrape_configs: - job_name: msk-jmx scheme: http metrics_path: /metrics scrape_timeout: 10s dns_sd_configs: - names: - dns-record-1 - dns-record-2 - dns-record-3 type: A port: 11001 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance regex: '(.*)' replacement: '${1}' - job_name: msk-node scheme: http metrics_path: /metrics scrape_timeout: 10s dns_sd_configs: - names: - dns-record-1 - dns-record-2 - dns-record-3 type: A port: 11002 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance regex: '(.*)' replacement: '${1}'

Execute um dos comandos a seguir para converter o arquivo YAML em base64. Você também pode usar qualquer conversor base64 online para converter o arquivo.

exemplo Linux/macOS
echo -n scraper config updated with dns records | base64
exemplo Windows PowerShell
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(scraper config updated with dns records))
To create a scraper using the AWS CLI

Use o comando create-scraper para criar um extrator usando o AWS Command Line Interface. O exemplo a seguir cria um extrator na Região Leste dos EUA (Norte da Virgínia). Substitua o example conteúdo pelas informações do cluster do Amazon MSK e forneça a configuração do seu scraper.

nota

Configure o grupo de segurança e as sub-redes para corresponder ao seu cluster de destino. Inclua pelo menos duas sub-redes em duas zonas de disponibilidade.

aws amp create-scraper \ --source vpcConfiguration="{securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ --scrape-configuration configurationBlob=base64-encoded-blob \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:123456789012:workspace/ws-workspace-id'}"
  • Veja a seguir uma lista completa das operações do raspador que você pode usar com a AWS API:

    Crie um extrator com a operação CreateScraper da API.

  • Liste os extratores existentes com a operação ListScrapers da API.

  • Atualize o alias, a configuração ou o destino de um raspador com a operação da UpdateScraperAPI.

  • Exclua um extrator com a operação DeleteScraper da API.

  • Obtenha mais detalhes sobre um extrator com a operação DescribeScraper da API.

Configuração entre contas

Para criar um extrator em uma configuração entre contas quando o cluster Amazon MSK do qual você deseja coletar métricas estiver em uma conta diferente do coletor Amazon Managed Service for Prometheus, use o procedimento abaixo.

Por exemplo, quando você tem duas contas, a primeira conta de origem account_id_source na qual o Amazon MSK está localizado e uma segunda conta de destino account_id_target na qual reside o espaço de trabalho do Amazon Managed Service for Prometheus.

Como criar um extrator em uma configuração entre contas
  1. Na conta de origem, crie um perfil arn:aws:iam::111122223333:role/Source e adicione a política de confiança a seguir.

    { "Effect": "Allow", "Principal": { "Service": [ "scraper.aps.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id" }, "StringEquals": { "AWS:SourceAccount": "111122223333" } } }
  2. Em cada combinação de origem (cluster Amazon MSK) e destino (espaço de trabalho do Amazon Managed Service for Prometheus), você precisa criar uma arn:aws:iam::444455556666:role/Target função e adicionar a seguinte política de confiança com permissões para. AmazonPrometheusRemoteWriteAccess

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Source" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id" } } }
  3. Crie um extrator com a opção --role-configuration.

    aws amp create-scraper \ --source vpcConfiguration="{subnetIds=[subnet-subnet-id], "securityGroupIds": ["sg-security-group-id"]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::111122223333:role/Source", "targetRoleArn":"arn:aws:iam::444455556666:role/Target"}'
  4. Valide a criação do extrator.

    aws amp list-scrapers { "scrapers": [ { "scraperId": "s-example123456789abcdef0", "arn": "arn:aws:aps:aws-region:111122223333:scraper/s-example123456789abcdef0": "arn:aws:iam::111122223333:role/Source", "status": "ACTIVE", "creationTime": "2025-10-27T18:45:00.000Z", "lastModificationTime": "2025-10-27T18:50:00.000Z", "tags": {}, "statusReason": "Scraper is running successfully", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'" } }, "scrapeConfiguration": { "configurationBlob": "<base64-encoded-blob>" } } ] }

Alteração entre uma RoleConfiguration função vinculada ao serviço

Quando quiser voltar para um perfil vinculado ao serviço em vez de RoleConfiguration para gravar em um espaço de trabalho do Amazon Managed Service for Prometheus, você deve atualizar o UpdateScraper e fornecer um espaço de trabalho na mesma conta do extrator sem o RoleConfiguration. O RoleConfiguration será removido do extrator, e o perfil vinculado ao serviço será usado.

Ao alterar entre os espaços de trabalho na mesma conta como o extrator, para continuar usando o RoleConfiguration, será necessário fornecer o RoleConfiguration novamente em UpdateScraper.

Encontrar e excluir extratores

Você pode usar a AWS API ou a AWS CLI para listar os scrapers em sua conta ou excluí-los.

nota

Verifique se você está usando a versão mais recente do AWS CLI ou SDK. A versão mais recente do SDK fornece os recursos e as funcionalidades mais recentes, além de atualizações de segurança. Como alternativa, use AWS CloudShell, que fornece uma experiência sempre na linha de up-to-date comando, automaticamente.

Para listar todos os extratores na conta, use a operação ListScrapers da API.

Como alternativa, com o AWS CLI, ligue para:

aws amp list-scrapers

ListScrapers retorna todos os extratores da conta, por exemplo:

{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:aws-region:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "vpcConfiguration": { "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:aws-region:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }

Para excluir um extrator, localize o scraperId do extrator que deseja excluir usando a operação ListScrapers e, em seguida, use a operação DeleteScraper para excluí-lo.

Como alternativa, com o AWS CLI, ligue para:

aws amp delete-scraper --scraper-id scraperId

Métricas coletadas do Amazon MSK

Quando você faz a integração com o Amazon MSK, o coletor do Amazon Managed Service for Prometheus coleta automaticamente as seguintes métricas:

Métrica Descrição e Objetivo

jmx_config_reload_failure_total

Número total de vezes que o exportador JMX falhou ao recarregar seu arquivo de configuração.

jmx_scrape_duration_seconds

Tempo gasto para coletar métricas do JMX em segundos para o ciclo de coleta atual.

jmx_scrape_error

Indica se ocorreu um erro durante a coleta da métrica JMX (1 = erro, 0 = sucesso).

Java_lang_memória_ _usado HeapMemoryUsage

Quantidade de memória heap (em bytes) usada atualmente pela JVM.

Java_lang_memória_ _max HeapMemoryUsage

Quantidade máxima de memória heap (em bytes) que pode ser usada para gerenciamento de memória.

Java_lang_memória_ _usado NonHeapMemoryUsage

Quantidade de memória não heap (em bytes) usada atualmente pela JVM.

kafka_cluster_Partition_Value

Estado ou valor atual relacionado às partições de cluster do Kafka, detalhado por ID de partição e tópico.

kafka_consumer_consumer_coordinator_metrics_assigned_partitions

Número de partições atualmente atribuídas a esse consumidor.

kafka_consumer_consumer_coordinator_metrics_commit_latency_avg

Tempo médio necessário para confirmar compensações em milissegundos.

kafka_consumer_consumer_coordinator_metrics_commit_rate

Número de confirmações de deslocamento por segundo.

kafka_consumer_consumer_coordinator_metrics_failed_rebalance_total

Número total de reequilíbrios de grupos de consumidores malsucedidos.

kafka_consumer_consumer_coordinator_metrics_last_heartbeat_seconds_ago

Número de segundos desde que a última pulsação foi enviada ao coordenador.

kafka_consumer_consumer_coordinator_metrics_rebalance_latency_avg

Tempo médio gasto para rebalancear grupos de consumidores em milissegundos.

kafka_consumer_consumer_coordinator_metrics_rebalance_total

Número total de reequilíbrios de grupos de consumidores.

kafka_consumer_consumer_fetch_manager_metrics_bytes_consumed_rate

Número médio de bytes consumidos por segundo pelo consumidor.

kafka_consumer_consumer_fetch_manager_metrics_fetch_latency_avg

Tempo médio gasto para uma solicitação de busca em milissegundos.

kafka_consumer_consumer_fetch_manager_metrics_fetch_rate

Número de solicitações de busca por segundo.

kafka_consumer_consumer_fetch_manager_metrics_records_consumed_rate

O número médio de registros consumidos por segundo.

kafka_consumer_consumer_fetch_manager_metrics_records_lag_max

O atraso máximo em termos de número de registros para qualquer partição desse consumidor.

kafka_consumer_consumer_metrics_connection_count

Número atual de conexões ativas.

kafka_consumer_consumer_metrics_incoming_byte_rate

Número médio de bytes recebidos por segundo de todos os servidores.

kafka_consumer_consumer_metrics_last_poll_seconds_ago

Número de segundos desde a última chamada do consumidor poll().

kafka_consumer_consumer_metrics_request_rate

Número de solicitações enviadas por segundo.

kafka_consumer_consumer_metrics_response_rate

Número de respostas recebidas por segundo.

kafka_consumer_group_ _Valor ConsumerLagMetrics

Valor atual do atraso do consumidor para um grupo de consumidores, indicando o quanto o consumidor está atrasado.

kafka_controller_ _Valor KafkaController

Estado ou valor atual do controlador Kafka (1 = controlador ativo, 0 = não ativo).

kafka_controller_ _Contagem ControllerEventManager

Número total de eventos de controlador processados.

kafka_controller_ _Mean ControllerEventManager

Tempo médio gasto para processar eventos do controlador.

controlador_kafka_ _ ControllerStats MeanRate

Taxa média de operações de estatística de controlador por segundo.

kafka_coordinator_group_ _Valor GroupMetadataManager

Estado ou valor atual do gerenciador de metadados do grupo para grupos de consumidores.

kafka_log_ _Contagem LogFlushStats

Número total de operações de descarga de log.

kafka_log_ _Mean LogFlushStats

Tempo médio gasto com operações de descarga de log.

kafka_log_ _ LogFlushStats MeanRate

Taxa média de operações de descarga de log por segundo.

kafka_network_ _Contagem RequestMetrics

Contagem total de solicitações de rede processadas.

kafka_network_ _Mean RequestMetrics

Tempo médio gasto para processar solicitações de rede.

rede_kafka_ _ RequestMetrics MeanRate

Taxa média de solicitações de rede por segundo.

Kafka_Network_Acceptor_ MeanRate

Taxa média de conexões aceitas por segundo.

kafka_server_Fetch_queue_size

Tamanho atual da fila de solicitações de busca.

kafka_server_Produce_queue_size

Tamanho atual da fila de solicitações de produção.

kafka_server_Request_queue_size

Tamanho atual da fila de solicitações gerais.

kafka_server_ _Contagem BrokerTopicMetrics

Contagem total de operações de tópicos da corretora (mensagensin/out, bytes in/out).

servidor_kafka_ _ BrokerTopicMetrics MeanRate

Taxa média de operações de tópico de agente por segundo.

servidor_kafka_ _ BrokerTopicMetrics OneMinuteRate

Taxa média móvel de um minuto das operações temáticas do agente.

kafka_server_ _Valor DelayedOperationPurgatory

Número atual de operações atrasadas no purgatório (esperando para serem concluídas).

servidor_kafka_ _ DelayedFetchMetrics MeanRate

Taxa média de operações de busca atrasadas por segundo.

kafka_server_ _Valor FetcherLagMetrics

Valor atual do atraso para threads de busca de réplicas (o quanto está atrás do líder).

servidor_kafka_ _ FetcherStats MeanRate

Taxa média de operações de busca por segundo.

kafka_server_ _Valor ReplicaManager

Estado ou valor atual do gerenciador de réplicas.

servidor_kafka_ _ ReplicaManager MeanRate

Taxa média de operações do gerenciador de réplicas por segundo.

servidor_kafka_ _byte_rate LeaderReplication

Taxa de bytes replicados por segundo para partições em que esse agente é o líder.

kafka_server_group_coordinator_metrics_group_completed_rebalance_count

Número total de reequilíbrios concluídos de grupos de consumidores.

kafka_server_group_coordinator_metrics_offset_commit_count

Número total de operações de confirmação de deslocamento.

kafka_server_group_coordinator_metrics_offset_commit_rate

Taxa de operações de confirmação de deslocamento por segundo.

kafka_server_socket_server_metrics_connection_count

Número atual de conexões ativas.

kafka_server_socket_server_metrics_connection_creation_rate

Taxa de criação de novas conexões por segundo.

kafka_server_socket_server_metrics_connection_close_rate

Taxa de fechamentos de conexão por segundo.

kafka_server_socket_server_metrics_failed_authentication_total

Número total de tentativas de autenticação malsucedidas.

kafka_server_socket_server_metrics_incoming_byte_rate

Taxa de entrada de bytes por segundo.

kafka_server_socket_server_metrics_outgoing_byte_rate

Taxa de bytes de saída por segundo.

kafka_server_socket_server_metrics_request_rate

Taxa de solicitações por segundo.

kafka_server_socket_server_metrics_response_rate

Taxa de respostas por segundo.

kafka_server_socket_server_metrics_network_io_rate

Taxa de I/O operações de rede por segundo.

kafka_server_socket_server_metrics_io_ratio

Fração do tempo gasto em I/O operações.

kafka_server_controller_channel_metrics_connection_count

Número atual de conexões ativas para canais do controlador.

kafka_server_controller_channel_metrics_incoming_byte_rate

Taxa de bytes de entrada por segundo para canais do controlador.

kafka_server_controller_channel_metrics_outgoing_byte_rate

Taxa de bytes enviados por segundo para os canais do controlador.

kafka_server_controller_channel_metrics_request_rate

Taxa de solicitações por segundo para os canais do controlador.

kafka_server_replica_fetcher_metrics_connection_count

Número atual de conexões ativas para o buscador de réplicas.

kafka_server_replica_fetcher_metrics_incoming_byte_rate

Taxa de bytes de entrada por segundo para o buscador de réplicas.

kafka_server_replica_fetcher_metrics_request_rate

Taxa de solicitações por segundo para o buscador de réplicas.

kafka_server_replica_fetcher_metrics_failed_authentication_total

Número total de tentativas de autenticação malsucedidas para o coletor de réplicas.

kafka_server_ _Contagem ZooKeeperClientMetrics

Contagem total das operações ZooKeeper do cliente.

kafka_server_ _Mean ZooKeeperClientMetrics

Latência média das operações do ZooKeeper cliente.

kafka_server_ _Valor KafkaServer

Estado ou valor atual do servidor Kafka (normalmente indica que o servidor está em execução).

node_cpu_seconds_total

Total de segundos CPUs gastos em cada modo (usuário, sistema, inatividade etc.), dividido por CPU e modo.

node_disk_read_bytes_total

Número total de bytes lidos com sucesso dos discos, dividido por dispositivo.

node_disk_reads_completed_total

Número total de bytes lidos com sucesso dos discos, dividido por dispositivo.

node_disk_writes_completed_total

Número total de gravações concluídas com sucesso para discos, dividido por dispositivo.

node_disk_written_bytes_total

Número total de bytes gravados com sucesso nos discos, dividido por dispositivo.

node_filesystem_avail_bytes

Espaço disponível do sistema de arquivos em bytes para usuários que não são usuários-raiz, dividido por dispositivo e ponto de montagem.

node_filesystem_size_bytes

Tamanho total do sistema de arquivos em bytes, dividido por dispositivo e ponto de montagem.

node_filesystem_free_bytes

Espaço livre do sistema de arquivos, em bytes, dividido por dispositivo e ponto de montagem.

node_filesystem_files

Número total de nós de arquivo (inodes) no sistema de arquivos, dividido por dispositivo e ponto de montagem.

node_filesystem_files_free

Número de nós de arquivo livres (inodes) no sistema de arquivos, dividido por dispositivo e ponto de montagem.

node_filesystem_readonly

Indica se o sistema de arquivos está montado somente para leitura (1 = somente leitura, 0 = leitura-gravação).

node_filesystem_device_error

Indica se ocorreu um erro ao obter estatísticas do sistema de arquivos (1 = erro, 0 = sucesso).

Limitações

A integração atual do Amazon MSK com o Amazon Managed Service for Prometheus tem as seguintes limitações:

  • Compatível somente com clusters provisionados do Amazon MSK (não disponível para o Amazon MSK Serverless)

  • Não é compatível com clusters Amazon MSK com acesso público habilitado em combinação com o modo de KRaft metadados

  • Não é compatível com os agentes do Amazon MSK Express

  • Atualmente, oferece suporte a um mapeamento 1:1 entre os clusters do Amazon MSK e os coletores/espaços de trabalho do Amazon Managed Service for Prometheus