対応しているワークロードの自動アプリケーション モニタリングを有効にすると、Google Kubernetes Engine(GKE)で実行されているモニタリング アプリケーションの構成とメンテナンスにかかる時間と労力を節約できます。
自動アプリケーション モニタリングの仕組み
自動アプリケーション モニタリングを有効にすると、GKE は対応しているワークロードのデプロイ済みインスタンスを検出し、検出されたワークロード インスタンスごとに PodMonitoring
リソースをデプロイします。
自動アプリケーション モニタリングでは、アプリケーションをモニタリングするためのすぐに使用できるダッシュボードもインストールされます。指標は Google Cloud Managed Service for Prometheus によって収集されます。
対応しているワークロード
自動アプリケーション モニタリングは、次のワークロードをサポートしています。
- Apache Airflow
- Istio
- RabbitMQ
- AI モデルサーバー:
AI モデルサーバーの指標スクレイピング間隔は 15 秒です。AI 以外のワークロードの場合、スクレイピング間隔は 30 秒です。
手動で構成できるその他のすぐに使用できるオブザーバビリティ ソリューションの詳細については、Google Cloud Observability ドキュメントのエクスポータ構成の概要をご覧ください。
始める前に
開始にあたり、次の作業が完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
を実行して最新のバージョンを取得する。
- Cloud Monitoring API を有効にします。
自動アプリケーション モニタリングの要件
自動アプリケーション モニタリングを有効にするには、GKE クラスタが次の要件を満たしている必要があります。
- クラスタで GKE バージョン 1.28 以降を実行している。
- gcloud CLI バージョン 492.0.0 以降を使用している。
- クラスタで Google Cloud Managed Service for Prometheus マネージド コレクションが有効になっている。新しいクラスタでは、Google Cloud Managed Service for Prometheus マネージド コレクションがデフォルトで有効になっています。
自動アプリケーション モニタリングを有効にする
新規または既存の GKE クラスタの自動アプリケーション モニタリングを有効にするには、 Google Cloud コンソール、Google Cloud CLI、または GKE API を使用します。
新しいワークロードをデプロイした後、またはクラスタの自動アプリケーション モニタリングを有効にした後、対応しているワークロードで指標のスクレイピングが開始されるまでに最大 10 分かかることがあります。
コンソール
新しいクラスタで自動アプリケーション モニタリングを有効にするには、次の操作を行います。
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
[
作成] をクリックし、[Standard] セクションまたは [Autopilot] セクションで [構成] をクリックします。Autopilot モードのクラスタの場合は、[詳細設定] をクリックします。Standard モードのクラスタの場合は、[機能] をクリックします。
[オペレーション] セクションで、[自動アプリケーション モニタリングを有効にする] を選択します。
[作成] をクリックします。
既存のクラスタの自動アプリケーション モニタリングを有効にするには、[クラスタの詳細] タブの [オペレーション] セクションで [自動アプリケーション モニタリングを有効にする] フィールドを更新します。
gcloud
新しいクラスタの自動アプリケーション モニタリングを有効にするには、オプション --auto-monitoring-scope=ALL
を使用します。
gcloud container clusters create-auto CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--auto-monitoring-scope=ALL
次のように置き換えます。
CLUSTER_NAME
: 新しいクラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
既存のクラスタは、gcloud container clusters update
コマンドを使用して更新することもできます。
API
新しいクラスタで自動アプリケーション モニタリングを有効にするには、メソッド clusters.create
に POST
リクエストを送信します。
POST https://container.googleapis.com/v1/projects/PROJECT_ID/locations/COMPUTE_LOCATION/clusters
{
"cluster": {
"name": "CLUSTER_NAME",
"initialNodeCount": 1,
"monitoringConfig": {
"managedPrometheusConfig": {
"enabled": true,
"autoMonitoringConfig": {
"scope": "ALL"
}
}
}
}
}
次のように置き換えます。
PROJECT_ID
: 実際の Google Cloud プロジェクト ID。CLUSTER_NAME
: 新しいクラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
自動アプリケーション モニタリングが有効であることを確認する
クラスタで自動アプリケーション モニタリングが有効になっているかどうかを確認するには、 Google Cloud コンソール、gcloud CLI、または GKE API を使用します。
コンソール
次の操作を行います。
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
クラスタのリストで、クラスタの名前をクリックします。
[機能] セクションの [自動アプリケーション モニタリング] フィールドに、自動アプリケーション モニタリングが有効か無効かが示されます。
gcloud
クラスタの説明を表示します。
gcloud container clusters describe CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--format='value(monitoringConfig.managedPrometheusConfig.autoMonitoringConfig.scope)'
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
出力は次のようになります。
autoMonitoringConfig.scope: ALL
出力で、autoMonitoringConfig.scope
フィールドの値が ALL
の場合、自動アプリケーション モニタリングが有効になっています。それ以外の場合、自動アプリケーション モニタリングは無効になります。
API
clusters.get
メソッドに GET
リクエストを送信します。
GET https://container.googleapis.com/v1/projects/PROJECT_ID/locations/COMPUTE_LOCATION/clusters/CLUSTER_NAME
次のように置き換えます。
PROJECT_ID
: 実際の Google Cloud プロジェクト ID。CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
出力は次のようになります。
autoMonitoringConfig.scope: ALL
出力で、autoMonitoringConfig.scope
フィールドの値が ALL
の場合、自動アプリケーション モニタリングが有効になっています。それ以外の場合、自動アプリケーション モニタリングは無効になります。
ダッシュボードを表示
自動アプリケーション モニタリングを有効にすると、GKE は、クラスタにデプロイされた対応しているワークロードのアプリケーションをモニタリングするためのすぐに使用できるダッシュボードをインストールします。クラスタで実行されたことがない対応しているワークロードのダッシュボードは表示されません。
Google Kubernetes Engine ページで、自動的にモニタリングされるワークロードからのテレメトリーを含むダッシュボードを表示するには、次の操作を行います。
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
自動モニタリングされるワークロードのダッシュボードを表示するクラスタの名前をクリックします。
[オブザーバビリティ] タブをクリックします。 [統合] セクションには、クラスタで実行されている対応しているワークロード用に構成されたダッシュボードが表示されます。
自動的にモニタリングされるワークロードからのテレメトリーを含むダッシュボードを Cloud Monitoring ページに表示するには、次の操作を行います。
[ダッシュボード] ページに移動
[ダッシュボード リスト] タブをクリックします。
[統合] カテゴリを選択します。
ダッシュボードの名前(RabbitMQ Prometheus Overview など)をクリックします。
自動アプリケーション モニタリングを無効にする
クラスタで自動アプリケーション モニタリングを無効にした場合、GKE によって作成された PodMonitoring
リソースはそのまま残り、GKE は既存の対応しているワークロードを引き続きモニタリングします。GKE は、クラスタにデプロイされた対応しているワークロードの新しいインスタンスの自動モニタリングを停止します。既存の対応しているワークロードのモニタリングを停止するには、GKE が作成した PodMonitoring
リソースを削除する必要があります。クラスタの自動アプリケーション モニタリングを再度有効にすると、GKE は以前に作成した PodMonitoring
リソースを検出して調整します。
クラスタの自動アプリケーション モニタリングを無効にするには、Google Cloud コンソール、gcloud CLI、または GKE API を使用します。
コンソール
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
クラスタの名前をクリックします。
[機能] リストで、[自動アプリケーション モニタリング] フィールドを見つけます。
[edit編集] をクリックします。
[自動アプリケーション モニタリングを有効にする] の選択を解除します。
[保存] をクリックします。
gcloud
オプション --auto-monitoring-scope=NONE
を使用してクラスタを更新します。
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--auto-monitoring-scope=NONE
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
API
clusters.update
メソッドに PUT
リクエストを送信します。
PUT https://container.googleapis.com/v1/projects/PROJECT_ID/locations/COMPUTE_LOCATION/clusters/CLUSTER_NAME
{
"update": {
"desiredMonitoringConfig": {
"managedPrometheusConfig": {
"autoMonitoringConfig": {
"scope": "NONE"
}
}
}
}
}
次のように置き換えます。
PROJECT_ID
: 実際の Google Cloud プロジェクト ID。CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
対応しているワークロードの自動モニタリングをカスタマイズする
対応しているワークロードの個々のインスタンスのモニタリング構成のカスタマイズや、対応しているワークロードの個々のインスタンスのモニタリングのオプトアウトができます。
他のワークロードの自動アプリケーション モニタリングに影響を与えることなく、対応しているワークロードのデプロイ済みインスタンスの PodMonitoring
リソースをカスタマイズするには、自動アプリケーション モニタリングからインスタンスを除外し、構成を更新するか、ターゲット ワークロード インスタンスに関連付けられた PodMonitoring
リソースを置き換える必要があります。
GKE が作成した PodMonitoring
リソースを、関連するワークロードを除外せずに更新または削除すると、GKE は PodMonitoring
リソースを復元し、他の対応しているワークロードをモニタリングしながら継続性を確保します。
ワークロードの PodMonitoring
リソースを見つける
GKE がワークロード用に作成した PodMonitoring
リソースは、 Google Cloud コンソールを使用して特定できます。
[オブジェクト ブラウザ] ページに移動します。
[クラスタ] フィールドに、クラスタの名前を入力します。
[Namespace] フィールドに、Namespace の名前を入力します。
[オブジェクトの種類] フィルタで [PodMonitoring] を選択します。
[monitoring.googleapis.com] で [PodMonitoring] を選択します。
オブジェクト名をクリックして、オブジェクトを調べます。メタデータ ラベル
source:gke-auto-monitoring
は、GKE がPodMonitoring
リソースを作成したことを示します。
デプロイされたインスタンスを自動モニタリングから除外する
対応しているワークロードのデプロイ済みインスタンスをモニタリングしない場合や、ワークロードのモニタリング構成をカスタマイズする場合は、ワークロードを自動アプリケーション モニタリングから除外します。
ワークロードを除外するには、ターゲット ワークロード構成にメタデータ ラベル allow-gke-auto-monitoring: false
を追加する必要があります。たとえば、次のマニフェストは、自動アプリケーション モニタリングによってモニタリングされない RabbitMQ StatefulSet を記述しています。
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rabbitmq
labels:
allow-gke-auto-monitoring: "false"
spec:
serviceName: rabbitmq
replicas: 3
ワークロード インスタンスを除外したら、GKE がワークロード用に作成した PodMonitoring
リソースを削除できます。PodMonitoring
リソースを削除または変更しても、GKE は復元を試みません。メタデータ ラベル allow-gke-auto-monitoring: false
を使用して新しいワークロードをデプロイしても、GKE はワークロードの PodMonitoring
リソースを作成しません。
ワークロードのモニタリング構成を削除する
ワークロードのモニタリングを停止する場合や、ワークロード用に独自のカスタマイズされた PodMonitoring
リソースをデプロイする場合は、モニタリング構成を削除します。
個々のワークロードの自動アプリケーション モニタリング構成を削除する手順は次のとおりです。
- 自動アプリケーション モニタリングからワークロードを除外する。
- GKE がワークロード用に作成した
PodMonitoring
リソースを特定します。 PodMonitoring
リソースを削除します。kubectl delete podmonitoring POD_MONITORING_NAME -n NAMESPACE
次のように置き換えます。
POD_MONITORING_NAME
:PodMonitoring
リソースの名前。NAMESPACE
:PodMonitoring
リソースの Namespace。
クラスタ内のすべてのワークロードの自動アプリケーション モニタリング構成を削除するには、次の操作を行います。
- 自動アプリケーション モニタリングを無効にします。
メタデータ ラベル
source:gke-auto-monitoring
を持つクラスタ内のすべてのPodMonitoring
リソースを削除します。kubectl delete podmonitorings -l source=gke-auto-monitoring --all-namespaces
料金
自動アプリケーション モニタリングの構成と、自動アプリケーション モニタリングによる対応しているワークロード用のすぐに使用できるダッシュボードのインストールは、追加料金なしで利用できます。ただし、Google Cloud Managed Service for Prometheus による指標の取り込みについては、Monitoring の料金が適用されます。
次のステップ
- オブザーバビリティ指標を表示する方法を確認する。