Amazon Managed Grafana で Amazon EKSインフラストラクチャをモニタリングするためのソリューション - Amazon Managed Grafana

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

Amazon Managed Grafana で Amazon EKSインフラストラクチャをモニタリングするためのソリューション

Amazon Elastic Kubernetes Service インフラストラクチャのモニタリングは、Amazon Managed Grafana を使用する最も一般的なシナリオの 1 つです。このページでは、このシナリオのソリューションを提供するテンプレートについて説明します。ソリューションは [AWS Cloud Development Kit (AWS CDK)] または [Terraform] を使用してインストールできます。

このソリューションは以下を設定します。

  • Amazon Managed Service for Prometheus ワークスペースは、Amazon EKSクラスターからメトリクスを保存し、マネージドコレクターを作成してメトリクスをスクレイプし、そのワークスペースにプッシュします。詳細については、AWS 「マネージドコレクターを使用したメトリクスの取り込み」を参照してください。

  • CloudWatch エージェントを使用して Amazon EKSクラスターからログを収集します。ログは に保存され CloudWatch、Amazon Managed Grafana によってクエリされます。詳細については、「Amazon のログ記録EKS」を参照してください。

  • Amazon Managed Grafana ワークスペースでこれらのログとメトリクスをプルして、クラスターのモニタリングに役立つダッシュボードとアラートを作成します。

このソリューションを適用すると、以下のようなダッシュボードとアラートが作成されます。

  • Amazon EKSクラスターの全体的な状態を評価します。

  • Amazon EKSコントロールプレーンの状態とパフォーマンスを表示します。

  • Amazon EKS データプレーンの状態とパフォーマンスを表示します。

  • Kubernetes 名前空間全体の Amazon EKSワークロードに関するインサイトを表示します。

  • CPU、メモリ、ディスク、ネットワーク使用量など、名前空間全体のリソース使用量を表示します。

このソリューションについて

このソリューションは、Amazon EKSクラスターのメトリクスを提供するように Amazon Managed Grafana ワークスペースを設定します。メトリクスはダッシュボードとアラートを生成するために使用されます。

このメトリクスは、Kubernetes コントロールプレーンとデータプレーンの状態とパフォーマンスに関するインサイトを提供することで、Amazon EKSクラスターをより効果的に運用するのに役立ちます。Amazon EKSクラスターは、ノードレベルからポッド、Kubernetes レベルまで理解できます。これには、リソース使用状況の詳細なモニタリングが含まれます。

このソリューションには予測機能と修正機能の両方が用意されています。

  • 予測機能には以下が含まれます。

  • 修正機能には以下が含まれます。

    • インフラストラクチャと Kubernetes ワークロードレベルの問題の平均検出時間 (MTTD) を短縮します。例えば、トラブルシューティングダッシュボードを見ると、何が問題だったかに関する仮説をすぐにテストして排除できます。

    • スタック内のどこで問題が発生しているか判断します。例えば、Amazon EKSコントロールプレーンは によって完全に管理 AWS されており、APIサーバーが過負荷になったり、接続が影響を受けたりすると、Kubernetes デプロイの更新などの特定のオペレーションが失敗する可能性があります。

次の図はソリューションのダッシュボードフォルダのサンプルを示しています。

このソリューションを使用して構築した Grafana ダッシュボードフォルダの例を示すイメージ。

ダッシュボードを選択して詳細を表示できます。例えば、ワークロードのコンピューティングリソースの表示を選択すると、次のイメージに示すようなダッシュボードが表示されます。

このソリューションを使用して構築されたCPU使用状況を示す Grafana ダッシュボードの例を示す画像。

メトリクスは 1 分間のスクレイプ間隔でスクレイプされます。ダッシュボードには、特定のメトリクスに基づいて、1 分、5 分、またはそれ以上に集約されたメトリクスが表示されます。

ログはダッシュボードにも表示されるため、ログをクエリおよび分析して、問題の根本原因を見つけることができます。次の画像は、ログダッシュボードの例を示しています。

このソリューションを使用して構築した、ログを含む Grafana ダッシュボードの例を示すイメージ。

このソリューションで追跡されるメトリクスのリストについては、「追跡されるメトリクスのリスト」を参照してください。

ソリューションによって作成されたアラートのリストについては、「作成済みアラートのリスト」を参照してください。

コスト

このソリューションは、ワークスペース内にリソースを作成して使用します。作成したリソースの標準使用量に対して課金されますが、これには以下が含まれます。

  • ユーザーによる Amazon Managed Grafana ワークスペースアクセス。料金に関する詳細については、「Amazon Managed Grafana の料金」を参照してください。

  • Amazon Managed Service for Prometheus エージェントレスコレクターの使用、メトリクス分析 (クエリサンプル処理) などの、Amazon Managed Service for Prometheus メトリクスの取り込みとストレージ。このソリューションで使用されるメトリクスの数は、Amazon EKSクラスターの設定と使用状況によって異なります。

    Amazon Managed Service for Prometheus の取り込みとストレージのメトリクスは、 CloudWatch を使用して表示できます。詳細については、「Amazon Managed Service for Prometheus ユーザーガイド」の「 CloudWatchメトリクス」を参照してください。

    Amazon Managed Service for Prometheus の料金ページでは、料金計算ツールを使用してコストを見積もることができます。メトリクス数は、クラスター内のノード数と、アプリケーションが生成するメトリクスによって異なります。

  • CloudWatch ログの取り込み、保存、分析。デフォルトでは、ログ保持は有効期限が切れないように設定されています。これを調整できます CloudWatch。料金の詳細については、「Amazon CloudWatch の料金」を参照してください。

  • ネットワークコスト。クロスアベイラビリティーゾーン、リージョン、またはその他のトラフィックに対して標準 AWS ネットワーク料金が発生する場合があります。

