ジャンプ スタート ソリューション: ログ分析パイプライン

Last reviewed 2023-04-10 UTC

このガイドは、ログ分析パイプラインのジャンプ スタート ソリューションの理解、デプロイ、使用に役立ちます。これは、複数のソースからアプリケーション データのストリームがキャプチャされ、分析に利用可能になる仕組みを示しています。

このソリューションをデプロイして、アプリケーションからウェブログを抽出して分析できます。これは、次のことを行うのに役立てることができます。

  • アプリケーション リソースへのアクセスを追跡する。
  • アプリケーションの使用パターンを特定して対応する。
  • パフォーマンスの問題を分析してトラブルシューティングする。

ロギングの実装とベスト プラクティスの詳細については、リソースのモニタリングとロギングをご覧ください。

このドキュメントは、アプリケーション ログのデータの処理と分析になんらかのバックグラウンドがあるデベロッパーを対象としています。このドキュメントは、基本的なクラウドのコンセプトに精通していることを前提としていますが、必ずしも Google Cloud について理解している必要はありません。Terraform の使用経験が役に立ちます。

目標

このソリューション ガイドでは、次のことを行うのに役立ちます。

  • クラウドとオンプレミスのソースからさまざまな Cloud Storage オプションに、最終的には分析ワークフローに、スケジュール上のデータが流れる仕組みについて説明します。
  • Cloud Run で実行中のアプリケーションからサンプル ウェブログをキャプチャ、保存、処理するサンプル パイプラインをデプロイします。
  • BigQuery テーブルに保存されているデータをクエリし、Looker Studio レポートでデータを可視化することで、ログ情報を分析します。

アーキテクチャ

このソリューションには、ログイン、リクエスト、データ変更など、ウェブ アプリケーションとのユーザーのやり取りをキャプチャするサンプル ウェブログが含まれています。次の図は、ソリューション アーキテクチャを示しています。

ログ分析パイプラインのジャンプ スタート ソリューションの図。

リクエスト フロー

このソリューションがデプロイするログ分析パイプラインのリクエスト処理フローは次のとおりです。フロー内のステップには、上のアーキテクチャ図のように番号が付いています。

  1. Cloud Run にデプロイされたウェブサーバーは、ウェブサーバーにデプロイされたウェブサイトにユーザーが訪問するとウェブログを生成します。ウェブログは、自動的に Cloud Logging に送信されます。

  2. Cloud Logging は、Cloud Logging シンク構成のスケジュールに基づいて、ウェブログを BigQuery の指定されたテーブルにルーティングします。

  3. 他のクラウドまたはオンプレミスで実行されているアプリケーションは、ウェブ ログファイルを Cloud Storage バケットにアップロードします(このデプロイには、サンプルのウェブログ ファイルを含むテキスト ファイルがJSON 形式含まれています)。

  4. BigQuery Data Transfer Service は、BigQuery Data Transfer Service の転送構成に基づいて、BigQuery の指定されたテーブルに定期的にウェブ ログファイルを転送します。

  5. テーブルのウェブログに対してクエリを実行するか、Looker Studio を使用してウェブログを可視化します。

コンポーネントと構成

このアーキテクチャは、次のコンポーネントで構成されています。

コンポーネント 商品の説明 このソリューションの目的
Cloud Run サーバーレスのコンテナ化されたアプリを構築してデプロイできるフルマネージド サービス。Google Cloud がスケーリングやその他のインフラストラクチャ タスクを処理するため、ユーザーはコードのビジネス ロジックに集中できます。 アプリケーションをホストし、ウェブログを実行、生成できるようにします。
Cloud Logging Google Cloud や他のクラウドからのロギングデータとイベントを保存、検索、分析、モニタリング、通知できるサービス。 Cloud Run でホストされているアプリケーションのウェブログをスケジュールに沿ってデータ ウェアハウスに転送します。
BigQuery 機械学習機能が組み込まれた、フルマネージドでスケーラビリティの高いデータ ウェアハウス。 アプリケーションによって生成されたログを保存し、データを分析するためのツールを提供します。
BigQuery Data Transfer Service クラウドまたはオンプレミスのソースから BigQuery データ ウェアハウスに低コストでデータを転送するサービス。 他のクラウドやオンプレミスで実行されているアプリケーションによって生成されるログファイルを、Cloud Storage から BigQuery データ ウェアハウスに定期的に移動します。
Cloud Storage 低コストで無制限のオブジェクト ストレージをさまざまなデータ型に使用できるエンタープライズ クラスのサービス。データは Google Cloud の内部および外部からアクセス可能で、地理的に冗長に複製されます。 他のクラウドやオンプレミスで実行されているアプリケーションがウェブログファイルをアップロードするデータレイクとして機能します。これらのファイルは、最終的に BigQuery データ ウェアハウスに転送されます。このデプロイには、サンプルのウェブログファイルが含まれています。
Looker Studio データ インサイトの作成と共有に役立つセルフサービス ビジネス インテリジェンス プラットフォーム。 ウェブログ情報から可視化を実行する方法を提供します。

