
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Use Terraform to set up the necessary infrastructure
/ 50
View Logs in BigQuery
/ 50
Cloud Logging を使用すると、すべての Google Cloud リソースと、他のプラットフォーム上のあらゆるカスタム リソースからログを集約して、すべてのログと指標を 1 か所で保存できます。集約されたログは Cloud Logging UI 内で確認できます。また、より特殊なユースケースに対応するためにログをシンクにエクスポートすることも可能です。現在、Cloud Logging は次のシンクへのエクスポートに対応しています。
このラボでは、Terraform を使用してサンプル アプリケーションを Kubernetes Engine にデプロイし、ログイベントを Cloud Logging に転送します。Terraform は、構成ファイルを使ってクラウド内でのインフラストラクチャのデプロイと進化を自動化できる宣言型の Infrastructure as Code ツールです。ログデータのエクスポート先となる Cloud Storage バケットと BigQuery データセットもこの構成によって作成されます。
このラボは、Cloud Logging について理解を深めていただくことを目的に、GKE Helmsman のエンジニアが作成したものです。Cloud Shell で gsutil cp -r gs://spls/gke-binary-auth/* .
と cd gke-binary-auth-demo
コマンドを実行してデモを確認できます。アセットにぜひ貢献していただければ幸いです。
この Terraform 構成から構築される Kubernetes Engine クラスタが生成するログと指標は、Stackdriver に取り込むことができます。スクリプトからは Cloud Storage 用、BigQuery 用、Cloud Pub/Sub 用のログ エクスポート シンクも作成されます。
これをデータフローを使って図に示したのが次の画像です。
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [ユーザー名] を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [パスワード] を確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
[承認] をクリックします。
出力は次のようになります。
出力:
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
<YOUR_PROJECT_ID>
は Qwiklabs のプロジェクト ID に置き換えます。一部の Compute Engine リソースは、リージョン内やゾーン内に存在します。リージョンとは、リソースを実行できる特定の地理的位置です。1 つのリージョンには 1 つ以上のゾーンがあります。
次のコマンドを実行して、ラボのリージョンとゾーンを設定します(最適なリージョンとゾーンを使用できます)。
Terraform では、Infrastructure as Code と不変のインフラストラクチャの原則に従い、インフラストラクチャの望ましい状態を宣言型で記述することがサポートされています。記述子が適用されると、Terraform は Google Cloud API を使用して、一致するリソースのプロビジョニングと更新を行います。
Terraform は望ましい状態と現在の状態を比較することにより、すべてを削除してやり直すことなく増分変更を行うことができます。たとえば、Google Cloud プロジェクトやコンピューティング インスタンスなどを作成できるだけでなく、Kubernetes Engine クラスタを設定してアプリケーションをデプロイすることもできます。要件が変わった場合は記述子を変更すると、Terraform はそれに応じてクラウド インフラストラクチャを調整します。
このラボでは、Kubernetes Engine クラスタを起動してそこにシンプルなサンプル アプリケーションをデプロイします。デフォルトでは、Google Cloud 内の Kubernetes Engine クラスタは、Cloud Logging にログを転送するよう事前に構成された Fluentd ベースのコレクタを使用してプロビジョニングされます。サンプル アプリケーションを操作すると、Cloud Logging や他のログイベント シンクで確認できるログが生成されます。
provider.tf
スクリプト ファイルから Terraform のプロバイダ バージョンを削除します。
Cloud Shell エディタのタブで、[File] > [Open] を選択してから [Open] をクリックします。左側のメニューで /gke-logging-sinks-demo/terraform/provider.tf
ファイルを開きます。
バージョンを ~> 2.19.0
に設定します。変更後の provider.tf
スクリプト ファイルは次のようになります。
このラボの例では 3 つの Terraform ファイルを使います。
最初の main.tf
ファイルは Terraform を使うための出発点です。このファイルは、使用される機能、操作されるリソース、結果として得られる出力を記述します。
2 番目の provider.tf
ファイルは、Terraform コマンドのターゲットになるクラウド プロバイダとバージョンを示します(この例では Google Cloud)。
最後の variables.tf
ファイルには、Terraform への入力として使用される変数のリストが格納されています。main.tf
で参照されている変数のうち、デフォルト設定が variables.tf
で構成されていないものについては、実行時にプロンプトが表示されます。
main.tf
を少し変更します。左側のメニューで /gke-logging-sinks-demo/terraform/main.tf
ファイルを開きます。
110 行目までスクロールして「Create the Stackdriver Export Sink for Cloud Storage GKE Notifications」を見つけます。
フィルタの resource.type
を container から k8s_container に変更します。
bigquery-sink についても 119 行目で同様の変更を行います。次に進む前に、この 2 つのエクスポート シンク セクションが次の内容であることを確認します。
ファイルを保存して閉じます。
次の make
コマンドを実行して、実行可能な環境を構築します。
[進行状況を確認] をクリックして、実行したタスクを確認します。Terraform を使用して必要なインフラストラクチャが正常にデプロイされていれば、評価スコアが表示されます。
デプロイ中にエラーが表示されなければ、数分後に Kubernetes Engine クラスタが Cloud コンソールに表示されます。
ナビゲーション メニュー > [Kubernetes Engine] > [クラスタ] に移動し、サンプル アプリケーションがデプロイされたクラスタを確認します。
デモが正しくデプロイされたかどうかを確認するには、次のコマンドを実行します。
出力は次のようになります。
アプリケーションが Kubernetes Engine にデプロイされたので、ログデータを生成して Cloud Logging などのツールで表示することができます。
Terraform によってデプロイされたサンプル アプリケーションは、シンプルなウェブページを提供します。
このアプリケーションをブラウザで開くたびに、アプリケーションから Cloud Logging にログイベントが公開されます。ページを数回更新すると、複数のログイベントが生成されます
アプリケーション ページの URL を取得する方法は次のとおりです。
IP:Port
の URL 値をコピーします。別のブラウザを開き、URL を貼り付けます。ブラウザの画面に次のような内容が表示されます。Cloud Logging にはログイベントを表示するための UI が備わっています。検索とフィルタの基本機能が用意されており、システムの問題をデバッグするときに便利です。
Cloud Logging は最近のログイベントを調べるのに適しています。ログイベントを長期にわたって保存する必要がある場合は、この後で紹介する別のツールの使用を検討してください。
Cloud Logging コンソールへのアクセス方法は次のとおりです。
Resource type
は [Kubernetes コンテナ]、cluster_name
は [stackdriver-logging] を選択します。Logging コンソールでは、クエリビルダーを使用してクエリを作成したり、ログのフィールドやタイムゾーンなどのさまざまな機能を試したりすることができます。
Terraform 構成によって 2 つのログ エクスポート シンクが作成されています。シンクを確認する方法は次のとおりです。
ログイベントは、データのアーカイブに適したオブジェクト ストレージ システムの Cloud Storage に保存できます。
Cloud Storage バケットにポリシーを設定すれば、たとえば、古くなったデータを期限切れにして削除する一方で、最近のデータは価格や可用性の異なるさまざまなストレージ クラスに保存できます。
Terraform 構成により、中長期的なアーカイブを目的にログがエクスポートされる stackdriver-gke-logging- という名前の Cloud Storage バケットが作成されています。
この例では、通常の本番環境におけるログのアクセス頻度が低いので、バケットのストレージ クラスが Nearline に設定されています(この設定なら中期的なストレージ コストを低く抑えることができます)。本番のシナリオでは、バケットにライフサイクル ポリシーを設定して、より低コストで長期間ログを保存できる Coldline Storage にコンテンツを移動させることもできます。
Cloud Storage に保存されたログにアクセスする方法は次のとおりです。
stackdriver-gke-logging-<random-Id>
という名前のバケットを見つけてクリックします。ラボの終盤にこのバケットに戻れば、クラスタで実行されている Pod に対応するフォルダ(autoscaler、dnsmasq など)が表示される場合があります。
いずれかのフォルダをクリックすると、heapster、kubedns、sidecar などの特定のログの詳細な情報を確認できます。
ログイベントを BigQuery に公開するように設定できます。BigQuery は、大規模なデータセットに対して迅速で高度なクエリを実行できるデータ ウェアハウス ツールです。
Terraform 構成によって gke_logs_dataset
という名前の BigQuery データセットが作成されます。このデータセットは、直近の 1 時間内(データセットの [デフォルトのテーブルの有効期限] による設定値)に生成されたすべての Kubernetes Engine 関連ログを保存するように設定されます。Kubernetes Engine コンテナのログはこのデータセットに push されます。
BigQuery に保存されたログにアクセスする方法は次のとおりです。
Cloud コンソールの BigQuery へようこそ
] メッセージ ボックスが開いたら、[完了] をクリックします。Select *
クエリを実行すると一般にコストが高くなるので、おすすめしません。このラボで使うデータセットには直近 1 時間分のログしか含まれないため、データの量は多くありません。結果ウィンドウに行や列が表示されます。取得されたデータの行をスクロールして参照できます。必要に応じて、最初のクエリで表示された結果に基づいて特定のデータに絞り込むカスタムクエリを実行します。
[進行状況を確認] をクリックして、実行したタスクを確認します。BigQuery シンクによって BigQuery データセットにログが書き込まれている場合は、評価スコアが表示されます。
Terraform は作成したリソースを追跡しているため、それらをすべて破棄することができます。
Permission denied
で失敗するTerraform で使用している認証情報には、選択されているプロジェクトでリソースを作成するのに必要な権限がありません。
gcloud config list
で表示されるアカウントに、リソースの作成に必要な権限があることを確認してください。
権限がある場合は、gcloud auth application-default login
を実行してアプリケーションのデフォルト認証情報を生成し直してください。
Terraform 構成が完了すると、Cloud Storage バケットが作成されますが、ログデータが Kubernetes Engine クラスタからすぐに取得されるとは限りません。
最初のエントリが表示されるまでに 2~3 時間かかることがあるので、しばらく時間をおいてください。Cloud Storage の詳細については、シンクの宛先でログを表示する方法に関するドキュメントをご覧ください。
Terraform 構成が完了すると、BigQuery データセットが作成されますが、結果を確認しようとした時点でテーブルがデータセットに作成されているとは限りません。
テーブルにデータがすぐに入力されることはまれです。
正しく機能しないと判断する前に、少し時間(最短でも 5 分)をおいてください。
このセルフペース ラボは、「Google Cloud's Operations Suite on GKE」クエストと「Google Cloud Logging」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、修了するとその成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、次のクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
Copyright 2024 Google LLC. 本ソフトウェアは「現状有姿」で提供されており、いかなる使用および目的に関しても保証および表明は伴いません。本ソフトウェアのご利用には、Google との契約が適用されます。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one