各製品の料金ページから利用できる料金計算ツールは、ソリューションの潜在的コストを理解するのに役立ちます。以下の情報は、Amazon EKSクラスターと同じアベイラビリティーゾーンで実行されるソリューションの基本コストを取得するのに役立ちます。

製品 計算メトリクス

Amazon Managed Service for Prometheus

アクティブなシリーズ

8000 (ベース)

15,000 (ノードあたり)

平均収集間隔

60 (秒)

Amazon Managed Service for Prometheus (マネージドコレクター)

コレクター数

1

サンプル数

15 (ベース)

150 (ノードあたり)

ルールの数

161

平均ルール抽出間隔

60 (秒)

Amazon Managed Grafana

アクティブなエディタ/管理者の数

1 (またはユーザーに基づき、さらに多く)

CloudWatch (ログ)

標準 Logs: データインジェスト

24.5 GB (ベース)

0.5 GB (ノードあたり)

ログストレージ/アーカイブ (標準 Logs と Vended Logs)

ログを保存する: 1 か月の保持を前提

スキャンされた予想ログデータ

Grafana からの各ログインサイトクエリは、指定期間のグループからのすべてのログコンテンツをスキャンします。

これらの番号は、追加のソフトウェアなしで実行されるソリューションの基本番号EKSです。これにより基本コストの見積もりが得られます。また、ネットワーク使用コストもなくなります。これは、Amazon Managed Grafana ワークスペース、Amazon Managed Service for Prometheus ワークスペース、Amazon EKSクラスターが同じアベイラビリティーゾーンにあるかどうか AWS リージョン、および によって異なりますVPN。

注記

このテーブルの項目に (base) 値とリソースあたりの値 (例: (per node)) が含まれている場合は、ベース値にリソースあたりの値を加えて、そのリソースの数を乗じる必要があります。例えば、[平均アクティブ時系列] の場合、8000 + the number of nodes in your cluster * 15,000 の数値を入力します。ノードが 2 つある場合は、38,000 と入力し、これは 8000 + ( 2 * 15,000 ) です。

前提条件

このソリューションを使用する前に、次のことを行う必要があります。

  1. モニタリングする [Amazon Elastic Kubernetes Service クラスターを作成する]、またはそのクラスターがあるいる必要があります。そのクラスターには少なくとも 1 つのノードが必要です。クラスターには、プライベートアクセスを含めるようにAPIサーバーエンドポイントアクセスが設定されている必要があります (パブリックアクセスを許可することもできます)。

    認証モードにはAPIアクセスを含める必要があります ( APIまたは のいずれかに設定できますAPI_AND_CONFIG_MAP)。これによりソリューションデプロイでアクセスエントリを使用できます。

    クラスターには、以下をインストールする必要があります (コンソールを使用してクラスターを作成する場合はデフォルトで true、または を使用して AWS APIクラスターを作成する場合は追加する必要があります AWS CLI) AddOns。、 Core AWS CNIDNS、Kube-proxy 。

    クラスター名を保存して後で指定します。これは、Amazon EKSコンソールのクラスターの詳細にあります。

    注記

    Amazon EKSクラスターの作成方法の詳細については、「Amazon の開始方法EKS」を参照してください。

  2. Amazon Managed Service for Prometheus ワークスペースは、Amazon クラスターと同じ に作成する必要があります。 AWS アカウント EKS詳細については、[Amazon Managed Service for Prometheus ユーザーガイド][ワークスペースの作成] を参照してください。

    Amazon Managed Service for Prometheus ワークスペースを保存ARNして、後で を指定します。

  3. Grafana バージョン 9 以降の Amazon Managed Grafana ワークスペースは、Amazon クラスターと同じ に作成する必要があります。 AWS リージョン EKS新しいワークスペースの作成の詳細については、「Amazon Managed Grafana ワークスペースを作成する」を参照してください。

    ワークスペースロールには、Amazon Managed Service for Prometheus と Amazon CloudWatch にアクセスするためのアクセス許可が必要ですAPIs。これを行う最も簡単な方法は、サービスマネージド型のアクセス許可を使用し、Amazon Managed Service for Prometheus と を選択することです CloudWatch。AmazonPrometheusQueryAccess および AmazonGrafanaCloudWatchAccessポリシーをワークスペースIAMロールに手動で追加することもできます。

    Amazon Managed Grafana ワークスペース ID とエンドポイントを保存して後で指定します。ID は g-123example の形式になります。ID とエンドポイントは Amazon Managed Grafana コンソールにあります。エンドポイントはワークスペースURLの であり、ID が含まれています。例えば、https://g-123example.grafana-workspace.<region>.amazonaws.com/ と指定します。

  4. Terraform でソリューションをデプロイするには、アカウントからアクセスできる [Amazon S3 バケット] を作成する必要があります。これはデプロイの Terraform 状態ファイルを保存するために使用されます。

    Amazon S3 バケット ID を保存して後で指定します。

  5. Amazon Managed Service for Prometheus のアラートルールを表示するには、Amazon Managed Grafana ワークスペースの [Grafana アラート]を有効にする必要があります。

    さらに、Amazon Managed Grafana には Prometheus リソースに対する次のアクセス許可が必要です。これらのアクセス許可は、AWS データソースの Amazon Managed Grafana アクセス許可とポリシー で説明されているサービス管理ポリシーとカスタマー管理ポリシーのいずれかに追加する必要があります。

    • aps:ListRules

    • aps:ListAlertManagerSilences

    • aps:ListAlertManagerAlerts

    • aps:GetAlertManagerStatus

    • aps:ListAlertManagerAlertGroups

    • aps:PutAlertManagerSilences

    • aps:DeleteAlertManagerSilence

注記

ソリューションのセットアップが必ず必要なわけではありませんが、作成されたダッシュボードにアクセスするには、Amazon Managed Grafana ワークスペースでユーザー認証を設定する必要があります。詳細については、「Amazon Managed Grafana ワークスペースでユーザーを認証する」を参照してください。