コスト

ログ分析パイプライン ソリューションで使用する Google Cloud リソースの費用を見積もるには、Google Cloud 料金計算ツールで事前に計算された見積もりをご覧ください。

見積もりを出発点として使用して、デプロイの費用を計算します。見積もりを変更して、ソリューションで使用するリソースに対して行う予定の構成の変更を反映できます。

事前に計算された見積もりは、次のような特定の要因に関する前提条件に基づいています。

  • リソースがデプロイされている Google Cloud のロケーション。
  • リソースが使用されている時間。

  • BigQuery で保存、分析するデータの量。

ソリューションをデプロイする

このセクションでは、ソリューションのデプロイ プロセスについて説明します。

Google Cloud プロジェクトを作成または選択する

ソリューションをデプロイするときに、リソースがデプロイされている Google Cloud プロジェクトを選択します。既存のプロジェクトを使用するか、新しいプロジェクトを作成するかは、次の要素を考慮して判断してください。

  • ソリューション用のプロジェクトを作成し、デプロイが不要になった場合は、プロジェクトを削除して、それ以上の請求を避けることができます。既存のプロジェクトを使用する場合、不要になったプロジェクトを削除する必要があります。
  • 新しいプロジェクトを使用すると、本番環境ワークロードに使用されるリソースなど、以前にプロビジョニングされたリソースとの競合を回避できます。

新しいプロジェクトにソリューションをデプロイする場合は、デプロイを開始する前にプロジェクトを作成します。

プロジェクトを作成するには、次の手順を完了します。

  1. Google Cloud コンソールでプロジェクトの選択ページに移動します。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトの作成を開始するには、[プロジェクトを作成] をクリックします。

  3. プロジェクトに名前を付けます。生成されたプロジェクト ID をメモしておきます。

  4. 必要に応じて他のフィールドを編集します。

  5. プロジェクトを作成するには、[作成] をクリックします。

必要な IAM 権限を取得する

デプロイ プロセスを開始するには、次の表に示す Identity and Access Management(IAM)権限が必要です。ソリューションをデプロイするプロジェクトに対して roles/owner 基本ロールが付与されている場合、必要な権限がすべてすでに付与されています。roles/owner のロールがない場合は、これらの権限(またはこれらの権限を含むロール)を付与するよう管理者に依頼してください。

必要な IAM 権限 必要な権限を含む事前定義ロール

serviceusage.services.enable

Service Usage 管理者
roles/serviceusage.serviceUsageAdmin

iam.serviceAccounts.create

サービス アカウント管理者
roles/iam.serviceAccountAdmin

resourcemanager.projects.setIamPolicy

プロジェクト IAM 管理者
roles/resourcemanager.projectIamAdmin
config.deployments.create
config.deployments.list
Cloud 構成マネージャー管理者
roles/config.admin

ソリューション用に作成されたサービス アカウント

デプロイ プロセスを開始すると、ユーザーに代わってソリューションをデプロイするために(また、必要に応じてデプロイを削除するために)サービス アカウントが作成されます。このサービス アカウントには、特定の IAM 権限が一時的に割り当てられます。つまり、ソリューションのデプロイと削除のオペレーションが完了すると、権限が自動的に取り消されます。ソリューションのデプロイを削除した後は、このガイドの後半で説明するように、サービス アカウントを削除することをおすすめします。

サービス アカウントに割り当てられているロールを表示する

これらのロールは、管理者がこの情報を必要とする場合に一覧表示されます。

  • roles/bigquery.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/logging.configWriter
  • roles/resourcemanager.projectIamAdmin
  • roles/run.admin
  • roles/serviceusage.serviceUsageAdmin
  • roles/storage.admin

デプロイ方法を選択する

このソリューションは、次の方法でデプロイできます。

  • コンソールから: このソリューションの動作を確認する場合は、この方法を使用します。Cloud Build は、ソリューションに必要なすべてのリソースをデプロイします。デプロイされたソリューションが不要になった場合は、コンソールから削除できます。ソリューションのデプロイ後に作成したリソースは、個別に削除する必要があります。

    このデプロイ方法を使用する場合、コンソールからデプロイするの手順に沿って操作します。

  • Terraform を使用: このソリューションをカスタマイズする場合、または Infrastructure as Code(IaC)のアプローチを使用してリソースのプロビジョニングと管理を自動化する場合は、この方法を使用します。GitHub から Terraform 構成をダウンロードし、必要に応じてコードをカスタマイズしてから、Terraform を使用してソリューションをデプロイします。ソリューションをデプロイした後も、引き続き Terraform を使用してソリューションを管理できます。

    このデプロイ方法を使用する場合は、Terraform を使用してデプロイするの手順に沿って操作します。

