Stackdriver Monitoring

このページでは、Stackdriver Monitoring を使用して Google Kubernetes Engine(GKE)クラスタをモニタリングする方法を説明します。

概要

Monitoring を使用すると、GKE クラスタ内のシグナルをモニタリングして、オペレーションを作成できます。

Stackdriver は、「システム指標」と「カスタム指標」をモニタリングします。システム指標は、CPU 使用率やメモリ使用量など、クラスタのインフラストラクチャの測定値です。カスタム指標は、アクティブなユーザー セッションの総数やレンダリングされたページの総数など、ユーザーが定義するアプリケーション固有の指標です。

Stackdriver はシステム指標を対象とした Deployment を作成します。この Deployment は、各ノードに定期的に接続し、ノードのポッドとコンテナに関する指標を収集して Stackdriver に送信します。

システム リソースの使用状況に関する指標は、次のソースから収集されます。

  • CPU: container/cpu/usage_time
  • メモリ: container/memory/bytes_used(cgroup 内の memory.usage_in_bytes から収集)
  • 強制排除可能メモリ: container/memory/bytes_usedmemory.stattotal_inactive_file フィールドから収集)
  • 強制排除不可メモリ: memory.usage_in_bytes - memory.total_inactive_file によって測定
  • ディスク: container/disk/bytes_used

GKE から収集される他のシステム指標の一覧については、Stackdriver のドキュメントで指標の一覧をご覧ください。

カスタム指標を設定する方法については、カスタム指標の使用をご覧ください。または、カスタム指標によるデプロイメントの自動スケーリングのチュートリアルで説明している手順を使用してください。

始める前に

このタスクの準備として、次の手順を行います。

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Google Kubernetes Engine API の有効化
  • Cloud SDK がインストール済みであることを確認します。
  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud を最新バージョンに更新します。
    gcloud components update
  • Stackdriver ワークスペースが作成されていることを確認します。詳しくは、ワークスペースの管理をご覧ください。

モニタリングを有効にする

モニタリングを有効にしたクラスタを新規に作成するか、既存のクラスタでモニタリングを有効にできます。

