無効なリンクのチェッカーを作成する

このドキュメントでは、合成モニターを作成して、URI に含まれるリンクの定期的なテストを構成する方法について説明します。元の URI、テストされるリンクの数、再試行回数など、テスト用のオプションを指定して、事前構成済みの Cloud Run functions の関数をデプロイします。トラブルシューティングとデバッグをサポートするため、合成モニターはスクリーンショットなど、各テストに関する詳細情報を保存します。スクリーンショットを使用すると、アプリケーションの顧客に表示される正確なレスポンスを確認できます。

合成モニターの詳細については、合成モニターについてをご覧ください。

この機能は Google Cloud プロジェクトでのみサポートされています。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。

無効なリンク チェッカーについて

無効なリンク チェッカーは、リンクを順番にテストし、全体的な合成タイムアウトがあります。

デフォルトでは、無効なリンク チェッカーは次の処理を行います。

  • 元の URI で href 属性を持つ HTML アンカー要素を検索します。
  • 元の URI で検出された最初の 10 個のリンクをテストします。
  • リンクごとにチェッカーがリクエストを発行して、レスポンスを最大で 30 秒間待機します。レスポンスを受信すると、チェッカーは HTTP レスポンス ステータスが 200 であることを確認します。これは、レスポンスが成功したことを示します。チェッカーは再試行を行いません。

元の URI を指定します。無効なリンク チェッカーが検索する HTML 要素、テストする要素の最大数、テストごとのタイムアウト、再試行の実行有無を構成できます。セレクタが表示されるまで待機するように無効なリンク チェッカーを構成することもできます。

無効なリンク チェッカーは broken-links-ok テンプレートを使用します。無効なリンク チェッカーの構成は、index.js ファイルの options オブジェクトで指定します。Google Cloud コンソールを使用してチェッカーを作成すると、各構成オプションの入力を求められ、Cloud Run functions の関数が自動的に更新されます。ただし、Cloud Monitoring API または Terraform を使用する場合は、このオブジェクトに値を入力する必要があります。

無効なリンク チェッカーを作成した後、構成を変更するには、options オブジェクトを更新して Cloud Run functions の関数を再デプロイします。

始める前に

