GSP1024

概要
Managed Service for Prometheus は、Prometheus 指標の保存とクエリに対応する Google Cloud のフルマネージド サービスです。このサービスは、Cloud Monitoring と同じグローバルにスケーラブルなデータストアである Monarch 上に構築されています。
このラボでは、Google Kubernetes Engine クラスタを設定し、Managed Service for Prometheus をデプロイして、シンプルなアプリケーションから指標を取り込みます。
Prometheus の thin fork は、既存の Prometheus Deployment を置き換え、ユーザーの操作を要することなくデータをマネージド サービスに送信します。このデータは、マネージド サービスが対応している Prometheus Query API を通じて PromQL を使用してクエリで取得することも、既存の Cloud Monitoring クエリ メカニズムを使用して取得することもできます。
目標
- Managed Service for Prometheus を GKE クラスタにデプロイする。
- モニタリングする Python アプリケーションをデプロイする。
- 収集した指標を表示する Cloud Monitoring ダッシュボードを作成する。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. Docker リポジトリを作成する
このタスクでは、Artifact Registry 内に限定公開の Docker リポジトリを作成し、そのリポジトリにイメージを追加します。リポジトリ名でイメージにタグを付け、宛先を指定して、そのイメージを Artifact Registry に push する必要があります。
- Cloud Shell で次のコマンドを実行して、ロケーション に docker-repo という名前の新しい Docker リポジトリを作成し、「Docker repository」という説明を加えます。
gcloud artifacts repositories create docker-repo --repository-format=docker \
--location={{{project_0.default_region | Region}}} --description="Docker repository" \
--project={{{project_0.project_id| Project ID}}}
-
コンソールのタイトルバーにある [検索] フィールドに「Artifact Registry」と入力し、検索結果から [Artifact Registry] をクリックします。
-
Artifact Registry の [リポジトリ] ページで、リポジトリ docker-repo
が表示されていることを確認します。
-
Cloud Shell で、ストレージ バケットからビルド済みイメージを読み込みます。
wget https://storage.googleapis.com/spls/gsp1024/flask_telemetry.zip
unzip flask_telemetry.zip
docker load -i flask_telemetry.tar
- 次のコマンドを実行して、イメージに
flask-telemetry:v1
というタグを付けます。
docker tag gcr.io/ops-demo-330920/flask_telemetry:61a2a7aabc7077ef474eb24f4b69faeab47deed9 \
{{{project_0.default_region | Region}}}-docker.pkg.dev/{{{project_0.project_id| Project ID}}}/docker-repo/flask-telemetry:v1
- 次のコマンドを実行して、Docker イメージを Artifact Registry に push します。
docker push {{{project_0.default_region | Region}}}-docker.pkg.dev/{{{project_0.project_id| Project ID}}}/docker-repo/flask-telemetry:v1
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Docker リポジトリを作成する
タスク 2. Google Kubernetes Engine クラスタを設定する
このタスクでは、GKE Standard クラスタをデプロイして認証します。
- 次のコマンドを実行して、GKE Standard クラスタをデプロイすると、GKE API を承認して有効化するよう求められます。
gcloud beta container clusters create gmp-cluster --num-nodes=1 --zone {{{project_0.default_zone | Zone}}} --enable-managed-prometheus
クラスタの作成には数分かかります。作成が完了するまで待ってから次のステップに進みます。
- 次のコマンドを実行してクラスタを認証します。
gcloud container clusters get-credentials gmp-cluster --zone {{{project_0.default_zone | Zone}}}
タスク 3. Prometheus Service をデプロイする
- 次のコマンドを実行して、作業するための Namespace を作成します。
kubectl create ns gmp-test
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Prometheus がデプロイされていることを確認する
タスク 4. アプリケーションをデプロイする
-
/metrics
エンドポイントに指標を出力するアプリケーションを取得します。
wget https://storage.googleapis.com/spls/gsp1024/gmp_prom_setup.zip
unzip gmp_prom_setup.zip
cd gmp_prom_setup
-
このステップでは、前のステップで push したイメージの名前を使用するように flask_deployment.yaml
を更新します。
- nano を使用して
flask_deployment.yaml
を開きます。
nano flask_deployment.yaml
-
<ARTIFACT REGISTRY IMAGE NAME>
は次のように置き換えます。
{{{project_0.default_region | Region}}}-docker.pkg.dev/{{{project_0.project_id| Project ID}}}/docker-repo/flask-telemetry:v1
- Ctrl+X、Y、Enter キーを順に押して、更新したファイルを保存し、nano を閉じます。
-
シンプルなアプリケーションをデプロイします:
kubectl -n gmp-test apply -f flask_deployment.yaml
kubectl -n gmp-test apply -f flask_service.yaml
- 次のコマンドを実行して、このシンプルな Python Flask アプリが指標を出力していることを確認します。
url=$(kubectl get services -n gmp-test -o jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}')
注: curl コマンドを成功させるには、Service を完全にデプロイする必要があります。
curl $url/metrics
次の出力が表示されます。
# HELP flask_exporter_info Multiprocess metric
# TYPE flask_exporter_info gauge
flask_exporter_info{version="0.18.5"} 1.0
注: 必要な出力が表示されるまでしばらく待つ必要がある場合があります。想定される出力が得られない場合は、このステップのコマンドを両方とも再実行します。
- PodMonitoring ファイルを適用して、Prometheus に指標のスクレイピングを開始する場所を指示します。
kubectl -n gmp-test apply -f prom_deploy.yaml
- ここで終了する前に、アプリを少し操作して、そのアプリに負荷をかけます。
timeout 120 bash -c -- 'while true; do curl $(kubectl get services -n gmp-test -o jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'; sleep $((RANDOM % 4)) ; done'
このコマンドは 2 分間実行されます。完了したら、このコマンドの実行結果を可視化できます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Flask アプリケーションがデプロイされていることを確認する。
タスク 5. 指標でアプリをモニタリングする
この最後のセクションでは、gcloud
を使用して、このアプリケーションの指標を折れ線グラフで表示するカスタム モニタリング ダッシュボードをデプロイします。
- Cloud Shell で次のスクリプトを実行します。
注: このコードブロック全体をコピーしてください。
gcloud monitoring dashboards create --config='''
{
"category": "CUSTOM",
"displayName": "Prometheus Dashboard Example",
"mosaicLayout": {
"columns": 12,
"tiles": [
{
"height": 4,
"widget": {
"title": "prometheus/flask_http_request_total/counter [MEAN]",
"xyChart": {
"chartOptions": {
"mode": "COLOR"
},
"dataSets": [
{
"minAlignmentPeriod": "60s",
"plotType": "LINE",
"targetAxis": "Y1",
"timeSeriesQuery": {
"apiSource": "DEFAULT_CLOUD",
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_NONE",
"perSeriesAligner": "ALIGN_RATE"
},
"filter": "metric.type=\"prometheus.googleapis.com/flask_http_request_total/counter\" resource.type=\"prometheus_target\"",
"secondaryAggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"metric.label.\"status\""
],
"perSeriesAligner": "ALIGN_MEAN"
}
}
}
}
],
"thresholds": [],
"timeshiftDuration": "0s",
"yAxis": {
"label": "y1Axis",
"scale": "LINEAR"
}
}
},
"width": 6,
"xPos": 0,
"yPos": 0
}
]
}
}
'''
- 作成が完了したら、コンソールに戻ります。タイトルバーの [検索] フィールドに「モニタリング ダッシュボード」と入力し、検索結果から [ダッシュボード] をクリックします。
- 新規作成した Prometheus Dashboard Example を [ダッシュボード] リストで探します。[Prometheus Dashboard] をクリックして、Prometheus Dashboard Example を確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
ダッシュボードが作成されたことを確認する。
お疲れさまでした
Prometheus 指標を使用して GKE アプリをデプロイし、そのアプリから Cloud Monitoring ダッシュボードを作成する基本について説明しました。
次のステップと詳細情報
詳細については、Prometheus のドキュメントでセルフマネージド コレクションのデプロイに関する記事をご覧ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 4 月 21 日
ラボの最終テスト日: 2025 年 4 月 21 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。