クラスタのノードプール(デフォルトのノードプールを含む)には、Monitoring と連携に必要な GCP スコープ(https://www.googleapis.com/auth/monitoring スコープ)が設定されている必要があります。モニタリングを有効にした新しいクラスタを作成すると、Kubernetes Engine によって自動的にこのスコープが設定されますが、既存のクラスタには必要な権限がない可能性があります。

モニタリングが有効なクラスタを作成する

gcloud

クラスタを作成する際に、--enable-cloud-monitoring フラグが自動的に設定されます。これにより、クラスタで Monitoring が有効になります。

このデフォルト動作を無効にするには、--no-enable-cloud-monitoring フラグを設定します。

Console

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. [クラスタを作成] をクリックします。

  3. 必要に応じてクラスタを構成します。

  4. [詳細オプション] をクリックします。[Stackdriver Monitoring サービスを有効にする] が選択されていることを確認します。

  5. [作成] をクリックします。

既存のクラスタに対してモニタリングを有効にする

gcloud

既存のクラスタに対してモニタリングを有効にするには、次のコマンドを実行します。ここで、[CLUSTER_NAME] はクラスタの名前です。

gcloud beta container clusters update [CLUSTER_NAME] --monitoring-service monitoring.googleapis.com

当初はモニタリングを有効にせずに作成したクラスタに対し、後からモニタリングを有効にする場合は、必要な GCP スコープがクラスタのノードプールに設定されていない可能性があります。回避策として、同じ数のノードと必要なスコープを設定した新しいノードプールを次のように作成します。

gcloud container node-pools create adjust-scope \
    --cluster [CLUSTER_NAME] \
    --num-nodes [NUM_NODES] \
    --scopes https://www.googleapis.com/auth/monitoring

モニタリングを使用するための正しいスコープを設定した新しいノードプールを作成したら、既存のポッドをそのノードプールに移動します。詳しくは、ゼロ ダウンタイムで VM スコープを更新するをご覧ください。

Console

当初はモニタリングを有効にせずに作成したクラスタに対し、後からモニタリングを有効にする場合は、必要な GCP スコープがクラスタのノードプールに設定されていない可能性があります。回避策については、上記の gcloud のセクションをご覧ください。

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [Stackdriver Monitoring] プルダウンの値を [有効] に設定します。

  4. [保存] をクリックします。

インフラストラクチャ指標を拡張する

アプリケーション指標に加え、Stackdriver のカスタム指標によって、システム指標に含まれていないクラスタ インフラストラクチャの測定(コンテナのディスク I/O など)を使用することもできます。独自のインフラストラクチャ モニタリング エージェントをデプロイし、こうした指標を収集して、Stackdriver に push できます。

cAdvisor

cAdvisor を使用して指標を収集できます。これは指標を収集するために Kubernetes で使用されているオープンソースのモニタリング エージェントです。収集した指標は、prometheus-to-sd を使用して Stackdriver に push できます。

独自のクラスタで cAdvisor を実行するには、次の手順に従います。

  1. cAdvisor のクローンを作成します。

    git clone https://github.com/google/cadvisor.git
    cd cadvisor
    
  2. cAdvisor DaemonSet の手順に従って kustomize をインストールします。Cloud Shell を使用している場合は、次のコマンドを実行します。

    go get github.com/kubernetes-sigs/kustomize
    
  3. サンプルの cAdvisor 名前空間と DaemonSet を作成し、すべてのコンテナ指標をエクスポートします。

    kustomize build deploy/kubernetes/overlays/examples | kubectl apply -f -
    

    これで、Stackdriver の gke_container リソースに Prometheus 指標が表示されるはずです。

  4. cAdvisor のカスタマイズ手順に従って、ニーズに合うようにサンプルに変更を加えます。次のコマンドを使用して、変更を適用します。

    kustomize build deploy/kubernetes/overlays/<my_custom_patches> | kubectl apply -f -
    

指標を表示する

Stackdriver Monitoring Console で指標を表示できます。

クラスタの概要

モニタリングには、GKE 用の概要メニューが用意されています。このメニューは、クラスタに関する有用な情報を収集し、それを便利なダッシュボードに表示します。

概要メニューを表示するには、次の手順を行います。

  1. Stackdriver Monitoring Console にアクセスします。

    モニタリング メニューに移動

  2. [Resources] にカーソルを合わせ、[Kubernetes Engine] を選択します。

  3. クラスタを選択します。

概要メニューには、次のデフォルトのダッシュボードが用意されています。

  • [インシデント]: アラート ポリシーの違反。
  • [イベント]: クラウド アカウントで発生した異常、インシデント、ライフサイクル、タグ、IAM ポリシー、デプロイ、メモ、クラウド プロバイダの更新、ユーザー管理の更新の時系列リスト。
  • [CPU 使用率]: クラスタごとの CPU 使用率を表示します。
  • [ディスク I/O]: クラスタごとのディスク I/O 速度を KB/秒単位で表示します。
  • [ネットワーク トラフィック]: クラスタごとのネットワーク トラフィックを KB/秒単位で表示します。
  • [ポッド]: すべての名前空間のポッドとノード(Compute Engine VM インスタンス)のリスト。いずれかのポッドまたはノードを選択すると、そのリソースの概要が表示されます。

指標の表示の詳細については、Monitoring のドキュメントとモニタリング フィルタのページをご覧ください。

ダッシュボード

GKE のノードとコンテナを対象としたカスタム ダッシュボードを作成できます。

ダッシュボードを作成するには、次の手順を行います。

  1. Stackdriver Monitoring Console にアクセスします。

    モニタリング メニューに移動

  2. [Dashboards] にカーソルを合わせ、[Create Dashboard] を選択します。

  3. 新しいダッシュボードを作成するには、[Add Chart] をクリックします。

  4. [Title] フィールドにダッシュボードの名前を入力します。

  5. [Find resource type and metric] フィールドで「instance」または「container」、あるいはこの両方を検索し、目的の指標を選択します。

  6. [Metric Type] フィールドで、目的の指標を入力するか、自動入力メニューから選択します。

  7. 必要に応じて、[Filter] を使用して特定の値(アプリ、名前、バージョンなど)でフィルタリングします。

  8. 必要に応じてダッシュボードを構成します。ダッシュボードを作成するには、[Save] をクリックします。

Metrics Explorer

Metrics Explorer を使用すると、クラスタに関する特定の指標を選択してさまざまな集計を行うことができます。

Metrics Explorer を使用するには、次の手順を行います。

  1. Stackdriver Monitoring Console にアクセスします。

    モニタリング メニューに移動

  2. [Resources] にカーソルを合わせ、[Metrics Explorer] を選択します。

  3. [Find resource type and metric] 検索メニューの [Resource type] に「gke_container」と入力します。

  4. [Metric] で、目的の指標を選択します。

  5. 必要に応じて、[Filter] メニューを使用してリソースでフィルタリングします。

  6. [Aggregation] のオプションを使用して目的の集計を行います。

ベスト プラクティス

  • [アラート]: クラスタ内で不審な状況が発生した場合に通知するアラート ポリシーを設定できます。

モニタリングを無効にする

gcloud

既存のクラスタに対してモニタリングを無効にするには、次のコマンドを実行します。ここで、[CLUSTER_NAME] はクラスタの名前です。

gcloud beta container clusters update [CLUSTER_NAME] --monitoring-service none

Console

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [Stackdriver Monitoring] プルダウンの値を [無効] に設定します。

  4. [保存] をクリックします。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。