コンソールからデプロイ

事前構成済みのソリューションをそのままデプロイするには、次の手順を行います。

  1. Google Cloud ジャンプ スタート ソリューションのカタログで、ログ分析パイプラインページに移動します。

  2. ソリューションの概算費用やデプロイの時間など、ページに表示された情報を確認します。

  3. ソリューションのデプロイを開始する準備ができたら、[デプロイ] をクリックします。

    詳細でインタラクティブなガイドが表示されます。

  4. インタラクティブ ガイドの手順を完了します。

    1. ソリューションによってデプロイされるリソースを作成するプロジェクトを選択し、[続行] をクリックします。

    2. [デプロイ名] フィールドに、このプロジェクトでまだ使用されていない名前を入力します。

    3. 必要に応じて、デプロイに識別ラベルを追加します。(ソリューション インジケーターとデプロイ名のラベルが自動的に追加されます)。ラベルを使用して、コストセンター、環境、状態などの条件でリソースを整理できます。

      ラベルの詳細については、ラベルの作成と管理をご覧ください。

    4. [リージョン] リストから、リソースを作成するリージョンを選択します。

      リージョンの詳細については、地域とリージョンをご覧ください。

  5. オプションの指定が終わったら、[デプロイ] をクリックします。

    [ソリューションのデプロイ] ページが表示されます。このページの [ステータス] フィールドに [デプロイ] が表示されます。

  6. ソリューションがデプロイされるまで待ちます。

    デプロイが失敗した場合、[ステータス] フィールドに [失敗] と表示されます。Cloud Build のログを使用してエラーを診断できます。詳細については、コンソールからソリューションのデプロイ時のエラーをご覧ください。

    デプロイが完了すると、[ステータス] フィールドが [デプロイ済み] に変わります。

  7. デプロイされた Google Cloud リソースとその構成を確認するには、インタラクティブなツアーをご覧ください。

    ツアーを開始する

ソリューションを使用する

ソリューションのデプロイが終了したら、それを操作してコンテナが実行されていることを確認し、分析を開始できます。ソリューションを使用するには、次の手順を行います。

  1. [ソリューションのデプロイ] ページで、 [アクション] メニューをクリックします。

  2. Cloud Run コンテナ イメージのデモサイトを表示するには、[デモサイトを表示する] をクリックします。

    デモサイトには、コンテナ イメージの基本情報と実行ステータスが含まれています。

  3. 最初のデータ転送が完了するまで、最長で 15 分待ちます。

  4. ログ情報を可視化するには、ソリューションのデプロイページに戻り、 操作メニューをクリックしてから、 Looker Studio レポートを表示するをクリックします。

    Looker Studio レポートは、生成されたログのサンプルのホストとステータスの情報を可視化するのに役立ちます。データをやり取りする方法の詳細については、BI Engine Looker Studio でデータを分析するをご覧ください。

  5. 詳細なログ情報を表示するには、[ソリューションのデプロイ] ページに戻り、 [操作] メニューをクリックしてから、次のようにします。

    1. [BigQuery でログを表示する] をクリックします。[エクスプローラ] ページが開き、このデプロイに使用しているログシンク データセットに関する情報が表示されます。

    2. [エクスプローラ] ペインで、ログシンク リソースを展開します。

    3. [transferred_logs] テーブルをクリックします。

    4. [transferred_logs] ペインで [プレビュー] タブをクリックします。テーブル内のすべてのログデータが表示されます。

    BigQuery テーブル内のデータを分析する方法の詳細については、BigQuery 分析の概要をご覧ください。

サンプル ソリューションをデプロイし、サンプル レポートを操作し、データ ウェアハウスのログ情報をプレビューしました。組織固有のログ分析のニーズに対応する設計の推奨事項については、設計に関する推奨事項をご覧ください。

このソリューションが不要になった場合は、デプロイを削除して、Google Cloud リソースに対する課金が継続しないようにします。詳細については、デプロイを削除するをご覧ください。

Terraform を使用したデプロイ

このセクションでは、Terraform を使用してソリューションをカスタマイズする方法や、ソリューションのプロビジョニングと管理を自動化する方法について説明します。Terraform コードを使用してデプロイするソリューションは、Google Cloud コンソールの [ソリューションのデプロイ] ページに表示されません。

Terraform クライアントを設定する

Terraform は、Cloud Shell またはローカルホストで実行できます。このガイドでは、Terraform がプリインストールされ、Google Cloud での認証が構成されている Cloud Shell で Terraform を実行する方法について説明します。

