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

このドキュメントでは、合成モニターを作成して、URI に含まれるリンクの定期的なテストを構成する方法について説明します。送信元 URI、テスト対象のリンク数、再試行回数など、テストのオプションを指定してから、事前構成された Cloud Functions の関数をデプロイします。

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

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

無効なリンク チェッカーは、リンクを順次テストします。また、全体的な合成タイムアウトがあり、これは構成可能です。

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

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

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

不完全なリンク チェッカーは broken-links-ok テンプレートを使用します。無効なリンク チェッカーの構成は、index.js ファイルの options オブジェクトで指定します。Google Cloud コンソールを使用してチェッカーを作成すると、構成オプションごとにプロンプトが表示され、Cloud Function が更新されます。ただし、Cloud Monitoring API または Terraform を使用する場合は、このオブジェクトにデータを入力する必要があります。

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

準備

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

    ロールの付与の詳細については、アクセスの管理をご覧ください。

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

  2. Cloud Monitoring API、Artifact Registry API、Cloud Build API、Cloud Functions API、Cloud Logging API、Pub/Sub API、Cloud Run Admin API API を有効にします。

    API を有効にする

  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] に移動

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

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

コンソール

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

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

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

  3. [合成モニターを作成] を選択します。
  4. テンプレートに対して、[無効なリンクのチェッカー] を選択します。
  5. 合成モニターの名前を入力します。
  6. 省略可: [レスポンスのタイムアウト] と [チェック頻度] を更新し、ユーザー定義のラベルを追加します。

  7. テストする 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. [Show more options] をクリックします。
      2. URI に特定のセレクタが表示されるまで待ってから、リンクがスクレイピングされるように無効なリンク チェッカーを構成するには、要素セレクタを待機するフィールドに CSS セレクタと入力します。入力した値は文字列に変換され、page.waitForSelector() メソッドに渡されます。

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

      3. テスト用に選択したリンクの順序を更新します。

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

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

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

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

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

  8. 構成が正しいことを確認し、Cloud Functions の関数を作成します。

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

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

    2. 表示名を入力してリージョンを選択します。名前はリージョン内で一意である必要があります。

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

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

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

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

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

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

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

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

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

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

API

Cloud Monitoring API を使用して無効なリンク チェッカーを作成するプロセスは、他の合成モニターを作成するプロセスと同じです。Cloud Monitoring API を使用して合成モニターを作成する方法については、合成モニターの作成を参照して [Cloud Monitoring] タブを選択します。

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

Terraform

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

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

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

結果を見る

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

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

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

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

トラブルシューティング

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

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

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

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

  1. Google Cloud コンソールの [ナビゲーション] パネルで [Monitoring] を選択し、 [合成モニタリング] を選択します。

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

  2. 編集する合成モニターを見つけて、 [その他のオプション] をクリックし、[編集] を選択します。
  3. [関数を編集] をクリックします。
  4. index.js ファイルの options オブジェクトを編集し、[関数を適用] をクリックします。

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

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

次のステップ