このソリューションの使用

このソリューションは、Amazon EKSクラスターからのメトリクスのレポートとモニタリングをサポートする AWS ようにインフラストラクチャを設定します。AWS Cloud Development Kit (AWS CDK) または Terraform を使用してインストールできます。

Using AWS CDK

このソリューションを提供する 1 つの方法は、 AWS CDK アプリケーションとして提供されることです。使用するリソースに関する情報を提供すると、ソリューションはスクレイパー、ログ、ダッシュボードを作成します。

注記

ここでのステップでは、 AWS CLI、、および Node.js AWS CDKと の両方NPMがインストールされている環境があることを前提としています。make と を使用してbrew、ビルドやその他の一般的なアクションを簡素化します。

このソリューションを使用して で Amazon EKSクラスターをモニタリングするには AWS CDK
  1. 前提条件のすべてのステップを完了済みであることを確認してください。

  2. Amazon S3 からソリューションのファイルすべてをダウンロードします。ファイルは s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac にあり、次の Amazon S3 コマンドを使用してダウンロードできます。コマンドライン環境のフォルダから、このコマンドを実行します。

    aws s3 sync s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac/ .

    これらのファイルを修正する必要はありません。

  3. コマンドライン環境で (ソリューションファイルをダウンロードしたフォルダから)、次のコマンドを実行します。

    必要な環境変数を設定します。REGIONAMG_ENDPOINTEKS_CLUSTER、 を、Amazon Managed Grafana ワークスペースエンドポイント ( の形式http://g-123example.grafana-workspace.us-east-1.amazonaws.com) AWS リージョン、Amazon EKSクラスター名、Amazon Managed Service for Prometheus ワークスペース AMP_ARNに置き換えますARN。

    export AWS_REGION=REGION export AMG_ENDPOINT=AMG_ENDPOINT export EKS_CLUSTER_NAME=EKS_CLUSTER export AMP_WS_ARN=AMP_ARN
  4. Grafana を呼び出すためのADMINアクセス権を持つサービスアカウントトークンを作成する必要がありますHTTPAPIs。詳細については、「サービスアカウントを使用した Grafana HTTP API の認証」を参照してください。トークンを作成するには、次のコマンド AWS CLI で を使用できます。を Grafana ワークスペースの GRAFANA_ID ID に置き換える必要があります ( の形式になりますg-123example)。このキーは 7,200 秒または 2 時間後に期限が切れます。必要に応じて、時間 (seconds-to-live) を変更できます。デプロイにかかる時間は 1 時間未満です。

    GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \ --workspace-id GRAFANA_ID \ --grafana-role ADMIN \ --name grafana-operator-key \ --query 'id' \ --output text) # creates a new token for calling APIs export AMG_API_KEY=$(aws grafana create-workspace-service-account-token \ --workspace-id $managed_grafana_workspace_id \ --name "grafana-operator-key-$(date +%s)" \ --seconds-to-live 7200 \ --service-account-id $GRAFANA_SA_ID \ --query 'serviceAccountToken.key' \ --output text)

    次のコマンド AWS Systems Manager を使用して キーを に追加 AWS CDK することで、 API キーを で使用できるようにします。を、ソリューションが実行されるリージョン ( の形式) AWS_REGIONに置き換えますus-east-1

    aws ssm put-parameter --name "/observability-aws-solution-eks-infra/grafana-api-key" \ --type "SecureString" \ --value $AMG_API_KEY \ --region AWS_REGION \ --overwrite
  5. 次の make コマンドを実行して、プロジェクトの他の依存関係をインストールします。

    make deps
  6. 最後に、 AWS CDK プロジェクトを実行します。

    make build && make pattern aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME deploy
  7. 〔オプション] スタックの作成が完了したら、それぞれの他の前提条件 (個別の Amazon Managed Grafana ワークスペースと Amazon Managed Service for Prometheus ワークスペースを含む) を満たしている限り、同じ環境を使用して、同じリージョン内の他の Amazon EKSクラスターのスタックのインスタンスをさらに作成できます。新しいパラメータで export コマンドを再定義する必要があります。

スタックの作成が完了すると、Amazon Managed Grafana ワークスペースに、Amazon EKSクラスターのメトリクスを示すダッシュボードが表示されます。スクレイパーがメトリクスの収集を開始するため、メトリクスが表示されるまでに数分かかります。

Using Terraform

このソリューションを提供する方法の 1 つは、Terraform ソリューションを使用することです。使用するリソースに関する情報を提供すると、ソリューションはスクレイパー、ログ、ダッシュボードを作成します。