このソリューションの Terraform コードは、GitHub リポジトリで入手できます。

  1. Cloud Shell に GitHub リポジトリのクローンを作成します。

    Cloud Shell で開く

    GitHub リポジトリを Cloud Shell にダウンロードするよう求めるメッセージが表示されます。

  2. [確認] をクリックします。

    別のブラウザタブで Cloud Shell が起動し、Cloud Shell 環境の $HOME/cloudshell_open ディレクトリに Terraform コードがダウンロードされます。

  3. Cloud Shell で、現在の作業ディレクトリが $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example かどうかを確認します。このディレクトリには、ソリューションの Terraform 構成ファイルが含まれています。そのディレクトリに変更する必要がある場合は、次のコマンドを実行します。

    cd $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example
    
  4. 次のコマンドを実行して Terraform を初期化します。

    terraform init
    

    次のメッセージが表示されるまで待ちます。

    Terraform has been successfully initialized!
    

Terraform 変数を構成する

ダウンロードした Terraform コードには、要件に基づいてデプロイをカスタマイズするために使用できる変数が含まれています。たとえば、Google Cloud プロジェクトと、ソリューションをデプロイするリージョンを指定できます。

  1. 現在の作業ディレクトリが $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example であることを確認します。そうでない場合は、そのディレクトリに移動します。

  2. 同じディレクトリに、terraform.tfvars という名前のテキスト ファイルを作成します。

  3. terraform.tfvars ファイルで次のコード スニペットをコピーし、必要な変数の値を設定します。

    • コード スニペットでコメントとして記載されている手順を実施します。
    • このコード スニペットには、値を設定する必要のある変数のみが含まれています。Terraform 構成には、デフォルト値を持つ他の変数が含まれています。すべての変数とデフォルト値を確認するには、$HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example ディレクトリにある variables.tf ファイルをご覧ください。
    • terraform.tfvars ファイルで設定した各値が、variables.tf ファイルで宣言されている変数のと一致していることを確認します。たとえば、variables.tf ファイル内の変数に定義されている型が bool の場合、その変数の値として true または falseterraform.tfvars 内で指定する必要があります。
      # This is an example of the terraform.tfvars file.
      # The values that you set in this file must match the variable types, as declared in variables.tf.
      # The values in this file override any defaults in variables.tf.
    
      # The project to provision resources to (required)
      project_id = "PROJECT_ID"
    
      # Google Cloud region where you want to deploy the solution (optional)
      # Example: us-central1
      region = "REGION"
    
      # The name used when resources are provisioned (optional)
      # Example: log-analysis
      deployment_name = project_id = "DEPLOYMENT_NAME"
    
      # A set of key/value label pairs to assign to the resources deployed by this solution (optional)
      # Example: {"team"="monitoring", "environment"="test"}
      labels = {"KEY1"="VALUE1",..."KEYn"="VALUEn"}
    
      # Whether to enable underlying APIs (optional)
      # Example: true
      enable_apis = "ENABLE_APIS"
    
      # Whether to delete all BigQuery resources when the solution is deleted (optional)
      # Example: false
      delete_content_on_destroy = "DELETE_CONTENT_ON_DESTROY"
    

必要な変数に割り当てできる値については、以下をご覧ください。

  • project_id は必須です。 この値の詳細については、プロジェクトの識別をご覧ください。

  • 他の変数にはデフォルト値があります。それらの一部(たとえば、deployment_namelabels)は変更できます。

Terraform 構成を検証して確認する

  1. 現在の作業ディレクトリが $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example であることを確認します。そうでない場合は、そのディレクトリに移動します。

  2. Terraform 構成にエラーがないことを確認します。

    terraform validate
    

    コマンドからエラーが返された場合は、構成で必要な修正を行ってから、terraform validate コマンドを再度実行します。コマンドで次のメッセージが返されるまで、この手順を繰り返します。

    Success! The configuration is valid.
    
  3. 構成で定義されているリソースを確認します。

    terraform plan
    
  4. 前述のように変数定義(terraform.tfvars)ファイルを作成しなかった場合、Terraform でデフォルト値のない変数の値の入力を求められます。必要な値を入力します。

    terraform plan コマンドの出力に、構成の適用時に Terraform がプロビジョニングするリソースのリストが表示されます。

    変更を行う場合は、構成を編集してから、terraform validate コマンドと terraform plan コマンドを再度実行します。

リソースをプロビジョニングする

