View a markdown version of this page

使用可观测性加速器为 Prometheus 设置亚马逊托管服务 AWS - Amazon Managed Service for Prometheus

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

使用可观测性加速器为 Prometheus 设置亚马逊托管服务 AWS

AWS 为您的 Amazon Elastic Kubernetes Service(Amazon EKS)项目提供可观察性工具,包括监控、日志、警报和控制面板。这包括适用于 Prometheus 的亚马逊托管服务、亚马逊托管 Grafana、Dist ro for 和其他AWS 工具。 OpenTelemetry为了帮助您一起使用这些工具, AWS 提供了名为 “可观察性加速器” 的 Terraform 模块,用于通过这些服务配置可观测性。AWS

AWS Observability Accelerator 为适用于 Prometheus 的亚马逊托管服务提供了两个收集器配置文件:

  • 托管指标(无代理)— 使用适用于 Prometheus 的 Amazon 托管服务收集器,这是一种在集群外部运行的完全托管的无代理抓取工具。没有需要管理的收集器 pod。仅限指标。

  • 自我管理-通过 Helm 在集群中部署 OpenTelemetry 收集器。支持指标、跟踪 (AWS X-Ray) 和日志 (Amazon CloudWatch)。

本节将介绍这两个选项,首先介绍推荐的无代理方法。

Terraform 模板和详细说明可以在适用于 Terraform AWS 的可观察性加速器页面上找到。 GitHub

先决条件

要使用 AWS 可观测性加速器,您必须拥有现有 Amazon EKS 集群,并且必须满足以下先决条件:

  • AWS CLI— 用于从命令行调用 AWS 功能。

  • kubectl – 用于从命令行控制您的 EKS 集群。

  • Terraform (>= 1.5.0) — 用于自动为该解决方案创建资源。您必须为 AWS 提供商设置一个 IAM 角色,该角色有权在您的账户中创建和管理适用于 Prometheus 的亚马逊托管服务、Amazon Managed Grafana 和 IAM。 AWS 有关如何为 Terraform 配置 AWS 提供商的更多信息,请参阅 Terraform 文档中的 AWS provider

使用托管指标(无代理)示例

此示例使用适用于 Prometheus 的亚马逊托管服务收集器从您的 Amazon EKS 集群中抓取 Prometheus 指标,而无需部署任何收集器 pod。收集器需要在两个不同的可用区中至少有两个子网。有关更多详细信息,请参阅中的eks-amp-managed示例 GitHub。

使用无代理基础设施监控 Terraform 模块
  1. 在要创建项目的文件夹中,使用以下命令克隆存储库。

    git clone https://github.com/aws-observability/terraform-aws-observability-accelerator.git
  2. 使用以下命令初始化 Terraform。

    cd examples/eks-amp-managed terraform init
  3. 创建一个新 terraform.tfvars 文件,如以下示例所示。使用您的 Amazon EKS 集群的 AWS 区域、集群 ID 和 VPC 联网详细信息。收集器需要在两个不同的可用区中至少有两个子网。

    # (mandatory) AWS Region where your resources will be located aws_region = "eu-west-1" # (mandatory) EKS Cluster name eks_cluster_id = "my-eks-cluster" # (mandatory) Subnets for the managed scraper (>= 2 AZs) scraper_subnet_ids = ["subnet-aaa", "subnet-bbb"] # (mandatory) Security group allowing scraper access to the EKS API scraper_security_group_ids = ["sg-xxx"]
  4. 如果还没有要使用的 Amazon Managed Grafana 工作区,请创建一个。有关如何创建新工作区的信息,请参阅《Amazon Managed Grafana 用户指南》中的创建您的首个工作区

  5. 在命令行中运行以下命令,为 Terraform 创建两个变量以使用您的 Grafana 工作区。你需要用你的 Gra grafana-workspace-id fana 工作区中的 ID 替换。

    export TF_VAR_managed_grafana_workspace_id=grafana-workspace-id export TF_VAR_grafana_api_key=`aws grafana create-workspace-api-key --key-name "observability-accelerator-$(date +%s)" --key-role ADMIN --seconds-to-live 1200 --workspace-id $TF_VAR_managed_grafana_workspace_id --query key --output text`
  6. [可选] 要使用适用于 Prometheus 的现有亚马逊托管服务工作空间,请将 ID 添加到terraform.tfvars文件中,如下例所示,将替换为您的 Prometheus 工作空间 ID。prometheus-workspace-id如果您未指定现有工作区,则将为您创建一个新的 Prometheus 工作区。

    # (optional) Leave it empty for a new workspace to be created managed_prometheus_workspace_id = "prometheus-workspace-id"
  7. 使用以下命令部署解决方案。

    terraform apply -var-file=terraform.tfvars