このソリューションを使用して Terraform で Amazon EKSクラスターをモニタリングするには
  1. 前提条件のすべてのステップを完了済みであることを確認してください。

  2. Amazon S3 からソリューションのファイルすべてをダウンロードします。ファイルは s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/ にあり、次の Amazon S3 コマンドを使用してダウンロードできます。コマンドライン環境内のフォルダからこのコマンドを実行して、デプロイするフォルダにディレクトリを変更します。

    aws s3 sync s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/ . cd eks-monitoring

    これらのファイルを修正する必要はありません。

  3. コマンドライン環境で (ソリューションファイルをダウンロードしたフォルダから)、次のコマンドを実行します。

    必要な環境変数を設定します。REGION、、AMG_ENDPOINTAMP_ARN、および EKS_CLUSTERS3_ID、新しいリソースをデプロイ AWS リージョン する に置き換えます (例: us-east-1)、Amazon Managed Grafana ワークスペースエンドポイント ( の形式http://g-123example.grafana-workspace.us-east-1.amazonaws.com)、Amazon EKSクラスター名、Amazon Managed Service for Prometheus ワークスペース ARN、および Amazon S3 バケット ID。

    export TF_VAR_aws_region=REGION export TF_VAR_amg_endpoint=AMG_ENDPOINT export TF_VAR_eks_cluster_name=EKS_CLUSTER export TF_VAR_amp_ws_arn=AMP_ARN export TF_VAR_s3_bucket_id=S3_ID
  4. Grafana を呼び出すためのADMINアクセス権を持つサービスアカウントトークンを作成する必要がありますHTTPAPIs。詳細については、「サービスアカウントを使用した Grafana HTTP API の認証」を参照してください。トークンを作成するには、次のコマンド AWS CLI で を使用できます。を Grafana ワークスペースの GRAFANA_ID ID に置き換える必要があります ( の形式になりますg-123example)。このキーは 7,200 秒または 2 時間後に期限が切れます。必要に応じて、時間 (seconds-to-live) を変更できます。デプロイにかかる時間は 1 時間未満です。

    GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \ --workspace-id GRAFANA_ID \ --grafana-role ADMIN \ --name grafana-operator-key \ --query 'id' \ --output text) # creates a new token for running Terraform export TF_VAR_grafana_api_key=$(aws grafana create-workspace-service-account-token \ --workspace-id $managed_grafana_workspace_id \ --name "grafana-operator-key-$(date +%s)" \ --seconds-to-live 7200 \ --service-account-id $GRAFANA_SA_ID \ --query 'serviceAccountToken.key' \ --output text)
    注記

    上記の最初のステップでは、すでにサービスアカウントをお持ちの場合はワークスペースのサービスアカウントを作成する必要はありません。この場合、 $GRAFANA_SA_IDをサービスアカウントの ID に置き換えます。

  5. 次の terraform コマンドを実行して、ソリューションで Terraform を初期化します。

    terraform init -reconfigure \ -backend-config="bucket=${TF_VAR_s3_bucket_id}" \ -backend-config="region=${TF_VAR_aws_region}" \ -backend-config="key=state/${TF_VAR_eks_cluster_name}/terraform.tfstate"
  6. 最後に、Terraform プロジェクトをデプロイします。

    terraform apply

ソリューションの作成が完了すると、Amazon Managed Grafana ワークスペースに、Amazon EKSクラスターのメトリクスを示すダッシュボードが表示されます。スクレイパーがメトリクスの収集を開始するため、メトリクスが表示されるまでに数分かかります。

追跡されるメトリクスのリスト

このソリューションは、Amazon EKSクラスターからメトリクスを収集するスクレイパーを作成します。これらのメトリクスは Amazon Managed Service for Prometheus に格納され、Amazon Managed Grafana ダッシュボードに表示されます。デフォルトでは、スクレイパーはクラスターが公開するすべての Prometheus 互換メトリクスを収集します。より多くのメトリクスを生成するクラスターにソフトウェアをインストールすると、収集されるメトリクスが増加します。必要に応じて、メトリクスをフィルタリングする設定でスクレイパーを更新して、メトリクス数を減らすことができます。

以下のメトリクスは、追加のソフトウェアがインストールされていない基本 Amazon EKSクラスター設定で、このソリューションで追跡されます。

メトリクス 説明/目的

aggregator_unavailable_apiservice

APIService 名前別に分類された、使用不可とマークAPIServicesされたゲージ。

apiserver_admission_webhook_admission_duration_seconds_bucket

アドミッションウェブフックレイテンシーの秒単位のヒストグラム。名前で識別され、オペレーション、APIリソース、タイプ (検証または承認) ごとに分類されます。

apiserver_current_inflight_requests

過去 1 秒のリクエストタイプごとの、現在使用されているこの apiserver の保留リクエスト制限の最大数。

apiserver_envelope_encryption_dek_cache_fill_percent

キャッシュされた によって現在占有されているキャッシュスロットの割合DEKs。

apiserver_flowcontrol_current_executing_requests

API Priority and Fairness サブシステムの初期 ( の場合WATCH) または任意の ( 以外の場合WATCH) 実行ステージのリクエストの数。

apiserver_flowcontrol_rejected_requests_total

Priority and Fairness サブシステムの初期 ( の場合WATCH) または任意の ( 以外の場合WATCH) API 実行ステージで拒否されたリクエストの数。

apiserver_flowcontrol_request_concurrency_limit

各優先度レベルに設定されている、実行シートの公称数。

apiserver_flowcontrol_request_execution_seconds_bucket

API Priority and Fairness サブシステムでのリクエスト実行の初期ステージ ( の場合WATCH) または任意の ( 以外の場合WATCH) ステージの期間のバケット化されたヒストグラム。

apiserver_flowcontrol_request_queue_length_after_enqueue_count

API Priority and Fairness サブシステムのリクエスト実行の初期ステージ ( の場合WATCH) または任意のステージ ( 以外の場合WATCH) の数。

apiserver_request

API サーバーリクエストを示します。

apiserver_requested_deprecated_apis

API グループ、バージョン、リソース、サブリソース、および removed_release 別に分類APIsされた、リクエストされた非推奨のゲージ。

apiserver_request_duration_seconds

verb、dry run 値、グループ、バージョン、リソース、サブリソース、スコープ、コンポーネントごとの、秒単位の応答遅延分布。

apiserver_request_duration_seconds_bucket

verb、dry run 値、グループ、バージョン、リソース、サブリソース、スコープ、コンポーネントごとの、秒単位の応答遅延分布のバケット化ヒストグラム。

apiserver_request_slo_duration_seconds

動詞、リハーサル値、グループ、バージョン、リソース、サブリソース、スコープ、コンポーネントごとのサービスレベル目標 (SLO) レスポンスレイテンシーの秒単位の分布。

apiserver_request_terminations_total

apiserver が自己防衛で終了したリクエスト数。

apiserver_request_total

動詞、リハーサル値、グループ、バージョン、リソース、スコープ、コンポーネント、HTTPレスポンスコードごとに分類された API サーバーリクエストのカウンター。