構成にこれ以上の変更が必要ない場合は、リソースをデプロイします。

  1. 現在の作業ディレクトリが $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example であることを確認します。そうでない場合は、そのディレクトリに移動します。

  2. Terraform 構成を適用します。

    terraform apply
    
  3. 前述のように変数定義(terraform.tfvars)ファイルを作成しなかった場合、Terraform でデフォルト値のない変数の値の入力を求められます。必要な値を入力します。

    作成されるリソースのリストが表示されます。

  4. アクションの実行を求められたら、「yes」と入力します。

    Terraform でデプロイの進行状況を示すメッセージが表示されます。

    デプロイを完了できない場合、失敗の原因となったエラーが表示されます。エラー メッセージを確認し、構成を更新してエラーを修正します。次に、terraform apply コマンドを再実行します。Terraform のエラーのトラブルシューティングについては、Terraform を使用してソリューションをデプロイする際のエラーをご覧ください。

    すべてのリソースが作成されると、Terraform によって次のメッセージが表示されます。

    Apply complete!
    

    すべてのリソースが作成されると、Terraform によって次のようなメッセージが表示されます(一部の値はデプロイによって異なります)。

      bigquery_dataset_name = "<DEPLOYMENT_NAME>_logsink"
      bigquery_dataset_url = "https://console.cloud.google.com/bigquery?project=<PROJECT_ID>&ws=!1m4!1m3!3m2!1sPROJECT_ID!2s<DEPLOYMENT_NAME_logsink"
      bigquery_table_name = "transferred_logs"
      bucket_name = "<DEPLOYMENT_NAME>-ingest-cce5ab38"
      cloud_run_url="<VALUE>"
      lookerstudio_report_url = "https://lookerstudio.google.com/reporting/create?c.mode=edit&ds.connector=BIG_QUERY&ds.type=TABLE&ds.projectId=<PROJECT_ID>&ds.datasetId=<DEPLOYMENT_NAME>_logsink&ds.tableId=transferred_logs"
    

    次の詳細情報が表示されます。

    • BigQuery データセット名: ウェブログが保存されているデータセット。
    • BigQuery データセット URL: Google Cloud コンソールのデータセットの詳細へのリンク。
    • BigQuery テーブル名: データがデータセット内で格納されるテーブル。
    • バケット名: 他のクラウドやオンプレミスで実行されているアプリケーションからのウェブログファイルを保存するストレージ バケット。
    • Looker Studio のレポート URL: ウェブログを可視化できるレポートへのリンク。

ソリューションを使用する

ソリューションのデプロイが終了したら、それを操作してコンテナが実行されていることを確認し、分析を開始できます。ソリューションを使用するには、次の手順を行います。

  1. 後で使用できるように、bigquery_dataset_urllookerstudio_report_url の値のコピーを作成します。

  2. 最初のデータ転送が完了するまで、最長で 15 分待ちます。

  3. ログ情報の可視化を見るには、Looker Studio の URL をブラウザに貼り付けます。

    Looker Studio レポートは、サンプルのウェブログのホストとステータス情報を可視化するのに役立ちます。データをやり取りする方法の詳細については、BI Engine Looker Studio でデータを分析するをご覧ください。

  4. 詳細なログ情報を表示するには、次のようにします。

    1. BigQuery データセット名をブラウザに貼り付けます。[エクスプローラ] ページが開き、このデプロイに使用しているデータセットに関する情報が表示されます。

    2. [エクスプローラ] ペインで、ログシンク リソースを展開します。

    3. [transferred_logs] テーブルをクリックします。

    4. 右パネルで [プレビュー] をクリックします。テーブル内のすべてのログデータが表示されます。

    BigQuery テーブル内のデータを分析する方法の詳細については、BigQuery 分析の概要をご覧ください。

  5. デプロイされた Google Cloud リソースとその構成を確認するには、インタラクティブなツアーをご覧ください。

    ツアーを開始する

ソリューションをカスタマイズする

このセクションでは、Terraform のデベロッパーが独自の技術的要件とビジネス要件を満たすために、ログ分析パイプライン ソリューションを変更するうえで使用できる情報を提供します。このセクションのガイダンスは、Terraform を使用してソリューションをデプロイする場合にのみ該当します。

このソリューションでプロビジョニングする Google Cloud リソースには、事前構成済みのパラメータがあります。パラメータを変更するワークフローを示すために、この手順では BigQuery Data Transfer Service のスケジュール パラメータを変更します。これは、予想されるデータ更新間隔に合わせて変更できます。

ソリューションをカスタマイズするには、Cloud Shell で次の手順を行います。

  1. 現在の作業ディレクトリが $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example であることを確認します。そうでない場合は、そのディレクトリに移動します。

    cd $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example
    
  2. 次の表に示すように、main.tf ファイルを開き、必要な変更を行います。

    パラメータ main.tf の Terraform 引数
    BigQuery Data Transfer Service ジョブ スケジュール main.tf ファイル内の引数: schedule

    コード スニペット

    
    resource "google_bigquery_data_transfer_config" "log_transfer" {
          ... template { ...
                  
            schedule = "SCHEDULE" ... } }
  3. Terraform 構成を検証して確認します。

  4. リソースをプロビジョニングします。

(省略可)独自のウェブログファイルをデプロイに追加する

