选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 AWS 托管收集器

聚焦模式
使用 AWS 托管收集器 - Amazon Managed Service for Prometheus

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

要使用 Amazon Managed Service for Prometheus 收集器,您必须创建一个抓取程序,用于发现和提取您的 Amazon EKS 集群中的指标。

  • 您可以在创建 Amazon EKS 集群的过程中创建抓取程序。有关创建 Amazon EKS 集群(包括创建抓取程序)的更多信息,请参阅《Amazon EKS 用户指南》中的创建 Amazon EKS 集群

  • 您可以使用 AWS API 以编程方式创建自己的抓取工具,也可以使用. AWS CLI

Amazon Managed Service for Prometheus 收集器会抓取与 Prometheus 兼容的指标。有关与 Prometheus 兼容的指标的更多信息,请参阅与 Prometheus 兼容的指标有哪些?。Amazon EKS 集群会公开 API 服务器的指标。Kubernetes 版本1.28或更高版本的 Amazon EKS 集群也会公开和的指标。kube-scheduler kube-controller-manager有关更多信息,请参阅 Amazon EKS 用户指南中的 Prometheus 格式获取控制平面原始指标

注意

从集群中抓取指标可能会产生网络使用费。优化这些成本的方法之一是配置您的 /metrics 端点,对提供的指标进行压缩(例如使用 gzip),从而减少必须在网络上传输的数据。如何做到这一点,取决于提供指标的应用程序或库。有些库默认使用 gzip 压缩。

以下主题介绍如何创建、管理和配置抓取程序。

创建抓取程序

Amazon Managed Service for Prometheus 收集器由一个抓取程序组成,用于发现和收集 Amazon EKS 集群中的指标。Amazon Managed Service for Prometheus 为您管理抓取程序,为您提供所需的可扩展性、安全性和可靠性,无需您自行管理任何实例、代理或抓取程序。

有三种方法可以创建刮刀:

创建您自己的抓取程序时有以下几个先决条件:

  • 您必须创建了 Amazon EKS 集群。

  • 必须将 Amazon EKS 集群的集群端点访问控制设置为包括私有访问。它可以包括私有和公有访问,但必须包括私有访问。

  • Amazon EKS 集群所在的亚马逊 VPC 必须启用 DNS

注意

集群将通过其 Amazon 资源名称(ARN)与抓取器相关联。如果删除一个集群,然后创建一个同名的新集群,新集群将重新使用 ARN。因此,抓取器将尝试收集新集群的指标。删除抓取器与删除集群是分开的。

AWS API

使用 AWS API 创建抓取工具

使用 AWS API 通过 CreateScraper API 操作创建抓取程序。以下示例在 us-west-2 区域中创建抓取程序。您需要将工作空间 AWS 账户、安全和 Amazon EKS 集群信息替换为自己的信息 IDs,并提供用于抓取器的配置。

注意

安全组和子网应设置为所连接集群的安全组和子网。

您必须在至少两个可用区中至少包括两个子网。

scrapeConfiguration 是一个采用 base64 编码的 Prometheus 配置 YAML 文件。您可以通过 GetDefaultScraperConfiguration API 操作下载通用配置。有关 scrapeConfiguration 格式的更多信息,请参阅抓取程序配置

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-west-2:account-id:workspace/ws-workspace-id" } }, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name", "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": <base64-encoded-blob> } }
AWS CLI

要创建刮刀,请使用 AWS CLI

通过 AWS CLI使用 create-scraper 命令创建抓取器。以下示例在 us-west-2 区域中创建抓取程序。您需要将工作空间 AWS 账户、安全和 Amazon EKS 集群信息替换为自己的信息 IDs,并提供用于抓取器的配置。

注意

安全组和子网应设置为所连接集群的安全组和子网。

您必须在至少两个可用区中至少包括两个子网。

scrape-configuration 是一个采用 base64 编码的 Prometheus 配置 YAML 文件。您可以使用 get-default-scraper-configuration 命令下载通用配置。有关 scrape-configuration 格式的更多信息,请参阅抓取程序配置

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/cluster-name', 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:account-id:workspace/ws-workspace-id'}"

使用 AWS API 创建抓取工具

使用 AWS API 通过 CreateScraper API 操作创建抓取程序。以下示例在 us-west-2 区域中创建抓取程序。您需要将工作空间 AWS 账户、安全和 Amazon EKS 集群信息替换为自己的信息 IDs,并提供用于抓取器的配置。

注意

安全组和子网应设置为所连接集群的安全组和子网。

您必须在至少两个可用区中至少包括两个子网。

scrapeConfiguration 是一个采用 base64 编码的 Prometheus 配置 YAML 文件。您可以通过 GetDefaultScraperConfiguration API 操作下载通用配置。有关 scrapeConfiguration 格式的更多信息,请参阅抓取程序配置

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-west-2:account-id:workspace/ws-workspace-id" } }, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name", "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": <base64-encoded-blob> } }