container_cpu_usage_seconds_total

cpu 累積消費時間。

container_fs_reads_bytes_total

読み取られたバイトの累積カウント。

container_fs_reads_total

完了した読み取りの累積カウント。

container_fs_writes_bytes_total

書き込まれたバイトの累積カウント。

container_fs_writes_total

完了した書き込みの累積カウント。

container_memory_cache

ページキャッシュメモリの合計。

container_memory_rss

のサイズRSS。

container_memory_swap

コンテナスワップの使用状況。

container_memory_working_set_bytes

現在のワーキングセット。

container_network_receive_bytes_total

受信したバイトの累積カウント。

container_network_receive_packets_dropped_total

受信中にドロップされたパケットの累積カウント。

container_network_receive_packets_total

受信したパケットの累積カウント。

container_network_transmit_bytes_total

送信されたバイトの累積カウント。

container_network_transmit_packets_dropped_total

送信中にドロップされたパケットの累積カウント。

container_network_transmit_packets_total

送信されたパケットの累積カウント。

etcd_request_duration_seconds_bucket

オペレーションとオブジェクトタイプごとの、秒単位の etcd リクエストのレイテンシーのバケット化ヒストグラム。

go_goroutines

現在存在する goroutine 数。

go_threads

作成された OS スレッド数。

kubelet_cgroup_manager_duration_seconds_bucket

cgroup マネージャーオペレーションの、秒単位の持続期間のバケット化ヒストグラム。メソッドにより分類。

kubelet_cgroup_manager_duration_seconds_count

cgroup マネージャーオペレーションの秒単位の持続期間。メソッドにより分類。

kubelet_node_config_error

ノードで設定関連のエラーが発生した場合はこのメトリクスが真 (1) となり、それ以外の場合は偽 (0) となります。

kubelet_node_name

ノードの名前。カウントは常に 1 です。

kubelet_pleg_relist_duration_seconds_bucket

でポッドを再リストするための秒単位の期間を示すバケット化されたヒストグラムPLEG。

kubelet_pleg_relist_duration_seconds_count

でポッドを再一覧表示する時間を秒単位で表しますPLEG。

kubelet_pleg_relist_interval_seconds_bucket

で再リストされるまでの間隔のバケット化されたヒストグラムPLEG。

kubelet_pod_start_duration_seconds_count

kubelet がポッドを初めて確認したときからポッドの実行が開始されるまでの、秒単位の持続時間カウント。

kubelet_pod_worker_duration_seconds_bucket

1 つのポッドを同期するための、秒単位の持続時間のバケット化ヒストグラム。作成、更新、同期のオペレーションタイプにより分類。

kubelet_pod_worker_duration_seconds_count

1 つのポッドを同期する、秒単位の持続時間カウント。作成、更新、同期のオペレーションタイプにより分類。

kubelet_running_containers

現在実行中のコンテナ数。

kubelet_running_pods

実行中のポッドサンドボックスを持つポッド数。

kubelet_runtime_operations_duration_seconds_bucket

ランタイムオペレーションの、秒単位の持続時間のバケット化ヒストグラム。オペレーションタイプにより分類。

kubelet_runtime_operations_errors_total

オペレーションタイプごとのランタイムオペレーションエラーの累積数。

kubelet_runtime_operations_total

オペレーションタイプごとのランタイムオペレーションの累積数。

kube_node_status_allocatable

ポッドに割り当て可能なリソースの量 (システムデーモン用に一部を予約後)。

kube_node_status_capacity

ノードで使用できるリソースの合計量。

kube_pod_container_resource_limits (CPU)

コンテナがリクエストした制限リソース数。

kube_pod_container_resource_limits (Memory)

コンテナがリクエストした制限リソース数。

kube_pod_container_resource_requests (CPU)

コンテナがリクエストしたリクエストリソース数。

kube_pod_container_resource_requests (Memory)

コンテナがリクエストしたリクエストリソース数。

kube_pod_owner

ポッドの所有者に関する情報。

kube_resourcequota

Kubernetes のリソースクォータは、名前空間内の CPU、メモリ、ストレージなどのリソースの使用制限を適用します。

node_cpu

コアあたりのCPU使用量と合計使用量を含む、ノードの使用状況メトリクス。

node_cpu_seconds_total

各モードでCPUs費やされた の秒数。

node_disk_io_time_seconds

ノードがディスクで I/O オペレーションを実行した累積合計時間。

node_disk_io_time_seconds_total

ノードがディスクで I/O オペレーションを実行した合計時間。

node_disk_read_bytes_total

ノードがディスクから読み込んだ合計バイト数。

node_disk_written_bytes_total

ノードがディスクに書き込んだ合計バイト数。

node_filesystem_avail_bytes

Kubernetes クラスター内のノードのファイルシステムで使用可能なスペースのバイト量。

node_filesystem_size_bytes

ノード上のファイルシステムの合計サイズ。

node_load1

ノードのCPU使用状況の 1 分間の負荷平均。

node_load15

ノードのCPU使用状況の 15 分の負荷平均。

node_load5

ノードのCPU使用状況の 5 分間の負荷平均。

node_memory_Buffers_bytes

ノードのオペレーティングシステムがバッファキャッシュに使用したメモリ量。

node_memory_Cached_bytes,

ノードのオペレーティングシステムがディスクキャッシュに使用したメモリ量。

node_memory_MemAvailable_bytes

アプリケーションとキャッシュで使用できるメモリ量。

node_memory_MemFree_bytes

ノードで使用可能な空きメモリ量。

node_memory_MemTotal_bytes

ノードで使用可能な物理メモリ合計量。

node_network_receive_bytes_total

ノードによって、ネットワーク経由で受信されている合計バイト数。

node_network_transmit_bytes_total