ソリューションのデプロイには、レポートでクエリまたは可視化できるサンプル ウェブログが含まれています。サンプルデータを独自のウェブログ データに置き換える場合は、次のようにします。

  1. ウェブログが JSON 形式であることを確認します。

  2. ウェブログに基づくデータスキーマ ファイルを JSON 形式で作成します。

  3. Terraform を使用してソリューションをデプロイし、次のファイルの内容を独自のデータとスキーマの情報に置き換えます。

    • ウェブログ データ: sample_access_log.json
    • データスキーマ: sample_access_log_schema.json

設計に関する推奨事項

このセクションでは、セキュリティ、信頼性、コスト、パフォーマンスの要件を満たすアーキテクチャを構築するために、ログ分析パイプライン ソリューションを使用する際の推奨事項について説明します。

プロダクトの代替手段

独自の要件に合うようにソリューションを変更する場合は、サンプル デプロイで使用されているプロダクトに対する次の代替手段を検討してください。

  • このソリューションでは、Cloud Run コンテナからアプリケーションが提供されます。環境内では、独自のニーズに応じてアプリケーションを提供するほかのプロダクトを検討することもできます。使用可能なコンピューティング オプションの詳細については、Google Cloud でのアプリケーションのホスティングをご覧ください。

  • ソリューションには、他のクラウド プラットフォームまたはオンプレミスからログファイルをアップロードできるストレージ バケットが含まれています。マネージド データベースにログデータを保存している場合は、そのデータベースから BigQuery にデータをストリーミングすることを検討してください。詳細については、Datastream の概要をご覧ください。

セキュリティ

追加のアーキテクチャ セキュリティについては、次のガイドの推奨事項を実装してください。

信頼性

次のガイドラインを使用すると、このソリューションのプロダクトの信頼性を改善するのに役立ちます。

パフォーマンス

次のベスト プラクティスを遵守して、パフォーマンスを最適化します。

コスト

ワークフローの費用を最適化するには、次の設計原則を使用します。

次の点にご注意ください。

  • 設計を変更する前に、費用への影響を評価し、他の機能との潜在的なトレードオフを検討します。Google Cloud 料金計算ツールを使用すると、設計変更の費用への影響を評価できます。
  • ソリューションの設計の変更を実装するには、Terraform コーディングの専門知識と、ソリューションで使用される Google Cloud サービスの高度な知識が必要です。
  • Google 提供の Terraform 構成を変更して、エラーが発生した場合は、GitHub で問題を作成します。GitHub の問題はベスト エフォート ベースで審査されます。これは、一般的な使用に関する質問を目的としたものではありません。
  • Google Cloud で本番環境レベルの環境を設計して設定する方法については、Google Cloud のランディング ゾーンの設計Google Cloud 設定のチェックリストをご覧ください。

デプロイを削除する

このソリューションが不要になった場合は、このソリューションで作成したリソースに対する課金が継続しないように、すべてのリソースを削除します。

コンソールを使用して削除する

この手順は、ソリューションをコンソールからデプロイした場合に実施します。

  1. Google Cloud コンソールで、[ソリューションのデプロイ] ページに移動します。

    [ソリューションのデプロイ] に移動

  2. 削除するデプロイが含まれているプロジェクトを選択します。

  3. 削除するデプロイを見つけます。

  4. アクション」をクリックして、[削除] を選択します。

  5. デプロイメントの名前を入力し、[確認] をクリックします。

    [ステータス] フィールドに「削除中」が表示されます。

    削除に失敗した場合は、デプロイメントの削除時のエラーのトラブルシューティング ガイダンスをご覧ください。

ソリューションに使用した Google Cloud プロジェクトが不要になった場合は、プロジェクトを削除できます。詳細については、任意: プロジェクトを削除するをご覧ください。

Terraform を使用して削除する

Terraform を使用してソリューションをデプロイした場合は、この手順を実施します。

  1. Cloud Shell で、現在の作業ディレクトリが $HOME/cloudshell_open/terraform-google-log-analysis/examples/simple_example であることを確認します。そうでない場合は、そのディレクトリに移動します。

  2. Terraform によってプロビジョニングされたリソースを削除します。

    terraform destroy
    

    破棄されるリソースのリストが表示されます。

  3. アクションの実行を求められたら、「yes」と入力します。

    進行状況を示すメッセージが表示されます。すべてのリソースが削除されると、次のメッセージが表示されます。

    Destroy complete!
    

    削除に失敗した場合は、デプロイメントの削除時のエラーのトラブルシューティング ガイダンスをご覧ください。

ソリューションに使用した Google Cloud プロジェクトが不要になった場合は、プロジェクトを削除できます。詳細については、任意: プロジェクトを削除するをご覧ください。

省略可: プロジェクトを削除する

ソリューションを新しい Google Cloud プロジェクトにデプロイした後、そのプロジェクトが不要になった場合は、次の手順で削除します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. プロンプトでプロジェクト ID を入力し、[シャットダウン] をクリックします。

