

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

# 使用可观测性加速器为 Prometheus 设置亚马逊托管服务 AWS
<a name="obs_accelerator"></a>

AWS 为您的 Amazon Elastic Kubernetes Service（Amazon EKS）项目提供可观察性工具，包括监控、日志、警报和控制面板。这包括适用于 Prometheus 的亚马逊托管服务、[亚马逊托管 Grafana、Dist](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) ro for 和其他[AWS 工具](https://aws-otel.github.io/)。 OpenTelemetry[为了帮助您一起使用这些工具， AWS 提供了名为 “可观察性加速器” 的 Terraform 模块，用于通过这些服务配置可观测性。AWS](https://github.com/aws-observability/terraform-aws-observability-accelerator)

AWS Observability Accelerator 为适用于 Prometheus 的亚马逊托管服务提供了两个收集器配置文件：
+ **托管指标（无代理）**— 使用适用于 [Prometheus 的 Amazon 托管服务收集器，这是一种在](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector.html)集群外部运行的完全托管的无代理抓取工具。没有需要管理的收集器 pod。仅限指标。
+ **自我管理**-通过 Helm 在集群中部署 OpenTelemetry 收集器。支持指标、跟踪 (AWS X-Ray) 和日志 (Amazon CloudWatch)。

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

Terraform 模板和详细说明可以在[适用于 Terraform AWS 的可观察性加速器页面](https://github.com/aws-observability/terraform-aws-observability-accelerator)上找到。 GitHub 

## 先决条件
<a name="obs-accelerator-prereq"></a>

要使用 AWS 可观测性加速器，您必须拥有现有 Amazon EKS 集群，并且必须满足以下先决条件：
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)— 用于从命令行调用 AWS 功能。
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) – 用于从命令行控制您的 EKS 集群。
+ [Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli) (>= 1.5.0) — 用于自动为该解决方案创建资源。您必须为 AWS 提供商设置一个 IAM 角色，该角色有权在您的账户中创建和管理适用于 Prometheus 的亚马逊托管服务、Amazon Managed Grafana 和 IAM。 AWS 有关如何为 Terraform 配置 AWS 提供商的更多信息，请参阅 *Terraform 文档*中的 [AWS provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)。

## 使用托管指标（无代理）示例
<a name="obs-accelerator-managed-metrics"></a>

此示例使用适用于 Prometheus 的亚马逊托管服务收集器从您的 Amazon EKS 集群中抓取 Prometheus 指标，而无需部署任何收集器 pod。收集器需要在两个不同的可用区中至少有两个子网。有关更多详细信息，请参阅中的[eks-amp-managed](https://github.com/aws-observability/terraform-aws-observability-accelerator/tree/main/examples/eks-amp-managed)示例 GitHub。

**使用无代理基础设施监控 Terraform 模块**

1. 在要创建项目的文件夹中，使用以下命令克隆存储库。

   ```
   git clone https://github.com/aws-observability/terraform-aws-observability-accelerator.git
   ```

1. 使用以下命令初始化 Terraform。

   ```
   cd examples/eks-amp-managed
   
   terraform init
   ```

1. 创建一个新 `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}}"]
   ```

1. 如果还没有要使用的 Amazon Managed Grafana 工作区，请创建一个。有关如何创建新工作区的信息，请参阅《Amazon Managed Grafana 用户指南》**中的[创建您的首个工作区](https://docs.aws.amazon.com/grafana/latest/userguide/getting-started-with-AMG.html#AMG-getting-started-workspace-create)。

1. 在命令行中运行以下命令，为 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`
   ```

1. [可选] 要使用适用于 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}}"
   ```

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

   ```
   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 的收集器
<a name="obs-accelerator-self-managed"></a>

如果您需要跟踪、日志或对收集管道的完全控制，请使用自我管理的配置文件。这将通过 Helm 在你的 Amazon EKS 集群中部署一个 OpenTelemetry 收集器，该收集器配置为抓取 Prometheus 指标并远程写入适用于 Prometheus 的亚马逊托管服务。它还支持跟踪 (AWS X-Ray) 和日志 (Amazon CloudWatch)。有关更多详细信息，请参阅中的[eks-amp-otel](https://github.com/aws-observability/terraform-aws-observability-accelerator/tree/main/examples/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
   ```

1. 创建一个新 `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}}"
   ```

1. 使用与托管指标示例相同的步骤设置 Amazon Managed Grafana 工作空间和 API 密钥（上面的步骤 4-6）。

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

   ```
   terraform apply -var-file=terraform.tfvars
   ```

这将在您的 AWS 账户中创建以下资源（与无代理方法不同，收集器在您的集群内运行）：
+ 适用于 Prometheus 工作空间的亚马逊托管服务（如果未提供）。
+ 包含数据源和控制面板的 Amazon 托管 Grafana 工作空间。
+ 通过 Helm 在你的 Amazon EKS 集群中部署的 OpenTelemetry 收集器，配置为抓取 Prometheus 指标并远程写入适用于 Prometheus 的亚马逊托管服务。
+  OpenTelemetry 收集器的服务账户 (IRSA) 的 IAM 角色。
+ 将管道追踪到 AWS X-Ray（默认启用）。
+ 发送至 Amazon 的日志管道 CloudWatch （默认启用）。

## 查看控制面板
<a name="obs-accelerator-dashboards"></a>

要查看您的新控制面板，请在您的 Amazon Managed Grafana 工作区中打开特定的控制面板。基础架构仪表板由 Terraform 自动配置。有关使用 Amazon Managed Grafana 的更多信息，请参阅《Amazon Managed Grafana 用户指南》**中的[使用 Grafana 工作区](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-working-with-Grafana-workspace.html)。