ノードによって、ネットワーク経由で送信されている合計バイト数。

process_cpu_seconds_total

秒単位のユーザーとシステムの合計CPU所要時間。

process_resident_memory_bytes

バイト単位の常駐メモリサイズ。

rest_client_requests_total

ステータスコード、メソッド、ホストでパーティション分割されたHTTPリクエストの数。

rest_client_request_duration_seconds_bucket

秒単位のリクエストレイテンシーのバケット化ヒストグラム。verb とホストで分類。

storage_operation_duration_seconds_bucket

ストレージオペレーションの持続期間のバケット化ヒストグラム。

storage_operation_duration_seconds_count

ストレージオペレーションの持続期間カウント。

storage_operation_errors_total

ストレージオペレーション中の累積エラー数。

up

モニタリング対象のターゲット (ノードなど) が稼働しているかどうかを示すメトリクス。

volume_manager_total_volumes

ボリュームマネージャーにより管理されるボリューム合計数。

workqueue_adds_total

workqueue が処理する合計追加数。

workqueue_depth

現在の workqueue の深さ。

workqueue_queue_duration_seconds_bucket

リクエストされるまでに項目が workqueue に留まる時間を秒単位で示す、バケット化ヒストグラム。

workqueue_work_duration_seconds_bucket

workqueue の項目の処理にかかる時間を秒単位で示す、バケット化ヒストグラム。

作成済みアラートのリスト

次の表はこのソリューションが作成するアラートの一覧です。Amazon Managed Service for Prometheus ではアラートがルールとして作成され、Amazon Managed Grafana ワークスペースに表示されます。

Amazon Managed Service for Prometheus ワークスペースで[ルール設定ファイルの編集]を実行すると、ルールを追加または削除してルールを変更できます。

これらの 2 つのアラートは、一般的なアラートとは少し異なる処理される特別なアラートです。問題を警告する代わりに、システムのモニタリングに使用する情報を提供します。説明にはこれらのアラートの使用方法に関する詳細が含まれています。

アラート 説明および使用状況

Watchdog

これはアラートパイプライン全体が機能することを保証するためのアラートです。このアラートは常に発せられるため、常にアラートマネージャーで発し、常に受信者に対して発する必要があります。これを通知メカニズムと統合して、このアラートが発していないときに通知を送信できます。例えば、 で DeadMansSnitch統合を使用できます PagerDuty。

InfoInhibitor

これは情報アラートを抑制するために使用するアラートです。それ自体では、情報レベルのアラートはノイズが非常に多い場合がありますが、他のアラートと組み合わせると現実的になります。このアラートは severity=info アラートがあるたびに発生し、重要度が warning または critical のアラートが同じ名前空間で発生し始めると、発生が停止します。このアラートは null レシーバーにルーティングされ、severity=info でアラートを抑制するように設定する必要があります。

次のアラートはシステムに関する情報または警告を提供します。

アラート 緊急度 説明

NodeNetworkInterfaceFlapping

warning

ネットワークインターフェイスが頻繁にステータスを変更しています。

NodeFilesystemSpaceFillingUp

warning

ファイルシステムのスペースが今後 24 時間以内に不足すると予測されます。

NodeFilesystemSpaceFillingUp

critical

ファイルシステムのスペースが今後 4 時間以内に不足すると予測されます。

NodeFilesystemAlmostOutOfSpace

warning

ファイルシステムの残りのスペースが 5% 未満です。

NodeFilesystemAlmostOutOfSpace

critical

ファイルシステムの残りのスペースが 3% 未満です。

NodeFilesystemFilesFillingUp

warning

ファイルシステムの inode が今後 24 時間以内に不足すると予測されます。

NodeFilesystemFilesFillingUp

critical

ファイルシステムの inode が今後 4 時間以内に不足すると予測されます。

NodeFilesystemAlmostOutOfFiles

warning

ファイルシステムの残りの inode が 5% 未満です。

NodeFilesystemAlmostOutOfFiles

critical

ファイルシステムの残りの inode が 3% 未満です。

NodeNetworkReceiveErrs

warning

ネットワークインターフェイスが多くの受信エラーを報告しています。

NodeNetworkTransmitErrs

warning

ネットワークインターフェイスが多くの送信エラーを報告しています。

NodeHighNumberConntrackEntriesUsed

warning

conntrack エントリ数が制限に近づいています。

NodeTextFileCollectorScrapeError

warning

Node Exporter のテキストファイルコレクターがスクレイピングに失敗しました。

NodeClockSkewDetected

warning

クロックスキューが検出されました。

NodeClockNotSynchronizzing

warning

クロックが同期していません。

NodeRAIDDegraded

critical

RAID 配列のパフォーマンスが低下している

NodeRAIDDiskFailure

warning

RAID 配列内の失敗したデバイス

NodeFileDescriptorLimit

warning

カーネルはまもなくファイル記述子制限を使い果たすと予測されます。

NodeFileDescriptorLimit

critical

カーネルはまもなくファイル記述子制限を使い果たすと予測されます。

KubeNodeNotReady

warning

ノードの準備ができていません。

KubeNodeUnreachable

warning

ノードに到達できません。

KubeletTooManyPods

info

Kubelet は最大能力で実行されています。

KubeNodeReadinessFlapping

warning

ノードの準備状況ステータスがフラッピングしています。

KubeletPlegDurationHigh

warning

Kubelet ポッドライフサイクルイベントジェネレータの再リストに時間がかかりすぎています。

KubeletPodStartUpLatencyHigh

warning

Kubelet ポッドスタートアップレイテンシーが高すぎます。

KubeletClientCertificateExpiration

warning

Kubelet クライアント証明書の有効期限が近づいています。

KubeletClientCertificateExpiration

critical

Kubelet クライアント証明書の有効期限が近づいています。

KubeletServerCertificateExpiration

warning

Kubelet サーバー証明書の有効期限が近づいています。

