为 Amazon MSK 设置托管式 Prometheus 收集器
要使用 Amazon Managed Service for Prometheus 收集器,您必须创建一个抓取器,用于发现和提取 Amazon Managed Streaming for Apache Kafka 集群中的指标。还可以创建与 Amazon Elastic Kubernetes Service 集成的抓取器。有关更多信息,请参阅集成 Amazon EKS。
创建抓取程序
Amazon Managed Service for Prometheus 收集器由一个抓取器组成,该抓取器用于发现和收集 Amazon MSK 集群中的指标。Amazon Managed Service for Prometheus 为您管理抓取程序,为您提供所需的可扩展性、安全性和可靠性,无需您自行管理任何实例、代理或抓取程序。
您可以使用 AWS API 或 AWS CLI 按照以下过程所述创建抓取器。
创建您自己的抓取程序时有以下几个先决条件:
-
您必须先创建 Amazon MSK 集群。
-
将 Amazon MSK 集群的安全组配置为支持 Amazon VPC 内的端口 11001(JMX 导出程序)和 11002(节点导出程序)上的入站流量,因为抓取器需要访问这些 DNS 记录才能收集 Prometheus 指标。
-
Amazon MSK 集群所在的 Amazon VPC 必须启用了 DNS。
注意
集群将通过其 Amazon 资源名称(ARN)与抓取器相关联。如果删除一个集群,然后创建一个同名的新集群,新集群将重新使用 ARN。因此,抓取器将尝试收集新集群的指标。删除抓取器与删除集群是分开的。
-
以下是您可以与 AWS API 一起使用的抓取程序操作的完整列表:
使用 CreateScraper API 操作创建抓取器。
-
使用 ListScrapers API 操作列出现有的抓取器。
-
使用 UpdateScraper API 操作更新抓取器的别名、配置或目标。
-
使用 DeleteScraper API 操作删除抓取器。
-
使用 DescribeScraper API 操作获取有关抓取器的更多详细信息。
跨账户设置
要在跨账户设置中创建抓取器,而您要从中收集指标的 Amazon MSK 集群与 Amazon Managed Service for Prometheus 收集器位于不同的账户中,请使用以下过程。
例如,当您有两个账户时,第一个账户是 Amazon MSK 所在的源账户 account_id_source,另一个是 Amazon Managed Service for Prometheus 工作区所在的目标账户 account_id_target。
在跨账户设置中创建抓取器
-
在源账户中,创建角色
arn:aws:iam::并添加以下信任策略。111122223333:role/Source{ "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" } } } -
在源(Amazon MSK 集群)和目标(Amazon Managed Service for Prometheus 工作区)的每种组合上,您需要创建角色
arn:aws:iam::,并添加以下具有 AmazonPrometheusRemoteWriteAccess 的权限的信任策略。444455556666:role/Target{ "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" } } } -
使用
--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"}' -
验证抓取器创建。
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>" } } ] }
在 RoleConfiguration 和服务相关角色之间切换
当您想要切换回服务相关角色而不是 RoleConfiguration 以写入 Amazon Managed Service for Prometheus 工作区时,必须更新 UpdateScraper 并提供一个与抓取器位于相同账户中的工作区(不需要 RoleConfiguration)。系统将从抓取器中移除 RoleConfiguration,并将使用服务相关角色。
当您更改与抓取器位于相同账户中的工作区并且想要继续使用 RoleConfiguration 时,必须再次提供在 UpdateScraper 上提供 RoleConfiguration。
查找和删除抓取程序
您可以使用 AWS API 或 AWS CLI 列出您账户中的抓取程序或将其删除。
注意
确保您使用的是最新版本的 AWS CLI 或 SDK。最新版本为您提供最新的特征和功能,以及安全更新。或者使用 AWS CloudShell,它能自动提供始终最新的命令行体验。
要列出您账户中的所有抓取器,请使用 ListScrapers API 操作。
或者,通过 AWS CLI 调用:
aws amp list-scrapers
ListScrapers 返回您账户中的所有抓取程序,例如:
{ "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" } } } ] }
要删除抓取器,请使用 ListScrapers 操作查找要删除的抓取器的 scraperId,然后使用 DeleteScraper 操作将其删除。
或者,通过 AWS CLI 调用:
aws amp delete-scraper --scraper-idscraperId
从 Amazon MSK 收集的指标
当与 Amazon MSK 集成时,Amazon Managed Service for Prometheus 收集器会自动抓取以下指标:
| 指标 | 描述/用途 |
|---|---|
|
jmx_config_reload_failure_total |
JMX 导出程序未能重新加载其配置文件的总次数。 |
|
jmx_scrape_duration_seconds |
在当前收集周期内抓取 JMX 指标所花费的时间(以秒为单位)。 |
|
jmx_scrape_error |
指示在 JMX 指标抓取期间是否出现错误(1 = 错误,0 = 成功)。 |
|
java_lang_Memory_HeapMemoryUsage_used |
JVM 当前使用的堆内存量(以字节为单位)。 |
|
java_lang_Memory_HeapMemoryUsage_max |
可用于内存管理的最大堆内存量(以字节为单位)。 |
|
java_lang_Memory_NonHeapMemoryUsage_used |
JVM 当前使用的非堆内存量(以字节为单位)。 |
|
kafka_cluster_Partition_Value |
与 Kafka 集群分区相关的当前状态或值,按分区 ID 和主题细分。 |
|
kafka_consumer_consumer_coordinator_metrics_assigned_partitions |
当前分配给该使用者的分区数。 |
|
kafka_consumer_consumer_coordinator_metrics_commit_latency_avg |
提交偏移量所花费的平均时间(以毫秒为单位)。 |
|
kafka_consumer_consumer_coordinator_metrics_commit_rate |
每秒的偏移量提交次数。 |
|
kafka_consumer_consumer_coordinator_metrics_failed_rebalance_total |
失败的使用者组重新平衡总数。 |
|
kafka_consumer_consumer_coordinator_metrics_last_heartbeat_seconds_ago |
自上次向协调器发送心跳以来的秒数。 |
|
kafka_consumer_consumer_coordinator_metrics_rebalance_latency_avg |
使用者组重新平衡所花费的平均时间(以毫秒为单位)。 |
|
kafka_consumer_consumer_coordinator_metrics_rebalance_total |
使用者组重新平衡总数。 |
|
kafka_consumer_consumer_fetch_manager_metrics_bytes_consumed_rate |
使用者每秒使用的平均字节数。 |
|
kafka_consumer_consumer_fetch_manager_metrics_fetch_latency_avg |
提取请求所花费的平均时间(以毫秒为单位)。 |
|
kafka_consumer_consumer_fetch_manager_metrics_fetch_rate |
每秒的提取请求数。 |
|
kafka_consumer_consumer_fetch_manager_metrics_records_consumed_rate |
每秒使用的平均记录数。 |
|
kafka_consumer_consumer_fetch_manager_metrics_records_lag_max |
最大滞后,以该使用者中的任何分区的记录数表示。 |
|
kafka_consumer_consumer_metrics_connection_count |
当前活动的连接数。 |
|
kafka_consumer_consumer_metrics_incoming_byte_rate |
每秒从所有服务器接收的平均字节数。 |
|
kafka_consumer_consumer_metrics_last_poll_seconds_ago |
自上次使用者 poll() 调用以来的秒数。 |
|
kafka_consumer_consumer_metrics_request_rate |
每秒发送的请求数。 |
|
kafka_consumer_consumer_metrics_response_rate |
每秒接收的响应数。 |
|
kafka_consumer_group_ConsumerLagMetrics_Value |
使用者组的当前使用者滞后值,表示使用者落后的程度。 |
|
kafka_controller_KafkaController_Value |
Kafka 控制器的当前状态或值(1 = 活动控制器,0 = 不活动)。 |
|
kafka_controller_ControllerEventManager_Count |
已处理的控制器事件总数。 |
|
kafka_controller_ControllerEventManager_Mean |
处理控制器事件所花费的平均时间。 |
|
kafka_controller_ControllerStats_MeanRate |
每秒控制器统计操作的平均速率。 |
|
kafka_coordinator_group_GroupMetadataManager_Value |
使用者组的组元数据管理器的当前状态或值。 |
|
kafka_log_LogFlushStats_Count |
日志刷新操作总数。 |
|
kafka_log_LogFlushStats_Mean |
日志刷新操作所花费的平均时间。 |
|
kafka_log_LogFlushStats_MeanRate |
每秒日志刷新操作的平均速率。 |
|
kafka_network_RequestMetrics_Count |
已处理的网络请求总数。 |
|
kafka_network_RequestMetrics_Mean |
处理网络请求所花费的平均时间。 |
|
kafka_network_RequestMetrics_MeanRate |
每秒网络请求的平均速率。 |
|
kafka_network_Acceptor_MeanRate |
每秒接受的连接的平均速率。 |
|
kafka_server_Fetch_queue_size |
提取请求队列的当前大小。 |
|
kafka_server_Produce_queue_size |
生产请求队列的当前大小。 |
|
kafka_server_Request_queue_size |
常规请求队列的当前大小。 |
|
kafka_server_BrokerTopicMetrics_Count |
代理主题操作(消息输入/输出、字节输入/输出)的总数。 |
|
kafka_server_BrokerTopicMetrics_MeanRate |
每秒代理主题操作的平均速率。 |
|
kafka_server_BrokerTopicMetrics_OneMinuteRate |
代理主题操作的一分钟移动平均速率。 |
|
kafka_server_DelayedOperationPurgatory_Value |
处于等待状态(等待完成)的延迟操作的当前数量。 |
|
kafka_server_DelayedFetchMetrics_MeanRate |
每秒延迟提取操作的平均速率。 |
|
kafka_server_FetcherLagMetrics_Value |
副本提取器线程的当前滞后值(落后于领导线程的程度)。 |
|
kafka_server_FetcherStats_MeanRate |
每秒提取器操作的平均速率。 |
|
kafka_server_ReplicaManager_Value |
副本管理器的当前状态或值。 |
|
kafka_server_ReplicaManager_MeanRate |
每秒副本管理器操作的平均速率。 |
|
kafka_server_LeaderReplication_byte_rate |
对于此代理作为领导者的分区,每秒复制的字节速率。 |
|
kafka_server_group_coordinator_metrics_group_completed_rebalance_count |
完成的使用者组重新平衡的总数。 |
|
kafka_server_group_coordinator_metrics_offset_commit_count |
偏移量提交操作的总数。 |
|
kafka_server_group_coordinator_metrics_offset_commit_rate |
每秒偏移量提交操作的速率。 |
|
kafka_server_socket_server_metrics_connection_count |
当前活动的连接数。 |
|
kafka_server_socket_server_metrics_connection_creation_rate |
每秒新建连接的速率。 |
|
kafka_server_socket_server_metrics_connection_close_rate |
每秒连接关闭的速率。 |
|
kafka_server_socket_server_metrics_failed_authentication_total |
失败的身份验证尝试总数。 |
|
kafka_server_socket_server_metrics_incoming_byte_rate |
每秒传入字节数。 |
|
kafka_server_socket_server_metrics_outgoing_byte_rate |
每秒传出字节数。 |
|
kafka_server_socket_server_metrics_request_rate |
每秒请求速率。 |
|
kafka_server_socket_server_metrics_response_rate |
每秒响应速率。 |
|
kafka_server_socket_server_metrics_network_io_rate |
每秒网络 I/O 操作速率。 |
|
kafka_server_socket_server_metrics_io_ratio |
在 I/O 操作上花费的时间的比例。 |
|
kafka_server_controller_channel_metrics_connection_count |
控制器通道的当前活动连接数。 |
|
kafka_server_controller_channel_metrics_incoming_byte_rate |
控制器通道每秒传入字节的速率。 |
|
kafka_server_controller_channel_metrics_outgoing_byte_rate |
控制器通道每秒传出字节的速率。 |
|
kafka_server_controller_channel_metrics_request_rate |
控制器通道每秒的请求速率。 |
|
kafka_server_replica_fetcher_metrics_connection_count |
副本提取器的当前活动连接数。 |
|
kafka_server_replica_fetcher_metrics_incoming_byte_rate |
副本提取器的每秒传入字节的速率。 |
|
kafka_server_replica_fetcher_metrics_request_rate |
副本提取器的每秒请求速率。 |
|
kafka_server_replica_fetcher_metrics_failed_authentication_total |
副本提取器的失败的身份验证尝试总数。 |
|
kafka_server_ZooKeeperClientMetrics_Count |
ZooKeeper 客户端操作总数。 |
|
kafka_server_ZooKeeperClientMetrics_Mean |
ZooKeeper 客户端操作的平均延迟。 |
|
kafka_server_KafkaServer_Value |
Kafka 服务器的当前状态或值(通常表示服务器正在运行)。 |
|
node_cpu_seconds_total |
CPU 在每种模式(用户、系统、空闲等)下花费的总秒数,按 CPU 和模式细分。 |
|
node_disk_read_bytes_total |
成功从磁盘读取的总字节数,按设备细分。 |
|
node_disk_reads_completed_total |
成功完成的磁盘读取总数,按设备细分。 |
|
node_disk_writes_completed_total |
成功完成的磁盘写入总数,按设备细分。 |
|
node_disk_written_bytes_total |
成功写入磁盘的总字节数,按设备细分。 |
|
node_filesystem_avail_bytes |
非根用户的可用文件系统空间(以字节为单位),按设备和挂载点细分。 |
|
node_filesystem_size_bytes |
文件系统的总大小(以字节为单位),按设备和挂载点细分。 |
|
node_filesystem_free_bytes |
可用文件系统空间(以字节为单位),按设备和装载点细分。 |
|
node_filesystem_files |
文件系统上的文件节点(inode)总数,按设备和挂载点细分。 |
|
node_filesystem_files_free |
文件系统上空闲文件节点(inode)的数量,按设备和挂载点细分。 |
|
node_filesystem_readonly |
表示文件系统是否以只读方式挂载(1 = 只读,0 = 读写)。 |
|
node_filesystem_device_error |
表示在获取文件系统统计信息时是否出现错误(1 = 错误,0 = 成功)。 |
限制
当前 Amazon MSK 与 Amazon Managed Service for Prometheus 的集成存在以下限制:
-
仅对于 Amazon MSK 预置集群才支持(不适用于 Amazon MSK Serverless)
-
对于启用了公共访问且结合使用 KRaft 元数据模式的 Amazon MSK 集群不支持
-
对于 Amazon MSK Express 代理不支持
-
目前支持 Amazon MSK 集群与 Amazon Managed Service for Prometheus 收集器/工作区之间的 1:1 映射