プロジェクトを保持する場合は、次のセクションで説明するように、このソリューション用に作成されたサービス アカウントを削除します。

省略可: サービス アカウントを削除する

ソリューションに使用したプロジェクトを削除した場合は、このセクションをスキップしてください。

このガイドの前半で説明したように、ソリューションをデプロイしたときに、ユーザーに代わってサービス アカウントが作成されました。このサービス アカウントには特定の IAM 権限が一時的に割り当てられました。ソリューションのデプロイと削除オペレーションが完了した後、権限は自動的に取り消されましたが、サービス アカウントは削除されません。このサービス アカウントを削除することをおすすめします。

  • Google Cloud コンソールからソリューションをデプロイした場合は、[ソリューションのデプロイ] ページに移動します(すでにページが表示されている場合は、ブラウザを更新します)。サービス アカウントが削除されるように、バックグラウンドでプロセスがトリガーされます。特に操作を行う必要はありません。

  • Terraform を使用してソリューションをデプロイした場合は、次の手順を完了します。

    1. Google Cloud コンソールで、[サービス アカウント] ページに移動します。

      [サービス アカウント] に移動

    2. ソリューションに使用したプロジェクトを選択します。

    3. 削除するサービス アカウントを選択します。

      ソリューション用に作成されたサービス アカウントのメール ID は、次の形式になります。

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      メール ID には次の値が含まれます。

      • DEPLOYMENT_NAME: デプロイメントの名前。
      • NNN: 3 桁のランダムな数字。
      • PROJECT_ID: ソリューションをデプロイしたプロジェクトの ID。
    4. [削除] をクリックします。

エラーのトラブルシューティングを行う

エラーを診断して解決するために実行できるアクションは、デプロイ方法とエラーの複雑さによって異なります。

コンソールからのデプロイで発生したエラー

コンソールを使用してデプロイが失敗した場合は、次の操作を行います。

  1. [ソリューションのデプロイ] ページに移動します。

    デプロイが失敗した場合、[ステータス] フィールドに [失敗] と表示されます。

  2. エラーの原因となったエラーの詳細を表示するには:

    1. アクション」をクリックします。

    2. [Cloud Build のログを表示する] を選択します。

  3. Cloud Build のログを確認し、適切な措置を講じて失敗の原因となった問題を解決します。

Terraform でのデプロイで発生したエラー

Terraform を使用したデプロイが失敗した場合、terraform apply コマンドの出力には、問題を診断するために確認できるエラー メッセージが含まれます。

次のセクションの例では、Terraform の使用時に発生する可能性のあるデプロイエラーを示します。

API not enabled エラー

プロジェクトを作成し、すぐに新しいプロジェクトでソリューションをデプロイすると、デプロイが失敗し、次のようなエラーが発生することがあります。

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

このエラーが発生した場合は、数分待ってから terraform apply コマンドを再度実行します。

デプロイ削除時のエラー

ソリューションのデプロイ後に、ソリューションによってプロビジョニングされたリソースを追加または変更してから、デプロイを削除しようとすると、削除が失敗する場合があります。

たとえば、ソリューションをデプロイした後に、ソリューションが作成した VPC ネットワークにサブネットを追加してから、ソリューションを削除しようとすると、削除は失敗します。コンソールからソリューションをデプロイした場合は、[ソリューションのデプロイ] ページの [ステータス] フィールドに [失敗] と表示され、Cloud Build ログに次のようなエラーが表示されます。

Error: running tf destroy: terraform destroy failed: running terraform failed: exit status 1
Step #0 - "Destroy blueprint": running tf destroy: terraform destroy failed: running terraform failed: exit status 1
Step #0 - "Destroy blueprint":
Step #0 - "Destroy blueprint": Error: Error waiting for Deleting Network: The network resource 'projects/mysolutionsproject/global/networks/tiered-web-app-private-network' is already being used by 'projects/mysolutionsproject/regions/asia-east1/subnetworks/mysubnet'

このエラーが発生した場合は、ソリューションのデプロイ後に追加したリソースを削除してから、ソリューションを再び削除してみてください。

BigQuery リソース削除時のエラー

Terraform を使用した破棄が失敗した場合、terraform destroy コマンドの出力には、問題を診断するために確認できるエラー メッセージが含まれます。

たとえば、次のエラー メッセージが表示される場合があります。

Error: cannot destroy instance without setting deletion_protection=false and running `terraform apply`.

このエラーが発生した場合、ソリューションによって作成された BigQuery リソースは破棄されません。BigQuery リソースを破棄する場合は、コンソールで削除できます。

データ転送時のエラー

Cloud Storage から BigQuery への、またはアプリケーションと BigQuery 間のデータ転送時にエラーが発生する場合があります。データ転送エラーのトラブルシューティングについては、次のドキュメントをご覧ください。