KubeletServerCertificateExpiration

critical

Kubelet サーバー証明書の有効期限が近づいています。

KubeletClientCertificateRenewalErrors

warning

Kubelet はクライアント証明書の更新に失敗しました。

KubeletServerCertificateRenewalErrors

warning

Kubelet はサーバー証明書の更新に失敗しました。

KubeletDown

critical

Prometheus のターゲット検出からターゲットが消えました。

KubeVersionMismatch

warning

異なるセマンティックバージョンの Kubernetes コンポーネントが実行中です。

KubeClientErrors

warning

Kubernetes APIサーバークライアントでエラーが発生しています。

KubeClientCertificateExpiration

warning

クライアント証明書の有効期限が近づいています。

KubeClientCertificateExpiration

critical

クライアント証明書の有効期限が近づいています。

KubeAggregatedAPIErrors

warning

Kubernetes 集約APIでエラーが報告されました。

KubeAggregatedAPIDown

warning

集約された Kubernetes APIがダウンしています。

KubeAPIDown

critical

Prometheus のターゲット検出からターゲットが消えました。

KubeAPITerminatedRequests

warning

kubernetes apiserver は受信リクエストの {{ $value | humanizePercentage }} を終了しました。

KubePersistentVolumeFillingUp

critical

永続ボリュームがいっぱいです。

KubePersistentVolumeFillingUp

warning

永続ボリュームがいっぱいです。

KubePersistentVolumeInodesFillingUp

critical

永続ボリュームの Inode がいっぱいです。

KubePersistentVolumeInodesFillingUp

warning

永続ボリュームの Inode がいっぱいです。

KubePersistentVolumeErrors

critical

永続ボリュームのプロビジョニングに問題があります。

KubeCPUOvercommit

warning

クラスターがCPUリソースリクエストを過剰コミットしました。

KubeMemoryOvercommit

warning

クラスターがメモリリソースリクエストをオーバーコミットしました。

KubeCPUQuotaOvercommit

warning

クラスターがCPUリソースリクエストを過剰コミットしました。

KubeMemoryQuotaOvercommit

warning

クラスターがメモリリソースリクエストをオーバーコミットしました。

KubeQuotaAlmostFull

info

名前空間のクォータがいっぱいになります。

KubeQuotaFullyUsed

info

名前空間のクォータが完全に使用されています。

KubeQuotaExceeded

warning

名前空間のクォータが制限を超えました。

CPUThrottlingHigh

info

プロセスではCPUスロットリングが高くなります。

KubePodCrashLooping

warning

ポッドがクラッシュループです。

KubePodNotReady

warning

ポッドが 15 分以上準備状態になっていません。

KubeDeploymentGenerationMismatch

warning

ロールバックの可能性に起因するデプロイ生成不一致

KubeDeploymentReplicasMismatch

warning

デプロイが予想レプリカ数と一致しません。

KubeStatefulSetReplicasMismatch

warning

StatefulSet は、予想されるレプリカの数と一致しません。

KubeStatefulSetGenerationMismatch

warning

StatefulSet ロールバックの可能性による生成の不一致

KubeStatefulSetUpdateNotRolledOut

warning

StatefulSet 更新はロールアウトされていません。

KubeDaemonSetRolloutStuck

warning

DaemonSet ロールアウトがスタックしています。

KubeContainerWaiting

warning

ポッドコンテナが 1 時間以上待機

KubeDaemonSetNotScheduled

warning

DaemonSet ポッドはスケジュールされていません。

KubeDaemonSetMisScheduled

warning

DaemonSet ポッドのスケジュールが間違っています。

KubeJobNotCompleted

warning

ジョブが時間内に完了しませんでした

KubeJobFailed

warning

ジョブの完了に失敗しました。

KubeHpaReplicasMismatch

warning

HPA は、必要な数のレプリカと一致しません。

KubeHpaMaxedOut

warning

HPA は最大レプリカで実行されています

KubeStateMetricsListErrors

critical

kube-state-metrics では、リストオペレーションでエラーが発生しています。

KubeStateMetricsWatchErrors

critical

kube-state-metrics で監視オペレーションにエラーが発生しています。

KubeStateMetricsShardingMismatch

critical

kube-state-metrics シャーディングの設定が間違っています。

KubeStateMetricsShardsMissing

critical

kube-state-metrics シャードがありません。

KubeAPIErrorBudgetBurn

critical

API サーバーが消費しているエラーバジェットが多すぎます。

KubeAPIErrorBudgetBurn

critical

API サーバーが消費しているエラーバジェットが多すぎます。

KubeAPIErrorBudgetBurn

warning

API サーバーが消費しているエラーバジェットが多すぎます。

KubeAPIErrorBudgetBurn

warning

API サーバーが消費しているエラーバジェットが多すぎます。

TargetDown

warning

1 つ以上のターゲットがダウンしています。

etcdInsufficientMembers

critical

Etcd クラスターのメンバーが不十分です。

etcdHighNumberOfLeaderChanges

warning

Etcd クラスターでリーダーの変更数が多い。

etcdNoLeader

critical

Etcd クラスターにリーダーがありません。

etcdHighNumberOfFailedGRPCRequests

warning

失敗した gRPC リクエストの数が多い クラスターを etcd しました。

etcdGRPCRequestsSlow

critical

etcd クラスター gRPC リクエストは低速です。

etcdMemberCommunicationSlow

warning

Etcd クラスターメンバーの通信が遅い。

etcdHighNumberOfFailedProposals

warning

Etcd クラスターのプロポーザルの失敗数が多い。

etcdHighFsyncDurations

warning

Etcd クラスターの同期期間が長い。

etcdHighCommitDurations

warning

Etcd クラスターが予想コミット期間より長い。

etcdHighNumberOfFailedHTTPRequests

warning

etcd クラスターはHTTPリクエストに失敗しました。

