本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用可观测性加速器为 Prometheus 设置亚马逊托管服务 AWS
AWS 为您的 Amazon Elastic Kubernetes Service(Amazon EKS)项目提供可观察性工具,包括监控、日志、警报和控制面板。这包括适用于 Prometheus 的亚马逊托管服务、亚马逊托管 Grafana、Dist ro for 和其他AWS 工具
AWS Observability Accelerator 为适用于 Prometheus 的亚马逊托管服务提供了两个收集器配置文件:
-
托管指标(无代理)— 使用适用于 Prometheus 的 Amazon 托管服务收集器,这是一种在集群外部运行的完全托管的无代理抓取工具。没有需要管理的收集器 pod。仅限指标。
-
自我管理-通过 Helm 在集群中部署 OpenTelemetry 收集器。支持指标、跟踪 (AWS X-Ray) 和日志 (Amazon CloudWatch)。
本节将介绍这两个选项,首先介绍推荐的无代理方法。
Terraform 模板和详细说明可以在适用于 Terraform AWS 的可观察性加速器页面
先决条件
要使用 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
使用无代理基础设施监控 Terraform 模块
-
在要创建项目的文件夹中,使用以下命令克隆存储库。
git clone https://github.com/aws-observability/terraform-aws-observability-accelerator.git -
使用以下命令初始化 Terraform。
cd examples/eks-amp-managed terraform init -
创建一个新
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"] -
如果还没有要使用的 Amazon Managed Grafana 工作区,请创建一个。有关如何创建新工作区的信息,请参阅《Amazon Managed Grafana 用户指南》中的创建您的首个工作区。
-
在命令行中运行以下命令,为 Terraform 创建两个变量以使用您的 Grafana 工作区。你需要用你的 Gra
grafana-workspace-idfana 工作区中的 ID 替换。export TF_VAR_managed_grafana_workspace_id=grafana-workspace-idexport 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` -
[可选] 要使用适用于 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" -
使用以下命令部署解决方案。
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
使用自我管理的 Terraform 模块
-
克隆存储库并初始化 Terraform。
git clone https://github.com/aws-observability/terraform-aws-observability-accelerator.git cd examples/eks-amp-otel terraform init -
创建一个新
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" -
使用与托管指标示例相同的步骤设置 Amazon Managed Grafana 工作空间和 API 密钥(上面的步骤 4-6)。
-
使用以下命令部署解决方案。
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 工作区。