View a markdown version of this page

AWS Observability Accelerator で Amazon Managed Service for Prometheus をセットアップする - Amazon Managed Service for Prometheus

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Observability Accelerator で Amazon Managed Service for Prometheus をセットアップする

AWS は、Amazon Elastic Kubernetes Service (Amazon EKS) プロジェクトのモニタリング、ログ記録、アラート、ダッシュボードなどのオブザーバビリティツールを提供します。これには、Amazon Managed Service for Prometheus、Amazon Managed GrafanaAWS Distro for OpenTelemetry、その他のツールが含まれます。これらのツールを一緒に使用しやすくするために、 は、オブザーバビリティAWS アクセラレーターと呼ばれるこれらのサービスでオブザーバビリティを設定する Terraform モジュール AWS を提供します。

AWS Observability Accelerator には、Amazon Managed Service for Prometheus 用の 2 つのコレクタープロファイルが用意されています。

  • マネージドメトリクス (エージェントレス) – Amazon Managed Service for Prometheus コレクターを使用します。これは、クラスターの外部で実行されるフルマネージド型のエージェントレススクレイパーです。管理するコレクターポッドはありません。メトリクスのみ。

  • セルフマネージド – クラスターに Helm 経由で OpenTelemetry Collector をデプロイします。メトリクス、トレース (AWS X-Ray)、ログ (Amazon CloudWatch) をサポートします。

このセクションでは、推奨されるエージェントレスアプローチから始めて、両方のオプションについて説明します。

Terraform テンプレートと詳細な手順については、AWS Observability Accelerator for Terraform の GitHub ページを参照してください。

前提条件

AWS Observability Accelerator を使用するには、既存の Amazon EKS クラスターと、以下の前提条件が必要です。

  • AWS CLI – コマンドラインから AWS 機能を呼び出すために使用されます。

  • kubectl - コマンドラインから EKS クラスターを制御するために使用されます。

  • Terraform (>= 1.5.0) – このソリューションのリソースの作成を自動化するために使用されます。 AWS アカウント内で Amazon Managed Service for Prometheus、Amazon Managed Grafana、IAM を作成および管理するためのアクセス権を持つ IAM ロールを AWS プロバイダーに設定する必要があります。Terraform 用の AWS プロバイダーを構成する方法の詳細については、Terraform ドキュメントの「AWS Provider」を参照してください。

マネージドメトリクス (エージェントレス) の例を使用する

この例では、Amazon Managed Service for Prometheus コレクターを使用して、コレクターポッドをデプロイせずに Amazon EKS クラスターから Prometheus メトリクスをスクレイプします。コレクターには、2 つの異なるアベイラビリティーゾーンに少なくとも 2 つのサブネットが必要です。詳細については、GitHub の eks-amp-managed の例を参照してください。

エージェントレスインフラストラクチャモニタリング 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 ネットワークの詳細を使用します。コレクターには、2 つの異なるアベイラビリティーゾーンに少なくとも 2 つのサブネットが必要です。

    # (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 User Guide」の「Create your first workspace」を参照してください。

  5. コマンドラインで次のコマンドを実行して、Terraform で Grafana ワークスペースを使用するために必要な 2 つの変数を作成します。grafana-workspace-id は、Grafana ワークスペースの 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. (オプション) 既存の Amazon Managed Service for Prometheus ワークスペースを使用するには、次の例のように terraform.tfvars ファイルに ID を追加します。prometheus-workspace-id は Prometheus ワークスペース 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 ワークスペース (既存のワークスペースを使用する場合を除く)。

  • Amazon EKS クラスターから Prometheus メトリクスをスクレイプするように設定された Amazon Managed Service for Prometheus コレクター (エージェントレススクレイパー)。

  • Amazon Managed Service for Prometheus ワークスペースでの Prometheus の記録とアラートルール。

  • kube-state-metrics と node-exporter は、インフラストラクチャメトリクス用に Amazon EKS クラスターにデプロイされます。

  • Amazon Managed Grafana の現在のワークスペース内の新しいデータソースとダッシュボード。ダッシュボードは EKS Monitoring の下に表示されます。

代替: セルフマネージド OpenTelemetry Collector

トレース、ログ、またはコレクションパイプラインを完全に制御する必要がある場合は、セルフマネージドプロファイルを使用します。これにより、Amazon EKS クラスターに Helm 経由で OpenTelemetry Collector がデプロイされ、Prometheus メトリクスをスクレイプして Amazon Managed Service for Prometheus にリモート書き込みするように設定されます。また、トレース (AWS X-Ray) とログ (Amazon CloudWatch) もサポートしています。詳細については、GitHub の eks-amp-otel の例を参照してください。

セルフマネージド 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 アカウントに次のリソースが作成されます (エージェントレスアプローチとは異なり、コレクターはクラスター内で実行されます)。

  • Amazon Managed Service for Prometheus ワークスペース (指定されていない場合)。

  • データソースとダッシュボードを備えた Amazon Managed Grafana ワークスペース。

  • Amazon EKS クラスターの Helm 経由でデプロイされた OpenTelemetry Collector。Prometheus メトリクスをスクレイプし、Amazon Managed Service for Prometheus にリモート書き込みするように設定されています。

  • OpenTelemetry Collector のサービスアカウント (IRSA) の IAM ロール。

  • パイプラインを AWS X-Ray にトレースします (デフォルトで有効)。

  • Amazon CloudWatch にパイプラインをログに記録します (デフォルトで有効)。

ダッシュボードの表示。

新しいダッシュボードを表示するには、Amazon Managed Grafana ワークスペースでそのダッシュボードを開きます。インフラストラクチャダッシュボードは Terraform によって自動的にプロビジョニングされます。Amazon Managed Grafana の使用方法の詳細については、「Amazon Managed Grafana User Guide」の「Working in your Grafana workspace」を参照してください。