etcdHighNumberOfFailedHTTPRequests

critical

etcd クラスターには、失敗したHTTPリクエストが多数あります。

etcdHTTPRequestsSlow

warning

エッチドクラスターHTTPリクエストは低速です。

HostClockNotSynchronizing

warning

ホストクロックが同期していません。

HostOomKillDetected

warning

ホストOOMの強制終了が検出されました。

トラブルシューティング

プロジェクトのセットアップが失敗する原因がいくつかあります。必ず以下の内容を確認してください。

  • ソリューションのインストール前にすべての [前提条件] を完了する必要があります。

  • ソリューションの作成やメトリクスへのアクセスを試みる前に、クラスターに少なくとも 1 つのノードを含める必要があります。

  • Amazon EKSクラスターには、AWS CNI、、CoreDNSおよび kube-proxy アドオンがインストールされている必要があります。インストールしないとソリューションが正しく動作しません。これらは、コンソールを介してクラスターを作成するときにデフォルトでインストールされます。クラスターが を通じて作成された場合は、インストールが必要になる場合があります AWS SDK。

  • Amazon EKS ポッドのインストールがタイムアウトしました。これは、使用可能なノード容量が十分でないときに発生する場合があります。これらの問題には、次のような複数の原因があります。

    • Amazon EKSクラスターは、Amazon ではなく Fargate で初期化されましたEC2。このプロジェクトには Amazon が必要ですEC2。

    • ノードが汚染されているため使用できません。

      kubectl describe node NODENAME | grep Taints を使用するとテイントを確認できます。次に kubectl taint node NODENAME TAINT_NAME- でテイントを削除します。テイント名の後に必ず - を含めてください。

    • ノードが容量制限に達しました。この場合は新しいノードを作成、または容量を増やすことができます。

  • Grafana にダッシュボードが表示されません: 間違った Grafana ワークスペース ID を使用しています。

    以下のコマンドを実行して Grafana に関する情報を取得してください。

    kubectl describe grafanas external-grafana -n grafana-operator

    正しいワークスペース の結果を確認できますURL。予想しているものでない場合は、正しいワークスペース ID で再デプロイします。

    Spec: External: API Key: Key: GF_SECURITY_ADMIN_APIKEY Name: grafana-admin-credentials URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Status: Admin URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Dashboards: ...
  • Grafana にダッシュボードが表示されません。期限切れのAPIキーを使用しています。

    この場合の検索では、grafana 演算子を取得して、ログにエラーがないことを確認する必要があります。次のコマンドを使用して Grafana 演算子の名前を取得します。

    kubectl get pods -n grafana-operator

    次のような演算子名が返されます。

    NAME READY STATUS RESTARTS AGE grafana-operator-1234abcd5678ef90 1/1 Running 0 1h2m

    次のコマンドで演算子名を使用します。

    kubectl logs grafana-operator-1234abcd5678ef90 -n grafana-operator

    次のようなエラーメッセージは、APIキーの有効期限が切れていることを示しています。

    ERROR error reconciling datasource {"controller": "grafanadatasource", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDatasource", "GrafanaDatasource": {"name":"grafanadatasource-sample-amp","namespace":"grafana-operator"}, "namespace": "grafana-operator", "name": "grafanadatasource-sample-amp", "reconcileID": "72cfd60c-a255-44a1-bfbd-88b0cbc4f90c", "datasource": "grafanadatasource-sample-amp", "grafana": "external-grafana", "error": "status: 401, body: {\"message\":\"Expired API key\"}\n"} github.com/grafana-operator/grafana-operator/controllers.(*GrafanaDatasourceReconciler).Reconcile

    この場合、新しいAPIキーを作成し、ソリューションを再度デプロイします。問題が解決しない場合は、再びデプロイする前に次のコマンドを使用して強制的に同期できます。

    kubectl delete externalsecret/external-secrets-sm -n grafana-operator
  • CDK installs – SSMパラメータがありません。次のようなエラーが表示される場合は、cdk bootstrap を実行して再試行してください。

    Deployment failed: Error: aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME: SSM parameter /cdk-bootstrap/xxxxxxx/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/ guide/bootstrapping.html)
  • OIDC プロバイダーが既に存在する場合、デプロイは失敗する可能性があります。次のようなエラーが表示されます (この場合は、 CDKインストールの場合)。

    | CREATE_FAILED | Custom::AWSCDKOpenIdConnectProvider | OIDCProvider/Resource/Default Received response status [FAILED] from custom resource. Message returned: EntityAlreadyExistsException: Provider with url https://oidc.eks.REGION.amazonaws.com/id/PROVIDER ID already exists.

    この場合、IAMポータルに移動してOIDCプロバイダーを削除し、もう一度試してください。

  • [Terraform のインストール]cluster-secretstore-sm failed to create kubernetes rest client for update of resourcefailed to create kubernetes rest client for update of resource を含むエラーメッセージが表示されます。

    このエラーは通常、External Secrets Operator が Kubernetes クラスターに未インストールまたは有効化されていないことを示します。これはソリューションのデプロイ時にインストールされますが、ソリューションが必要なときに準備できていない場合があります。

    以下のコマンドを使用すると、KFP SDK がインストールされたことを確認できます。

    kubectl get deployments -n external-secrets

    インストールされている場合、オペレーターを完全に使用できるようになるまでに時間がかかることがあります。次のコマンドを実行して、必要なカスタムリソース定義 (CRDs) のステータスを確認できます。

    kubectl get crds|grep external-secrets

    このコマンドは、 clustersecretstores.external-secrets.ioや など、外部シークレット演算子CRDsに関連する を一覧表示する必要がありますexternalsecrets.external-secrets.io。リストにない場合は、数分待ってからもう一度確認してください。

    CRDs が登録されたら、 terraform apply を再度実行してソリューションをデプロイできます。