本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 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 操作列出您现有的抓取程序。
-
使用 UpdateScraperAPI 操作更新抓取器的别名、配置或目的地。
-
使用 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 集群)和目标(适用于 Prometheus 的亚马逊托管服务工作空间)的每种组合上,您都需要创建一个
arn:aws:iam::角色并添加以下具有权限的信任策略。AmazonPrometheusRemoteWriteAccess444455556666: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,它可以自动提供始终使用 up-to-date命令行体验。
要列出您账户中的所有抓取程序,请使用 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_ _used HeapMemoryUsage |
JVM 当前使用的堆内存量(以字节为单位)。 |
|
java_lang_memory_ _max HeapMemoryUsage |
可用于内存管理的最大堆内存量(以字节为单位)。 |
|
java_lang_memory_ _used NonHeapMemoryUsage |
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_con ConsumerLagMetrics sumer_group_ _Val |
使用者组的当前使用者滞后值,表示使用者落后的程度。 |
|
kafka_con KafkaController troller_ _Val |
Kafka 控制器的当前状态或值(1 = 活动控制器,0 = 不活动)。 |
|
kafka_con ControllerEventManager troller_ _Cou |
已处理的控制器事件总数。 |
|
kafka_con ControllerEventManager troller_ _Me |
处理控制器事件所花费的平均时间。 |
|
kafka_con ControllerStats troller_ _ MeanRate |
每秒控制器统计操作的平均速率。 |
|
kafka_协调器_group_ _Valu GroupMetadataManager e |
使用者组的组元数据管理器的当前状态或值。 |
|
kafka_l LogFlushStats og_ _Count |
日志刷新操作总数。 |
|
kafka_l LogFlushStats og_ _Mean |
日志刷新操作所花费的平均时间。 |
|
kafka_l LogFlushStats og_ _ MeanRate |
每秒日志刷新操作的平均速率。 |
|
kafka_network_ _ RequestMetrics Cou |
已处理的网络请求总数。 |
|
kafka_network_ _ RequestMetrics Me |
处理网络请求所花费的平均时间。 |
|
kafka_network_ _ RequestMetrics MeanRate |
每秒网络请求的平均速率。 |
|
kafka_network_accept MeanRate |
每秒接受的连接的平均速率。 |
|
kafka_server_Fetch_queue_size |
提取请求队列的当前大小。 |
|
kafka_server_Produce_queue_size |
生产请求队列的当前大小。 |
|
kafka_server_Request_queue_size |
常规请求队列的当前大小。 |
|
kafka_ BrokerTopicMetrics server_ _count |
代理主题操作(消息in/out, bytes in/out)的总数。 |
|
kafka_ BrokerTopicMetrics server_ _ MeanRate |
每秒代理主题操作的平均速率。 |
|
kafka_ BrokerTopicMetrics server_ _ OneMinuteRate |
代理主题操作的一分钟移动平均速率。 |
|
kafka_ DelayedOperationPurgatory server_ _Valu |
处于等待状态(等待完成)的延迟操作的当前数量。 |
|
kafka_ DelayedFetchMetrics server_ _ MeanRate |
每秒延迟提取操作的平均速率。 |
|
kafka_ FetcherLagMetrics server_ _Valu |
副本提取器线程的当前滞后值(落后于领导者线程的程度)。 |
|
kafka_ FetcherStats server_ _ MeanRate |
每秒提取器操作的平均速率。 |
|
kafka_ ReplicaManager server_ _Valu |
副本管理器的当前状态或值。 |
|
kafka_ ReplicaManager server_ _ MeanRate |
每秒副本管理器操作的平均速率。 |
|
kafka_ LeaderReplication server_ _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_ ZooKeeperClientMetrics server_ _count |
ZooKeeper 客户机操作总数。 |
|
kafka_ ZooKeeperClientMetrics server_ _Mean |
ZooKeeper 客户端操作的平均延迟。 |
|
kafka_ KafkaServer server_ _Valu |
Kafka 服务器的当前状态或值(通常表示服务器正在运行)。 |
|
node_cpu_seconds_total |
按照 CPU 和模式细分的每种模式(用户、系统、空闲等)所 CPUs 花费的总秒数。 |
|
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 映射