这将在您的 AWS 账户中创建资源,包括以下资源:

  • 一个新的 Amazon Managed Service for Prometheus 工作区(除非您选择使用现有工作区)。

  • 适用于 Prometheus 的亚马逊托管服务收集器(无代理抓取器),配置为从您的亚马逊 EKS 集群中抓取 Prometheus 指标。

  • Prometheus 在您的 Prometheus 亚马逊托管服务工作区中记录和提醒规则。

  • kube-state-metrics 并在您的 Amazon EKS 集群中部署用于基础设施指标的节点导出器。

  • 您当前工作区中的全新 Amazon Managed Grafana 数据来源和控制面板。仪表板将列在 EKS 监控下。

备选方案:自行管理 OpenTelemetry 的收集器

如果您需要跟踪、日志或对收集管道的完全控制,请使用自我管理的配置文件。这将通过 Helm 在你的 Amazon EKS 集群中部署一个 OpenTelemetry 收集器,该收集器配置为抓取 Prometheus 指标并远程写入适用于 Prometheus 的亚马逊托管服务。它还支持跟踪 (AWS X-Ray) 和日志 (Amazon CloudWatch)。有关更多详细信息,请参阅中的eks-amp-otel示例 GitHub。

使用自我管理的 Terraform 模块
  1. 克隆存储库并初始化 Terraform。

    git clone https://github.com/aws-observability/terraform-aws-observability-accelerator.git cd examples/eks-amp-otel terraform init
  2. 创建一个新 terraform.tfvars 文件,如以下示例所示。

    # (mandatory) AWS Region where your resources will be located aws_region = "eu-west-1" # (mandatory) EKS Cluster name eks_cluster_id = "my-eks-cluster"
  3. 使用与托管指标示例相同的步骤设置 Amazon Managed Grafana 工作空间和 API 密钥(上面的步骤 4-6)。

  4. 使用以下命令部署解决方案。

    terraform apply -var-file=terraform.tfvars

这将在您的 AWS 账户中创建以下资源(与无代理方法不同,收集器在您的集群内运行):

  • 适用于 Prometheus 工作空间的亚马逊托管服务(如果未提供)。

  • 包含数据源和控制面板的 Amazon 托管 Grafana 工作空间。

  • 通过 Helm 在你的 Amazon EKS 集群中部署的 OpenTelemetry 收集器,配置为抓取 Prometheus 指标并远程写入适用于 Prometheus 的亚马逊托管服务。

  • OpenTelemetry 收集器的服务账户 (IRSA) 的 IAM 角色。

  • 将管道追踪到 AWS X-Ray(默认启用)。

  • 发送至 Amazon 的日志管道 CloudWatch (默认启用)。

查看控制面板

要查看您的新控制面板,请在您的 Amazon Managed Grafana 工作区中打开特定的控制面板。基础架构仪表板由 Terraform 自动配置。有关使用 Amazon Managed Grafana 的更多信息,请参阅《Amazon Managed Grafana 用户指南》中的使用 Grafana 工作区