以下是您可以与 AWS API 一起使用的抓取程序操作的完整列表:

注意

必须将您要抓取的 Amazon EKS 集群配置为允许 Amazon Managed Service for Prometheus 访问这些指标。下一个主题介绍如何配置集群。

跨账户设置

要在跨账户设置中创建抓取工具,而您要从中收集指标的 Amazon EKS 集群与适用于 Prometheus 的亚马逊托管服务收集器位于不同的账户中,请使用以下步骤。

例如,当您有两个账户时,第一个源账户account_id_source位于 Amazon EKS,第二个目标账户是 Amazon Prometheus 托管服务工作区account_id_target所在的账户。

在跨账户设置中创建抓取工具
  1. 在源账户中,创建一个角色arn:aws:iam::account_id_source:role/Source并添加以下信任策略。

    { "Effect": "Allow", "Principal": { "Service": [ "scraper.aps.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnEquals": { "aws:SourceArn": "scraper_ARN" }, "StringEquals": { "AWS:SourceAccount": "account_id" } } }
  2. 在源(Amazon EKS 集群)和目标(适用于 Prometheus 的亚马逊托管服务工作空间)的每种组合上,您都需要创建一个arn:aws:iam::account_id_target:role/Target角色并添加以下具有权限的信任策略。AmazonPrometheusRemoteWriteAccess

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id_source:role/Source" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "scraper_ARN" } } }
  3. 使用--role-configuration选项创建刮刀。

    aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id_source:cluster/xarw,subnetIds=[subnet-subnet-id]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id_target:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::account-id_source:role/Source", "targetRoleArn":"arn:aws:iam::account-id_target:role/Target"}'
  4. 验证刮板的创建。

    aws amp list-scrapers { "scrapers": [ { "scraperId": "scraper-id", "arn": "arn:aws:aps:us-west-2:account_id_source:scraper/scraper-id", "roleArn": "arn:aws:iam::account_id_source:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraperInternal_cc319052-41a3-4", "status": { "statusCode": "ACTIVE" }, "createdAt": "2024-10-29T16:37:58.789000+00:00", "lastModifiedAt": "2024-10-29T16:55:17.085000+00:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account_id_source:cluster/xarw", "securityGroupIds": [ "sg-security-group-id", "sg-security-group-id" ], "subnetIds": [ "subnet-subnet_id" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:account_id_target:workspace/ws-workspace-id" } } } ] }

在 RoleConfiguration 和服务相关角色之间切换

当您想要切换回服务相关角色而不是写入适用于 Prometheus 的 Amazon 托管服务工作区时,必须更新UpdateScraper并提供一个与抓取器相同的账户中的工作空间,而不是。RoleConfiguration RoleConfigurationRoleConfiguration将从抓取器中移除,并将使用与服务相关的角色。

当你在与抓取器相同的帐户中更改工作区并且想要继续使用时RoleConfiguration,必须再次提供 RoleConfiguration on UpdateScraper

为启用客户托管密钥的工作空间创建抓取器

要创建抓取工具,以便使用客户托管密钥将指标提取到适用于 Prometheus 的 Amazon 托管服务工作区,请使用将源和目标都--role-configuration设置为同一个账户。

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/xarw,subnetIds=[subnet-subnet_id]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::account_id:role/Source", "targetRoleArn":"arn:aws:iam::account_id:role/Target"}'

创建抓取器时的常见错误

以下是尝试创建新抓取器时最常见的问题。

  • 所需 AWS 资源不存在。指定的安全组子网Amazon EKS 集群必须存在。

  • IP 地址空间不足。在传入 CreateScraper API 的每个子网中必须至少有一个可用的 IP 地址。

配置 Amazon EKS 集群

必须将 Amazon EKS 集群配置为允许抓取程序访问指标。此配置有两个选项:

  • 使用 Amazon EKS 访问条目自动提供 Amazon Managed Service for Prometheus 收集器对集群的访问权限。

  • 手动配置 Amazon EKS 集群,以便进行托管指标抓取。

以下主题将对每个主题进行详细介绍。

将 Amazon EKS 配置为使用访问条目进行抓取器访问

使用 Amazon EKS 的访问条目是让 Amazon Managed Service for Prometheus 从集群中抓取指标的最简单方法。

必须将您要抓取的 Amazon EKS 集群配置为支持 API 身份验证。集群身份验证模式必须设置为 APIAPI_AND_CONFIG_MAP。这可在 Amazon EKS 控制台的集群详细信息的访问配置选项卡上查看。有关更多信息,请参阅《Amazon EKS 用户指南》中的支持 IAM 角色或用户访问 Amazon EKS 集群上的 Kubernetes 对象

您可以在创建集群时或在创建集群之后创建抓取器:

已创建访问条目策略

当您创建抓取器并让 Amazon Managed Service for Prometheus 为您生成访问条目策略时,它会生成以下策略。有关访问条目的更多信息,请参阅《Amazon EKS 用户指南》中的支持 IAM 角色或用户访问 Kubernetes

{ "rules": [ { "effect": "allow", "apiGroups": [ "" ], "resources": [ "nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "extensions", "networking.k8s.io" ], "resources": [ "ingresses/status", "ingresses" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "metrics.eks.amazonaws.com" ], "resources": [ "kcm/metrics", "ksh/metrics" ], "verbs": [ "get" ] }, { "effect": "allow", "nonResourceURLs": [ "/metrics" ], "verbs": [ "get" ] } ] }

手动配置 Amazon EKS 以进行抓取器访问

如果您更喜欢使用 aws-auth ConfigMap 来控制对 kubernetes 集群的访问,您仍然可以让 Amazon Managed Service for Prometheus 抓取器访问您的指标。以下步骤将支持 Amazon Managed Service for Prometheus 从您的 Amazon EKS 集群抓取指标。

注意

有关 ConfigMap 和访问条目的更多信息,请参阅《Amazon EKS 用户指南》中的支持 IAM 角色或用户访问 Kubernetes

此过程使用kubectl和 AWS CLI。有关安装 kubectl 的信息,请参阅《Amazon EKS 用户指南》中的安装 kubectl

手动配置 Amazon EKS 集群以进行托管指标抓取
  1. 使用以下文本创建名为 clusterrole-binding.yml 的文件:

    apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: aps-collector-role rules: - apiGroups: [""] resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] verbs: ["describe", "get", "list", "watch"] - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses/status", "ingresses"] verbs: ["describe", "get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] - apiGroups: ["metrics.eks.amazonaws.com"] resources: ["kcm/metrics", "ksh/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: aps-collector-user-role-binding subjects: - kind: User name: aps-collector-user apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: aps-collector-role apiGroup: rbac.authorization.k8s.io
  2. 在集群中运行以下命令。

    kubectl apply -f clusterrole-binding.yml

    这将创建集群角色绑定和规则。此示例使用 aps-collector-role 作为角色名称,使用 aps-collector-user 作为用户名。

  3. 以下命令为您提供有关带有 ID 的抓取器的信息scraper-id。这是您使用上一节中的命令创建的抓取程序。

    aws amp describe-scraper --scraper-id scraper-id
  4. describe-scraper 的结果中找到 roleArn。其格式如下所示:

    arn:aws:iam::account-id:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Amazon EKS 要求此 ARN 采用不同的格式。您必须调整返回的 ARN 的格式,以便在下一步中使用。对其进行编辑以匹配以下格式:

    arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    例如,此 ARN:

    arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7

    必须重新编写为:

    arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
  5. 使用上一步中修改过的 roleArn 以及您的集群名称和区域,在集群中运行以下命令:

    eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user

    这允许抓取程序使用您在 clusterrole-binding.yml 文件中创建的角色和用户访问集群。

查找和删除抓取程序

您可以使用 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:us-west-2: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": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster", "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }

要删除抓取程序,请使用 ListScrapers 操作查找要删除的抓取程序的 scraperId,然后使用 DeleteScraper 操作将其删除。

或者,使用 AWS CLI,拨打:

aws amp delete-scraper --scraper-id scraperId

抓取程序配置

您可以使用兼容 Prometheus 的抓取程序配置来控制抓取程序如何发现和收集指标。例如,您可以更改将指标发送到工作区的时间间隔。您还可以使用重新标记来动态重写指标的标签。抓取程序配置是一个 YAML 文件,是抓取程序定义的一部分。

创建新的抓取程序时,您需通过在 API 调用中提供 base64 编码的 YAML 文件来指定配置。您可以在 Amazon Managed Service for Prometheus API 中通过 GetDefaultScraperConfiguration 操作下载通用配置文件。

要修改刮板的配置,可以使用该UpdateScraper操作。如果您需要更新指标的来源(例如,更新到不同的 Amazon EKS 集群),则必须删除抓取工具,然后使用新的来源重新创建它。

支持的配置

有关抓取器配置格式的信息,包括可能值的详细明细,请参阅 Prometheus 文档中的 Configuration。全局配置选项和 <scrape_config> 选项描述了最常用的选项。

由于 Amazon EKS 是唯一受支持的服务,因此唯一受支持的服务发现配置(<*_sd_config>)是 <kubernetes_sd_config>

支持的配置部分的完整列表:

  • <global>

  • <scrape_config>

  • <static_config>

  • <relabel_config>

  • <metric_relabel_configs>

  • <kubernetes_sd_config>

这些部分的限制列在示例配置文件之后。

示例配置文件

以下是抓取间隔为 30 秒的 YAML 配置文件示例。此示例包括对 kube API 服务器指标的支持, kube-controller-manager以及对 kube-scheduler 指标的支持。有关更多信息,请参阅 Amazon EKS 用户指南中的 Prometheus 格式获取控制平面原始指标

global: scrape_interval: 30s external_labels: clusterArn: apiserver-test-2 scrape_configs: - job_name: pod_exporter kubernetes_sd_configs: - role: pod - job_name: cadvisor scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - replacement: kubernetes.default.svc:443 target_label: __address__ - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor # apiserver metrics - scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: default;kubernetes;https source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name # kube proxy metrics - job_name: kube-proxy honor_labels: true kubernetes_sd_configs: - role: pod relabel_configs: - action: keep source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_pod_name separator: '/' regex: 'kube-system/kube-proxy.+' - source_labels: - __address__ action: replace target_label: __address__ regex: (.+?)(\\:\\d+)? replacement: $1:10249 # Scheduler metrics - job_name: 'ksh-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics scheme: https bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name action: keep regex: default;kubernetes;https # Controller Manager metrics - job_name: 'kcm-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics scheme: https bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name action: keep regex: default;kubernetes;https

以下是 AWS 托管收集器特有的限制:

  • 抓取间隔:抓取程序配置无法将抓取间隔指定为小于 30 秒。

  • 目标:必须将 static_config 中的目标指定为 IP 地址。

  • DNS 解析 – 与目标名称相关,此配置中唯一可识别的服务器名称是 Kubernetes api 服务器 kubernetes.default.svc。所有其他计算机名称必须通过 IP 地址指定。

  • 授权 - 如果不需要授权,则省略。如果需要,则授权必须是 Bearer,并且必须指向文件 /var/run/secrets/kubernetes.io/serviceaccount/token。换句话说,如果使用,授权部分必须如下所示:

    authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    注意

    type: Bearer 是默认值,因此可以省略。

排查抓取程序配置问题

Amazon Managed Service for Prometheus 收集器可自动发现和抓取指标。但是,当您在 Amazon Managed Service for Prometheus 工作区中看不到预期的指标时,如何排查问题呢?

up 指标是一种有用的工具。对于 Amazon Managed Service for Prometheus 收集器发现的每个端点,它都会自动提供此指标。此指标有三种状态,可以帮助您对收集器内部发生的问题进行排查。

  • up 不存在 - 如果某个端点没有 up 指标,则表示收集器找不到该端点。

    如果您确定端点存在,则收集器可能无法找到该端点的原因有多种。

    • 您可能需要调整抓取配置。这一发现relabel_config可能需要调整。

    • role用于发现可能存在问题。

    • Amazon EKS 集群使用的 Amazon VPC 可能未启用 DNS,这将使收集器无法找到终端节点。

  • up 存在,但始终为 0 - 如果 up 存在,但为 0,则表示收集器能够发现端点,但找不到任何与 Prometheus 兼容的指标。

    在这种情况下,您可以尝试直接对端点使用 curl 命令。您可以验证详细信息是否正确,例如使用的协议(httphttps)、端点或端口。您还可以检查端点是否以有效的 200 响应进行响应,并遵循 Prometheus 格式。最后,响应正文不能大于支持的最大大小。(有关 AWS 托管收集器的限制,请参阅以下部分。)

  • up 存在且大于 0 - 如果 up 存在且大于 0,则表示指标将发送到 Amazon Managed Service for Prometheus。

    检查您在 Amazon Managed Service for Prometheus(或您的备用控制面板,例如 Amazon Managed Grafana)中查找的指标是否正确。您可以再次使用 curl 来检查 /metrics 端点中的预期数据。还需检查您是否没有超过其他限制,例如每个抓取程序的端点数量。您可以使用 count(up),通过检查 up 指标计数来检查正在抓取的指标端点的数量。

抓取程序限制

Amazon Managed Service for Prometheus 提供的完全托管的抓取程序几乎没有限制。

  • 区域:您的 EKS 集群、托管抓取程序和 Amazon Managed Service for Prometheus 工作区必须全部位于同一个 AWS 区域。

  • 账户:您的 EKS 集群、托管抓取程序和 Amazon Managed Service for Prometheus 工作区必须全部位于同一个 AWS 账户。

  • 收集器:每个区域每个账户最多可以有 10 个 Amazon Managed Service for Prometheus 抓取程序。

    注意

    您可以通过请求增加配额,请求提高此限额。

  • 指标响应:来自任何一个 /metrics 端点请求的响应正文不能超过 50 兆字节(MB)。

  • 每个抓取程序的端点:一个抓取程序最多可以抓取 3 万个 /metrics 端点。

  • 抓取间隔:抓取程序配置无法将抓取间隔指定为小于 30 秒。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。