

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# Prometheus を使用してクラスターのメトリクスをモニタリングする
<a name="prometheus"></a>

 [Prometheus](https://prometheus.io/) は、エンドポイントをスクレイピングするモニタリングおよび時系列データベースです。収集したデータをクエリ、集計、保存することができます。また、アラートやアラートの集計にも使用できます。このトピックでは、Prometheus をマネージドオプションまたはオープンソースオプションとして設定する方法について説明します。Amazon EKS コントロールプレーンメトリクスのモニタリングは一般的なユースケースです。

Amazon Managed Service for Prometheus は Prometheus 互換のモニタリングおよびアラートサービスで、コンテナ化されたアプリケーションやインフラストラクチャを大規模に監視することが容易になります。これは、メトリクスの取り込み、ストレージ、クエリ、アラートを自動的にスケーリングするフルマネージド型サービスです。また、AWS セキュリティサービスと統合して、データへの高速かつ安全なアクセスを可能にします。オープンソースの PromQL クエリ言語を使用して、メトリクスをクエリし、それらに関するアラートを作成できます。また、Amazon Managed Service for Prometheus のアラートマネージャーを使用して、重要なアラートのアラートルールを設定することもできます。その後、これらの重要なアラートを Amazon SNS トピックに通知として送信できます。

Amazon EKS で Prometheus を使用するにあたっては、数種類のオプションがあります。
+ Amazon EKS クラスターを最初に作成するときに Prometheus メトリクスをオンにできます。また、既存のクラスター用に独自の Prometheus スクレイパーを作成することもできます。このトピックでは、これらのオプションの両方を説明します。
+ Helm を使用して Prometheus をデプロイできます。詳細については、「[Helm を使用して Prometheus をデプロイする](deploy-prometheus.md)」を参照してください。
+ コントロールプレーンの未加工メトリクスを Prometheus 形式で表示できます。詳細については、「[コントロールプレーンの未加工メトリクスを Prometheus 形式で取得する](view-raw-metrics.md)」を参照してください。

## ステップ 1: Prometheus メトリクスを有効にする
<a name="turn-on-prometheus-metrics"></a>

**重要**  
Amazon Managed Service for Prometheus リソースはクラスターのライフサイクル外にあるため、クラスターとは別途維持する必要があります。クラスターを削除するときは、対象コストを抑えるために、該当するスクレイパーも削除してください。詳細については、Amazon Managed Service for Prometheus ユーザーガイドの「[スクレイパーの検出と作成](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-list-delete)」を参照してください。

Prometheus は、スクレイピングと呼ばれるプルベースのモデルを通じて、クラスターからメトリクスを検出して収集します。スクレイパーは、クラスターインフラストラクチャーとコンテナー化されたアプリケーションからデータを収集するように設定されています。Prometheus メトリクスを送信するオプションをオンにすると、Amazon Managed Service for Prometheus は完全マネージド型のエージェントレススクレイパーを提供します。

クラスターをまだ作成していない場合は、クラスターを初めて作成するときにこのオプションをオンにしてメトリクスを Prometheus に送信できます。Amazon EKS コンソールでは、このオプションはクラスターの新規作成の **[オブザーバビリティの設定]** ステップにあります。詳細については、「[Amazon EKS クラスターを作成します。](create-cluster.md)」を参照してください。

既存のクラスターが既にある場合は、独自の Prometheus スクレイパーを作成できます。Amazon EKS コンソールでこれを行うには、クラスターの **[オブザーバビリティ]** タブに移動し、**[スクレイパーの追加]** ボタンを選択します。AWS API または AWS CLI でこれを行う場合は、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[Create a scraper](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-create)」を参照してください。

Amazon EKS コンソールでスクレイパーを作成する場合、次のオプションを使用できます。

 **スクレイパーエイリアスの名前**   
(オプション) スクレイパーの一意のエイリアスの入力。

 **送信先**   
Amazon Managed Service for Prometheus ワークスペースを選択します。ワークスペースは、Prometheus メトリクスの保存とクエリに使用される専用の論理スペースです。このワークスペースでは、そのワークスペースにアクセスできるアカウントの Prometheus メトリクスを表示できます。**[新しいワークスペースを作成する]** オプションでは、指定した **[ワークスペースエイリアス]** を使用してユーザーに代わってワークスペースを作成するよう Amazon EKS に指示します。**[既存のワークスペースを選択]** オプションでは、ドロップダウンリストから既存のワークスペースを選択できます。ワークスペースの詳細については、「Amazon Managed Service for Prometheus ユーザーガイド」の「[ワークスペースの管理](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-manage-ingest-query.html)」を参照してください。

 **サービスアクセス**   
このセクションでは、Prometheus メトリクスを送信する際に付与するアクセス許可の概要を説明します。  
+ Amazon Managed Service for Prometheus に、スクレイピングされた Amazon EKS クラスターを記述できるようにします
+ Amazon マネージド Prometheus ワークスペースへのリモート書き込みを許可する
`AmazonManagedScraperRole` がすでに存在する場合、スクレイパーはそれを使用します。`AmazonManagedScraperRole` リンクを選択すると、**[アクセス許可の詳細]** が表示されます。`AmazonManagedScraperRole` がまだ存在しない場合は、**[アクセス許可の詳細を表示]** リンクを選択すると、Prometheus メトリクスを送信して付与している特定のアクセス許可を確認できます。

 **サブネット**   
必要に応じてスクレイパーが継承するサブネットを変更します。グレー表示するサブネットオプションを追加する必要がある場合は、クラスターの作成で**ネットワークを指定する**手順に戻ってください。

 **スクレイパー設定**   
必要に応じて YAML 形式でスクレイパー設定を変更します。これを行うには、フォームを使用するか、代替の YAML ファイルをアップロードします。詳細については、「Amazon Managed Service for Prometheus ユーザーガイド」の「[スクレイパー設定](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-configuration)」を参照してください。

Amazon Managed Service for Prometheus は、AWS マネージドコレクターとしてクラスターと一緒に作成されるエージェントレススクレイパーを指します。AWS マネージドコレクターの詳細については、「Amazon Managed Service for Prometheus ユーザーガイド」の「[AWS マネージドコレクターによるメトリクスの取り込み](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector.html)」を参照してください。

**重要**  
AWS CLI または AWS API を使用して Prometheus スクレイパーを作成する場合は、その設定を調整して、スクレイパーにクラスター内アクセス許可を付与する必要があります。詳細については、「Amazon Managed Service for Prometheus ユーザーガイド」の「[Amazon EKS クラスターの設定](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-eks-setup)」を参照してください。
アクセスエントリの代わりに `aws-auth` `ConfigMap` を使用する Prometheus スクレイパーが 2024 年 11 月 11 日よりも前に作成されている場合は、Amazon EKS クラスターコントロールプレーンから追加のメトリクスにアクセスするように更新する必要があります。更新された設定については、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[Manually configuring Amazon EKS for scraper access](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-eks-manual-setup)」を参照してください。

## ステップ 2: Prometheus メトリクスを使用する
<a name="use-prometheus-metrics"></a>

クラスターで Prometheus メトリクスをオンにした後の使用方法の詳細については、「[Amazon Managed Service for Prometheus ユーザーガイド](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html)」を参照してください。

## ステップ 3: Prometheus スクレイパーを管理する
<a name="viewing-prometheus-scraper-details"></a>

スクレイパーを管理するには、Amazon EKS コンソールで **[オブザーバビリティ]** タブを選択します。表には、スクレイパー ID、エイリアス、ステータス、作成日などの情報を含む、クラスターのスクレイパーのリストが表示されます。スクレイパーの追加、編集、削除、または現在のスクレイパーに関する詳細情報の表示を行うことができます。

スクレイパーの詳細を表示するには、スクレイパー ID リンクを選択します。例えば、ARN、環境、ワークスペース ID、IAM ロール、設定、ネットワーク情報を表示できます。スクレイパー ID は、[https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DescribeScraper.html](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DescribeScraper.html)、[https://docs.aws.amazon.com/prometheus/latest/APIReference/API_UpdateScraper.html](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_UpdateScraper.html)、[https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html) などの Amazon Managed Service for Prometheus API オペレーションへの入力として使用できます。Prometheus API の使用に関する詳細については、「[Amazon Managed Service for Prometheus API リファレンス](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-APIReference.html)」を参照してください。

# Helm を使用して Prometheus をデプロイする
<a name="deploy-prometheus"></a>

Amazon Managed Service for Prometheus の代わりに、Helm を使用してクラスターに Prometheus をデプロイできます。既に Helm がインストールされている場合は、`helm version` コマンドでバージョンを確認できます。Helm は Kubernetes クラスターのパッケージマネージャーです。Helm の詳細およびインストール方法については、「[Helm を使用して Amazon EKS にアプリケーションをデプロイする](helm.md)」を参照してください。

Amazon EKS クラスター用に Helm を設定した後、次の手順で、それを使用して Prometheus をデプロイできます。

1. Prometheus 名前空間を作成します。

   ```
   kubectl create namespace prometheus
   ```

1. `prometheus-community` グラフリポジトリの追加

   ```
   helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
   ```

1. Prometheus をデプロイします。

   ```
   helm upgrade -i prometheus prometheus-community/prometheus \
       --namespace prometheus \
       --set alertmanager.persistence.storageClass="gp2" \
       --set server.persistentVolume.storageClass="gp2"
   ```
**注記**  
このコマンドの実行時に `Error: failed to download "stable/prometheus" (hint: running helm repo update may help)` エラーが発生した場合、`helm repo update prometheus-community` を実行し、ステップ 2 のコマンドをもう一度実行してみてください。

   `Error: rendered manifests contain a resource that already exists` エラーが発生した場合、`helm uninstall your-release-name -n namespace `を実行し、ステップ 3 のコマンドをもう一度実行してみてください。

1. `prometheus` 名前空間のすべての Pod が `READY` 状態になっていることを確認します。

   ```
   kubectl get pods -n prometheus
   ```

   出力例は次のとおりです。

   ```
   NAME                                             READY   STATUS    RESTARTS   AGE
   prometheus-alertmanager-59b4c8c744-r7bgp         1/2     Running   0          48s
   prometheus-kube-state-metrics-7cfd87cf99-jkz2f   1/1     Running   0          48s
   prometheus-node-exporter-jcjqz                   1/1     Running   0          48s
   prometheus-node-exporter-jxv2h                   1/1     Running   0          48s
   prometheus-node-exporter-vbdks                   1/1     Running   0          48s
   prometheus-pushgateway-76c444b68c-82tnw          1/1     Running   0          48s
   prometheus-server-775957f748-mmht9               1/2     Running   0          48s
   ```

1. `kubectl` を使用して、Prometheus コンソールをローカルマシンにポート転送します。

   ```
   kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
   ```

1. ウェブブラウザで `http://localhost:9090` にアクセスして、Prometheus コンソールを表示します。

1. **[- カーソルの位置のメトリクスを挿入]** メニューからメトリクスを選択し、**[実行]** を選択します。**[グラフ]** タブを選択して、一定期間のメトリクスを表示します。次の図では、一定期間の `container_memory_usage_bytes` を示します。  
![\[Prometheus メトリクス\]](http://docs.aws.amazon.com/ja_jp/eks/latest/userguide/images/prometheus-metric.png)

1. 上部のナビゲーションバーから、**[ステータス]**、**[ターゲット]** の順に選択します。  
![\[Prometheus コンソール\]](http://docs.aws.amazon.com/ja_jp/eks/latest/userguide/images/prometheus.png)

   サービス検出を使用して Prometheus に接続されているすべての Kubernetes エンドポイントが表示されます。

# コントロールプレーンの未加工メトリクスを Prometheus 形式で取得する
<a name="view-raw-metrics"></a>

Kubernetes コントロールプレーンは、[Prometheus 形式](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md)で表される多数のメトリクスを公開します。これらのメトリクスはモニタリングおよび分析に役立ちます。これらはメトリクスエンドポイントを通じて内部的に公開され、Prometheus を完全にデプロイしなくてもアクセスできます。ただし、Prometheus をデプロイすることで、時間の経過に伴うメトリクスの分析がより簡単になります。

未加工メトリクス出力を表示するには、`endpoint`を置き換えて次のコマンドを実行してください。

```
kubectl get --raw endpoint
```

このコマンドを使用すると、任意のエンドポイントパスを渡して未加工のレスポンスを返すことができます。出力にはさまざまなメトリクスが行ごとにリストされ、各行にはメトリクス名、タグ、および値が含まれます。

```
metric_name{tag="value"[,...]} value
```

## API サーバーからメトリクスを取得する
<a name="fetch-metrics"></a>

一般的な API サーバーエンドポイントはAmazon EKS コントロールプレーンで公開されます。このエンドポイントは主に特定のメトリクスを調べる際に役立ちます。

```
kubectl get --raw /metrics
```

出力例は次のとおりです。

```
[...]
# HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.
# TYPE rest_client_requests_total counter
rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994
rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1
rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06
rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173
rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2
rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3
rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8
# HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts
# TYPE ssh_tunnel_open_count counter
ssh_tunnel_open_count 0
# HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts
# TYPE ssh_tunnel_open_fail_count counter
ssh_tunnel_open_fail_count 0
```

この未加工出力はAPI サーバーが公開する内容をそのまま返します。

## `metrics.eks.amazonaws.com` を使用してコントロールプレーンのメトリクスを取得する
<a name="fetch-metrics-prometheus"></a>

Kubernete バージョン `1.28` 以降のクラスターの場合、Amazon EKS は API グループ `metrics.eks.amazonaws.com` のメトリクスも公開します。これらのメトリクスには`kube-scheduler` や `kube-controller-manager` などのコントロールプレーンコンポーネントが含まれます。

**注記**  
クラスターに新しい `APIService` リソース `v1.metrics.eks.amazonaws.com` の作成をブロックするウェブフック設定がある場合、メトリクスエンドポイント機能が使用できない可能性があります。`v1.metrics.eks.amazonaws.com` キーワードを検索することで、`kube-apiserver` 監査ログで確認することができます。

### `kube-scheduler` メトリクスを取得する
<a name="fetch-metrics-scheduler"></a>

`kube-scheduler` メトリクスを取得するには次のコマンドを使用します。

```
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics"
```

出力例は次のとおりです。

```
# TYPE scheduler_pending_pods gauge
scheduler_pending_pods{queue="active"} 0
scheduler_pending_pods{queue="backoff"} 0
scheduler_pending_pods{queue="gated"} 0
scheduler_pending_pods{queue="unschedulable"} 18
# HELP scheduler_pod_scheduling_attempts [STABLE] Number of attempts to successfully schedule a pod.
# TYPE scheduler_pod_scheduling_attempts histogram
scheduler_pod_scheduling_attempts_bucket{le="1"} 79
scheduler_pod_scheduling_attempts_bucket{le="2"} 79
scheduler_pod_scheduling_attempts_bucket{le="4"} 79
scheduler_pod_scheduling_attempts_bucket{le="8"} 79
scheduler_pod_scheduling_attempts_bucket{le="16"} 79
scheduler_pod_scheduling_attempts_bucket{le="+Inf"} 81
[...]
```

### `kube-controller-manager` メトリクスを取得する
<a name="fetch-metrics-controller"></a>

`kube-controller-manager` メトリクスを取得するには次のコマンドを使用します。

```
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics"
```

出力例は次のとおりです。

```
[...]
workqueue_work_duration_seconds_sum{name="pvprotection"} 0
workqueue_work_duration_seconds_count{name="pvprotection"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-08"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-07"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-06"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-06"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-05"} 19
workqueue_work_duration_seconds_bucket{name="replicaset",le="0.001"} 109
workqueue_work_duration_seconds_bucket{name="replicaset",le="0.01"} 139
workqueue_work_duration_seconds_bucket{name="replicaset",le="0.1"} 181
workqueue_work_duration_seconds_bucket{name="replicaset",le="1"} 191
workqueue_work_duration_seconds_bucket{name="replicaset",le="10"} 191
workqueue_work_duration_seconds_bucket{name="replicaset",le="+Inf"} 191
workqueue_work_duration_seconds_sum{name="replicaset"} 4.265655885000002
[...]
```

### スケジューラーとコントローラーマネージャーのメトリクスを理解します
<a name="scheduler-controller-metrics"></a>

Prometheus スタイルスクレイピングに使用できるスケジューラとコントローラーマネージャーのメトリクスを次の表に示します。これらのメトリクスの詳細については、Kubernetes ドキュメントの「[Kubernetes Metrics Reference](https://kubernetes.io/docs/reference/instrumentation/metrics/)」を参照してください。


| メトリクス | コントロールプレーンのコンポーネント | 説明 | 
| --- | --- | --- | 
|  scheduler\$1pending\$1pods  |  スケジューラ  |  実行のためにノードにスケジュールされるのを待っているポッドの数です。  | 
|  scheduler\$1schedule\$1attempts\$1total  |  スケジューラ  |  ポッドのスケジュールの試行回数です。  | 
|  scheduler\$1preemption\$1attempts\$1total  |  スケジューラ  |  優先度の低いポッドをエビクションさせて、優先度の高いポッドをスケジュールするためにスケジューラーによって実行された試行回数です。  | 
|  scheduler\$1preemption\$1victims  |  スケジューラ  |  優先順位の高いポッドのスペースを確保するためにエビクション対象として選択されたポッドの数です。  | 
|  scheduler\$1pod\$1scheduling\$1attempts  |  スケジューラ  |  ポッドの正常なスケジュールの試行回数です。  | 
|  scheduler\$1scheduling\$1attempt\$1duration\$1seconds  |  スケジューラ  |  リソースの可用性やスケジューリングルールなどのさまざまな要因に基づいて、スケジューラーがポッドを実行するのに適した場所をどの程度迅速に見つけることができるかを示します。  | 
|  scheduler\$1pod\$1scheduling\$1sli\$1duration\$1seconds  |  スケジューラ  |  ポッドがスケジューリングキューに入る時点からの、スケジュールされているポッドのエンドツーエンドのレイテンシーです。これには複数のスケジューリング試行が含まれる場合があります。  | 
|  cronjob\$1controller\$1job\$1creation\$1skew\$1duration\$1seconds  |  コントローラーマネージャー  |  cronjob の実行がスケジュールされてから、対応するジョブが作成されるまでの時間です。  | 
|  workqueue\$1depth  |  コントローラーマネージャー  |  現在のキューの深さです。  | 
|  workqueue\$1adds\$1total  |  コントローラーマネージャー  |  ワークキューが処理する合計追加数。  | 
|  workqueue\$1queue\$1duration\$1seconds  |  コントローラーマネージャー  |  項目がリクエストされる前にワークキューに留まる時間 (秒)です。  | 
|  workqueue\$1work\$1duration\$1seconds  |  コントローラーマネージャー  |  ワークキューからの項目の処理にかかる時間 (秒)です。  | 

## プロメテウス スクレイパーをデプロイしてメトリクスを一貫してスクレイピングする
<a name="deploy-prometheus-scraper"></a>

プロメテウス スクレイパーをデプロイしてメトリクスを一貫してスクレイピングするには次の設定を使用します:

```
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-conf
data:
  prometheus.yml: |-
    global:
      scrape_interval: 30s
    scrape_configs:
    # apiserver metrics
    - job_name: apiserver-metrics
      kubernetes_sd_configs:
      - role: endpoints
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - source_labels:
          [
            __meta_kubernetes_namespace,
            __meta_kubernetes_service_name,
            __meta_kubernetes_endpoint_port_name,
          ]
        action: keep
        regex: default;kubernetes;https
    # Scheduler metrics
    - job_name: 'ksh-metrics'
      kubernetes_sd_configs:
      - role: endpoints
      metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - source_labels:
          [
            __meta_kubernetes_namespace,
            __meta_kubernetes_service_name,
            __meta_kubernetes_endpoint_port_name,
          ]
        action: keep
        regex: default;kubernetes;https
    # Controller Manager metrics
    - job_name: 'kcm-metrics'
      kubernetes_sd_configs:
      - role: endpoints
      metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - source_labels:
          [
            __meta_kubernetes_namespace,
            __meta_kubernetes_service_name,
            __meta_kubernetes_endpoint_port_name,
          ]
        action: keep
        regex: default;kubernetes;https
---
apiVersion: v1
kind: Pod
metadata:
  name: prom-pod
spec:
  containers:
  - name: prom-container
    image: prom/prometheus
    ports:
    - containerPort: 9090
    volumeMounts:
    - name: config-volume
      mountPath: /etc/prometheus/
  volumes:
  - name: config-volume
    configMap:
      name: prometheus-conf
```

ポッドが新しいメトリクスエンドポイントにアクセスするには次の許可が必要です。

```
{
  "effect": "allow",
  "apiGroups": [
    "metrics.eks.amazonaws.com"
  ],
  "resources": [
    "kcm/metrics",
    "ksh/metrics"
  ],
  "verbs": [
    "get"
  ] },
```

使用中のロールにパッチを適用するには次のコマンドを使用できます。

```
kubectl patch clusterrole <role-name> --type=json -p='[
  {
    "op": "add",
    "path": "/rules/-",
    "value": {
      "verbs": ["get"],
      "apiGroups": ["metrics.eks.amazonaws.com"],
      "resources": ["kcm/metrics", "ksh/metrics"]
    }
  }
]'
```

その後、Prometheus スクレイパーのポートをローカルポートにプロキシすることで、Prometheus ダッシュボードを表示できます。

```
kubectl port-forward pods/prom-pod 9090:9090
```

Amazon EKS クラスターの場合、コア Kubernetes コントロールプレーンメトリクスも `AWS/EKS` 名前空間の Amazon CloudWatch メトリクスに取り込まれます。これらを表示するには[CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/home#logs:prefix=/aws/eks)を開き、左側のナビゲーションペインから **[すべてのメトリクス]** を選択してください。**[メトリクス]** の選択ページで、クラスターの `AWS/EKS` 名前空間とメトリクスディメンションを選択してください。