Amazon EKS
ユーザーガイド

Prometheus を使用したプレーンメトリクスのコントロール

Kubernetes API サーバーは、モニタリングと分析に役立つ多数のメトリクスを公開します。これらのメトリクスは、/metrics HTTP API を参照するメトリクスエンドポイントを介して内部的に公開されます。他のエンドポイントと同様に、このエンドポイントは Amazon EKS コントロールプレーンに公開されます。このトピックでは、このエンドポイントを使用してクラスターの動作を表示および分析する方法をいくつか説明します。

未加工メトリクスの表示

未加工メトリクスの出力を表示するには、--raw フラグを付けて kubectl を使用します。このコマンドを使用すると、任意の HTTP パスを渡して未加工のレスポンスを返すことができます。

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 サーバーが公開する内容をそのまま返します。これらのメトリクスは Prometheus 形式で表されます。この形式により、API サーバーはさまざまなメトリクスを行に分けて公開できます。各行には、メトリクス名、タグ、および値が含まれます。

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

このエンドポイントは特定のメトリクスを探している場合に役立ちますが、通常はこれらのメトリクスを経時分析する必要があります。分析するには、Prometheus をクラスターにデプロイします。Prometheus は、公開されているエンドポイントを整理しデータを集計するモニタリングおよび時系列データベースであり、結果をフィルタリング、グラフ化、およびクエリできるようにします。

Prometheus のデプロイ

このトピックは、Helm を使用して Prometheus をクラスターにデプロイする際に役立ちます。Helm は Kubernetes クラスターのパッケージマネージャーです。詳細については、「Amazon EKS での Helm の使用」を参照してください。

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

Helm を使用して Prometheus をデプロイするには

  1. Amazon EKS での Helm の使用 の手順に従って作業中の helm および tiller ターミナルウィンドウを取得します。これにより、Helm チャートをインストールできます。

  2. Helm ターミナルウィンドウで、次のコマンドを実行して Prometheus をデプロイします。

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

      kubectl create namespace prometheus
    2. Prometheus をデプロイします。

      helm install stable/prometheus \ --name prometheus \ --namespace prometheus \ --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2"
  3. prometheus 名前空間のすべてのポッドが READY 状態になっていることを確認します。

    kubectl get pods -n prometheus

    出力:

    NAME READY STATUS RESTARTS AGE prometheus-alertmanager-848fb754f5-2wpbm 2/2 Running 0 85s prometheus-kube-state-metrics-86cbcf9b6f-drnfq 1/1 Running 0 85s prometheus-node-exporter-8qpcl 1/1 Running 0 85s prometheus-node-exporter-czz9g 1/1 Running 0 85s prometheus-node-exporter-ffsl9 1/1 Running 0 85s prometheus-pushgateway-564f65fcc8-hmzp6 1/1 Running 0 85s prometheus-server-5b65bd569b-6wgwx 2/2 Running 0 85s
  4. kubectl を使用して、Prometheus コンソールをローカルマシンにポート転送します。

    kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
  5. ウェブブラウザで localhost:9090 にアクセスして、Prometheus コンソールを表示します。

  6. [- insert metric at cursor (カーソルの位置のメトリクスを挿入)] メニューからメトリクスを選択し、[実行] を選択します。[グラフ] タブを選択して、一定期間のメトリクスを表示します。次の図では、一定期間の container_memory_usage_bytes を示します。

    
                        Prometheus メトリクス
  7. 上部のナビゲーションバーから、[ステータス]、[ターゲット] の順に選択します。

    
                        Prometheus コンソール

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