リンク チェッカーを保存する Google Cloud プロジェクトで、次の手順を完了します。

  1. Google Cloud コンソールを使用して合成モニターを表示して変更するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

  2. Enable the Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API APIs.

    Enable the APIs

  3. Google Cloud プロジェクトにデフォルトの Compute Engine サービス アカウントが含まれていることを確認します。このサービス アカウントは、Compute Engine API を有効にしたときに作成され、名前は 12345-compute@developer.gserviceaccount.com のようになります。

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

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

    このページを検索バーで検索する場合は、小見出しが「IAM と管理」の結果を選択します。

    デフォルトの Compute Engine サービス アカウントが存在しない場合は、[サービス アカウントを作成] をクリックしてダイアログを完了します。

  4. デフォルトの Compute Engine サービス アカウントまたは作成したサービス アカウントに、編集者(roles/editor)ロールが付与されていることを確認します。

    サービス アカウントに付与されているロールを確認する方法は次のとおりです。

    1. Google Cloud コンソールで [IAM] ページに移動します。

      [IAM] に移動

      このページを検索バーで検索する場合は、小見出しが「IAM と管理」の結果を選択します。

    2. [Google 提供のロール付与を含む] を選択します。
    3. 合成モニターで使用されるサービス アカウントがリストにない場合、または Cloud Trace エージェント(roles/cloudtrace.agent)ロールの権限を含むロールが付与されていない場合は、このロールをサービス アカウントに付与します。
  5. 通知の受信に使用する通知チャンネルを構成します。複数の種類の通知チャンネルを作成することをおすすめします。詳細については、通知チャンネルの作成と管理API による通知チャンネルの作成と管理をご覧ください。
  6. Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    Terraform

    ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

    1. Install the Google Cloud CLI.

    2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

    無効なリンク チェッカーを作成する

    コンソール

    Google Cloud コンソールを使用して合成モニターを作成すると、新しい Cloud Run functions の関数(第 2 世代)がデプロイされ、その Cloud Run functions の関数のモニターが作成されます。既存の Cloud Run functions の関数をモニタリングする合成モニターは作成できません。

    1. 必要な API が有効になっていること、プロジェクトにデフォルトの Compute Engine サービス アカウントが含まれていること、このアカウントに編集者(roles/editor)ロールが付与されていることを確認します。詳細については、始める前にをご覧ください。
    2. Google Cloud コンソールで、[ 合成モニタリング] ページに移動します。

      [合成モニタリング] に移動

      このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。

    3. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
    4. [合成モニターを作成] を選択します。
    5. テンプレートでは、[Broken link checker] を選択します。
    6. 合成モニターの名前を入力します。
    7. 省略可: [レスポンスのタイムアウト] と [確認頻度] の値を更新し、ユーザー定義のラベルを追加します。

    8. テストする URI と要素を構成します。

      1. [オリジン URI] をクリックし、テストする URI を入力します。入力する値は、HTTP または HTTPS エンドポイントでなければなりません。たとえば、「https://mywebsite.example.com」と入力します。

      2. 省略可: [フォローするリンクの数] で、テストするリンクの最大数を更新します。このフィールドのデフォルト値は 10 です。

      3. 省略可: [HTML 要素セレクタ] フィールドに、一致させる HTML 要素をカンマ区切りのリストとして入力します。入力する値は文字列に変換され、Document: querySelectorAll() メソッドに渡されます。

        デフォルトでは、このフィールドはアンカーと一致する a に設定します。アンカーと画像の両方を一致させる場合は、a, img などの値を入力できます。

      4. 省略可: [フォローする HTML 属性] フィールドに、照合する HTML 属性を入力します。入力したカンマ区切りの値は、個別に getAttribute() メソッドに渡されます。

        デフォルトでは、このフィールドは href に設定され、リンクの URI が指定されます。複数の属性を入力できます。たとえば、href, src を入力できます。この例では、コードは属性 href を検索してから、属性 src を検索します。

      5. 省略可: セレクタの待機、URI ごとのタイムアウト、再試行、想定されるステータス コードを構成します。

        1. [その他のオプションを表示] をクリックします。
        2. URI に特定のセレクタが表示されるまで待ってから、リンクがスクレイピングされるように無効なリンク チェッカーを構成するには、要素セレクタを待機するフィールドに CSS セレクタと入力します。入力する値は文字列に変換され、page.waitForSelector() メソッドに渡されます。

          タイムアウトする前にセレクタが表示されなかった場合、エラーはログに記録されます。

        3. テスト用にリンクが選択される順序を更新します。

        4. 再試行を構成します。

          デフォルトでは、各リンクに 1 つのリクエストが送信されます。最初のリンクのリクエストがなんらかの理由で失敗した場合(コマンドがタイムアウトした場合や、HTTP ステータス コードが 200 でない場合など)、リンクは失敗としてマークされます。

          このフィールドは、リンクを失敗としてマークする前に、無効なリンク チェッカーがリンクに HTTP リクエストを発行できる回数を指定します。

        5. 各 URI に適用されるタイムアウトを構成します。デフォルトでは、この値は 30 秒に設定されています。

        6. 特定の URI の予想されるステータス コードとタイムアウトを指定するには、[リンクごとのオプションを追加] をクリックして、ダイアログを完成させます。

    9. 省略可: 回答のスクリーンショットを収集して保存するかどうかを構成します。デフォルト設定を使用している場合、スクリーンショットは保存されません。スクリーンショットの収集を有効にすると、すべてのテストまたは失敗したテストのみのスクリーンショットを収集できます。Cloud Monitoring は、次の規則を使用して Cloud Storage バケットに名前を付けます。

      gcm-PROJECT_ID-synthetics-LOCATION
      

      上の式で:

      • PROJECT_ID: 実際の Google Cloud プロジェクト ID
      • LOCATION: Cloud Storage バケットのロケーション。

      既存の Cloud Storage バケットを使用することもできます。

    10. 構成が正しく、完全であることを確認し、Cloud Run functions の関数を作成します。

      1. [関数を作成] をクリックします。

        URI 構成フィールドの値は、[関数を作成] をクリックすると、index.js ファイルの Options オブジェクトにコピーされます。[関数を作成] をクリックした後で構成を変更するには、Options オブジェクトを編集します。

      2. 表示名を入力し、リージョンを選択します。名前はリージョン内で一意でなければなりません。

      3. [ランタイム、ビルド、接続、セキュリティの設定] セクションで、次の操作を行います。

        • [接続] タブで、[すべてのトラフィックを許可する] が選択されていることを確認します。

        • デフォルト設定を確認し、必要に応じて更新します。

        • [ランタイム サービス アカウント] フィールドで、サービス アカウントを選択します。

      4. [関数を適用する] をクリックします。

    11. アラート ポリシーを構成します。

      1. 省略可: アラート ポリシー名と、通知が送信されるまでの障害継続期間を更新します。

      2. 通知チャンネルを追加します。

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

      定義した Cloud Run functions の関数が第 2 世代としてビルドされ、デプロイされ、合成モニターが作成されます。

    Terraform

    Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。詳細については、Terraform プロバイダのリファレンス ドキュメントをご覧ください。

    Terraform を使用して無効なリンク チェッカー チェッカーを作成するプロセスは、他の合成モニターを作成するプロセスと同じです。Terraform を使用して合成モニターを作成する方法については、合成モニターを作成するをご覧ください。Terraform タブを選択してください。

    無効なリンク チェッカーは broken-links-ok テンプレートを使用します。無効なリンク チェッカーの構成は、index.js ファイルの options オブジェクトで指定します。

    options.screenshot_options 構造が定義されている場合、無効なリンク チェッカーはスクリーンショットを収集し、Cloud Storage バケットに保存します。screenshot_options.storage_location フィールドが定義されていない場合、または値が空の文字列の場合、Monitoring は Cloud Storage バケットを作成し、スクリーンショットはそのバケットに保存されます。Monitoring では、次の命名規則を使用して Cloud Storage バケットに名前を付けます。

    gcm-PROJECT_ID-synthetics-LOCATION
    

    上の式で:

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID
    • LOCATION: Cloud Storage バケットのロケーション。

    REST

    Cloud Monitoring API を使用して無効なリンク チェッカー チェッカーを作成するプロセスは、他の合成モニターを作成するプロセスと同じです。Cloud Monitoring API を使用して合成モニターを作成する方法については、合成モニターを作成するをご覧ください。

    無効なリンク チェッカーは broken-links-ok テンプレートを使用します。無効なリンク チェッカーの構成は、index.js ファイルの options オブジェクトで指定します。

    options.screenshot_options 構造が定義されている場合、無効なリンク チェッカーはスクリーンショットを収集し、Cloud Storage バケットに保存します。screenshot_options.storage_location フィールドが定義されていない場合、または値が空の文字列の場合、Monitoring は Cloud Storage バケットを作成し、スクリーンショットはそのバケットに保存されます。Monitoring では、次の命名規則を使用して Cloud Storage バケットに名前を付けます。

    gcm-PROJECT_ID-synthetics-LOCATION
    

    上の式で:

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID
    • LOCATION: Cloud Storage バケットのロケーション。

    Explore の結果

    実行ごとに、無効なリンク チェッカーは次の処理を行います。

    • 各行に特定の URI のテストに関する情報を提供するテーブルを生成します。概要情報には、ターゲット URI、レイテンシ、ステータス、HTML 要素の識別子が含まれます。たとえば、HTML アンカー要素がテストされると、この列には a が表示されます。行がオリジン URI に対応する場合、HTML 要素識別子の値は - になります。

    • 指標、トレースデータ、ログデータを収集します。

    • 構成されている場合は、スクリーンショットを収集します。

    収集されたデータを確認する方法の詳細については、合成モニターの結果を調べるをご覧ください。

    トラブルシューティング

    このセクションでは、無効なリンク チェッカーのトラブルシューティングに役立つ情報を提供します。

    無効なリンク チェッカーの構成を編集できない

    Google Cloud コンソールを使用して無効なリンク チェッカーを作成し、テストする HTML 要素を変更するか、URI タイムアウト、再試行、セレクタの待機、リンクごとのオプションを変更します。ただし、無効なリンク チェッカーを編集しても、 Google Cloud コンソールには構成フィールドが表示されません。

    この問題を解決するには、次の操作を行います。

    1. Google Cloud コンソールで、[ 合成モニタリング] ページに移動します。

      [合成モニタリング] に移動

      このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。

    2. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
    3. 編集する合成モニターを見つけて、その他のオプション)をクリックし、[編集] を選択します。
    4. [関数を編集] をクリックします。
    5. index.js ファイルの options オブジェクトを編集し、[関数を適用] をクリックします。

      このオブジェクトのフィールドと構文については、broken-links-ok/index.js をご覧ください。

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

    Google Cloud コンソールでスクリーンショットの保存が失敗したと表示される

    無効なリンク チェッカーを作成し、スクリーンショットを保存するように構成しました。しかし、 Google Cloud コンソールに次のいずれかの警告メッセージと詳細な情報が表示されます。

    • InvalidStorageLocation
    • StorageValidationError
    • BucketCreationError
    • ScreenshotFileUploadError

    これらのエラーを解決するには、次の手順を試してください。

    • InvalidStorageLocation メッセージが表示された場合は、options.screenshot_options.storage_location という名前のフィールドで指定された Cloud Storage バケットが存在することを確認します。

    • Cloud Run functions の関数に関連するログを表示します。詳細については、ログの検索をご覧ください。

    • 対応する Cloud Run functions の関数で使用されているサービス アカウントに、Cloud Storage バケットの作成、アクセス、書き込みを可能にする Identity and Access Management ロールが付与されていることを確認します。

    次のステップ