デプロイ削除時のエラー

デプロイを削除しようとして失敗することもあります。

  • コンソールでソリューションをデプロイした後に、ソリューションによってプロビジョニングされたリソースを変更してからデプロイを削除しようとすると、削除が失敗することがあります。[ソリューションのデプロイ] ページの [ステータス] フィールドに「失敗」と表示され、Cloud Build のログにエラーの原因が表示されます。
  • Terraform を使用してソリューションをデプロイしてから、Terraform 以外のインターフェース(コンソールなど)を使用してリソースを変更し、デプロイメントを削除しようとすると、削除が失敗することがあります。terraform destroy コマンドの出力にあるメッセージにエラーの原因が示されます。

エラーログとエラーの内容を確認し、エラーの原因となったリソースを特定して削除してから、もう一度デプロイを削除してみてください。

コンソールベースのデプロイが削除されず、Cloud Build ログを使用してエラーを診断できない場合は、Terraform を使用してデプロイを削除できます。次のセクションをご覧ください。

Terraform を使用してコンソールベースのデプロイを削除する

このセクションでは、コンソールからコンソールベースのデプロイメントを削除しようとしたときにエラーが発生した場合に、コンソールベースのデプロイメントを削除する方法について説明します。このアプローチでは、削除するデプロイの Terraform 構成をダウンロードし、Terraform を使用してデプロイを削除します。

  1. デプロイの Terraform コード、ログ、その他のデータが保存されているリージョンを特定します。このリージョンは、ソリューションのデプロイ時に選択したリージョンとは異なる場合があります。

    1. Google Cloud コンソールで、[ソリューションのデプロイ] ページに移動します。

      [ソリューションのデプロイ] に移動

    2. 削除するデプロイが含まれているプロジェクトを選択します。

    3. デプロイメントのリストで、削除するデプロイメントの行を特定します。

    4. 行の内容をすべて表示する」をクリックします。

    5. [場所] 列で、次の例でハイライトされているように、2 番目の場所をメモします。

      デプロイメント コード、ログ、その他のアーティファクトの場所。

  2. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  3. プロジェクト ID、リージョン、削除するデプロイの名前の環境変数を作成します。

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    これらのコマンドで、次のように置き換えます。

    • REGION: この手順でメモした場所。
    • PROJECT_ID: ソリューションをデプロイしたプロジェクトの ID。
    • DEPLOYMENT_NAME: 削除するデプロイメントの名前。
  4. 削除するデプロイの最新リビジョンの ID を取得します。

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    出力は次のようになります。

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. デプロイの Terraform 構成の Cloud Storage のロケーションを取得します。

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    このコマンドの出力例を次に示します。

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Cloud Storage から Cloud Shell に Terraform 構成をダウンロードします。

    gsutil cp -r $CONTENT_PATH $HOME
    cd $HOME/content/examples/simple_example
    

    次の例に示すように、Operation completed メッセージが表示されるまで待ちます。

    Operation completed over 45 objects/268.5 KiB
    
  7. Terraform を初期化します。

    terraform init
    

    次のメッセージが表示されるまで待ちます。

    Terraform has been successfully initialized!
    
  8. デプロイされたリソースを削除します。

    terraform destroy
    

    破棄されるリソースのリストが表示されます。

    宣言されていない変数に関する警告が表示された場合は、警告を無視してください。

  9. アクションの実行を求められたら、「yes」と入力します。

    進行状況を示すメッセージが表示されます。すべてのリソースが削除されると、次のメッセージが表示されます。

    Destroy complete!
    
  10. デプロイメント アーティファクトを削除します。

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. 数秒待ってから、デプロイメント アーティファクトが削除されたことを確認します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    出力に null と表示されている場合は、数秒待ってから、もう一度コマンドを実行します。

    デプロイ アーティファクトが削除されると、次のようなメッセージが表示されます。

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

フィードバックを送信する

ジャンプ スタート ソリューションは情報提供のみを目的としており、正式にサポートされているプロダクトではありません。Google は、予告なくソリューションを変更または削除する場合があります。

エラーのトラブルシューティングを行うには、Cloud Build のログと Terraform の出力を確認します。

フィードバックを送信する場合は、次の操作を行います。

  • ドキュメント、コンソール内チュートリアル、またはソリューションについては、このページの [フィードバックを送信] ボタンを使用してください。
  • Terraform コードを変更していない場合は、GitHub リポジトリで問題を作成します。GitHub の問題はベスト エフォート ベースで審査されます。これは、一般的な使用に関する質問を目的としたものではありません。
  • ソリューションで使用されているプロダクトに関する問題については、Cloud カスタマーケアにお問い合わせください。

次のステップ

このソリューションで使用するプロダクトのアーキテクチャと運用のベスト プラクティスについては、次のドキュメントをご覧ください。