在 Kubernetes 上设置从现有 Prometheus 服务器进行摄取 EC2 - Amazon Managed Service for Prometheus

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

在 Kubernetes 上设置从现有 Prometheus 服务器进行摄取 EC2

适用于 Prometheus 的亚马逊托管服务支持从运行亚马逊的集群和在亚马逊上运行的自管理 Kubernetes 集群中的 Prometheus 服务器提取指标。EKS EC2本节中的详细说明适用于亚马逊集群中的 Prometheus 服务器。EKS亚马逊上自行管理的 Kubernetes 集群的步骤相同,唯一的不同EC2是您需要在 Kubernetes 集群中自己为服务账户设置OIDC提供程序和IAM角色。

本部分中的说明使用 Helm 作为 Kubernetes 软件包管理器。

步骤 1:为服务帐号设置IAM角色

对于我们正在记录的入职方法,您需要在运行 Prometheus 服务器的 Amazon EKS 集群中使用服务账户的IAM角色。此类角色又称服务角色

使用服务角色,您可以将IAM角色与 Kubernetes 服务帐号相关联。然后,该服务帐号可以为使用该服务帐号的任何 Pod 中的容器提供 AWS 权限。有关更多信息,请参阅服务帐号的IAM角色

如果您尚未设置这些角色,请按照 设置服务角色从 Amazon EKS 集群中摄取指标 中的说明设置角色。

步骤 2:使用 Helm 升级现有的 Prometheus 服务器

本部分中的说明包括设置远程写入和 sigv4 以进行身份验证,并授权 Prometheus 服务器远程写入到您的 Amazon Managed Service for Prometheus 工作区。

使用 Prometheus 版本 2.26.0 或更高版本

如果您使用的是带有 2.26.0 或更高版本 Prometheus 服务器映像的 Helm 图表,请按照以下步骤操作。

使用 Helm 图表从 Prometheus 服务器设置远程写入
  1. 在您的 Helm 配置文件中创建一个新的远程写入部分:

    • ${IAM_PROXY_PROMETHEUS_ROLE_ARN}替换为您ARN在amp-iamproxy-ingest-role中创建的步骤 1:为服务帐号设置IAM角色。该角色的格式ARN应为arn:aws:iam::your account ID:role/amp-iamproxy-ingest-role

    • ${WORKSPACE_ID} 替换为您的 Amazon Managed Service for Prometheus 工作区 ID。

    • ${REGION} 替换为 Amazon Managed Service for Prometheus 工作区的区域(如 us-west-2)。

    ## The following is a set of default values for prometheus server helm chart which enable remoteWrite to AMP ## For the rest of prometheus helm chart values see: https://github.com/prometheus-community/helm-charts/blob/main/charts/prometheus/values.yaml ## serviceAccounts: server: name: amp-iamproxy-ingest-service-account annotations: eks.amazonaws.com/role-arn: ${IAM_PROXY_PROMETHEUS_ROLE_ARN} server: remoteWrite: - url: https://aps-workspaces.${REGION}.amazonaws.com/workspaces/${WORKSPACE_ID}/api/v1/remote_write sigv4: region: ${REGION} queue_config: max_samples_per_send: 1000 max_shards: 200 capacity: 2500
  2. 使用 Helm 更新您现有的 Prometheus 服务器配置:

    • prometheus-chart-name 替换为您的 Prometheus 版本名称。

    • prometheus-namespace 替换为安装了 Prometheus 服务器的 Kubernetes 命名空间。

    • my_prometheus_values_yaml 替换为 Helm 配置文件的路径。

    • current_helm_chart_version 替换为当前版本的 Prometheus 服务器 Helm 图表。您可以使用 helm list 命令找到当前的图表版本。

    helm upgrade prometheus-chart-name prometheus-community/prometheus \ -n prometheus-namespace \ -f my_prometheus_values_yaml \ --version current_helm_chart_version

使用早期版本的 Prometheus

如果您使用的是低于 2.26.0 的 Prometheus 版本,请按照以下步骤操作。这些步骤使用边车方法,因为早期版本的 Prometheus 本身不 AWS 支持签名版本 4 签名过程 (Sigv4)。AWS

这些说明假设您使用 Helm 部署 Prometheus。

从 Prometheus 服务器设置远程写入
  1. 在您的 Prometheus 服务器上,创建新的远程写入配置。首先,创建一个新的更新文件。我们将调用文件 amp_ingest_override_values.yaml

    将以下值添加到YAML文件中。

    serviceAccounts: server: name: "amp-iamproxy-ingest-service-account" annotations: eks.amazonaws.com/role-arn: "${SERVICE_ACCOUNT_IAM_INGEST_ROLE_ARN}" server: sidecarContainers: - name: aws-sigv4-proxy-sidecar image: public.ecr.aws/aws-observability/aws-sigv4-proxy:1.0 args: - --name - aps - --region - ${REGION} - --host - aps-workspaces.${REGION}.amazonaws.com - --port - :8005 ports: - name: aws-sigv4-proxy containerPort: 8005 statefulSet: enabled: "true" remoteWrite: - url: http://localhost:8005/workspaces/${WORKSPACE_ID}/api/v1/remote_write

    ${REGION} 替换为 Amazon Managed Service for Prometheus 工作区的区域。

    ${SERVICE_ACCOUNT_IAM_INGEST_ROLE_ARN}替换为您ARN在amp-iamproxy-ingest-role中创建的步骤 1:为服务帐号设置IAM角色。该角色的格式ARN应为arn:aws:iam::your account ID:role/amp-iamproxy-ingest-role

    ${WORKSPACE_ID} 替换为您的工作区 ID。

  2. 升级您的 Prometheus Helm 图表。首先,输入以下命令,找到您的 Helm 图表名称。在此命令的输出中,查找名称包含 prometheus 的图表。

    helm ls --all-namespaces

    然后,输入以下命令。

    helm upgrade --install prometheus-helm-chart-name prometheus-community/prometheus -n prometheus-namespace -f ./amp_ingest_override_values.yaml

    Replace(替换) prometheus-helm-chart-name 上一个命令中返回了 Prometheus 头盔图的名称。Replace(替换) prometheus-namespace 用你的命名空间的名字。

下载 Helm 图表

如果您尚未在本地下载 Helm 图表,则可以使用以下命令下载。

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm pull prometheus-community/prometheus --untar