カスタム ダッシュボードにログとエラーを表示する

このドキュメントでは、指標データと同じコンテキストでログデータとエラーデータを表示できるように、カスタム ダッシュボードに追加できるウィジェットについて説明します。ログパネル ウィジェットにログエントリが表示されます。Error Reporting パネル ウィジェットには、最新のエラーグループが表示されます。どちらのウィジェットも、トラブルシューティングに役立つ情報を提供します。 SQL クエリの結果を表示する ログ分析グラフ ウィジェットを使用すると、ログデータの傾向を特定できます。

ログ エクスプローラとログパネル ウィジェット

ログ エクスプローラは、ログを調査するための標準的な方法です。ダッシュボードにログパネル ウィジェットを追加しても、ログ エクスプローラの使用方法は変わりません。ログパネル ウィジェットはカスタム ダッシュボードに追加できるため、指標と同じコンテキストでログエントリを表示できます。

ログ エクスプローラとログパネル ウィジェットは同じクエリ言語をサポートしており、どちらも表示権限のあるログエントリのみを表示します。取得されたログエントリを保存するリソースに対する Identity and Access Management(IAM)ロールは、それらのログエントリを表示できるかどうかを判断するために使用されます。

ログ エクスプローラとログパネル ウィジェットはどちらも、現在の Google Cloud プロジェクトで発生したログエントリまたは現在のプロジェクトにルーティングされたログエントリをログバケットから取得するように事前構成されています。 取得するログエントリを構成できます。たとえば、ログビューからログエントリを取得して表示するように指定できます。

ログパネル ウィジェットには、重大度、タイムスタンプ、ログエントリ概要の列を含む、行ごとに 1 つのログエントリが表示されます。ログエントリの JSON 形式表現を表示するには、[ログの詳細を表示] ボタンをクリックします。各エントリ概要の構造は、ログタイプによって異なります。たとえば、次の例では 2 つのログエントリを示します。

ログパネル ウィジェットでの 2 つのログエントリの画像。

上図では、最初のログエントリにサービス リクエストに関する情報が表示されています。概要には、サービス、メールアドレス、エントリの JSON 構造の文字列形式のバージョンに関する情報が表示されます。2 番目のエントリには、リクエストの結果が表示され、発生したアクションの概要が 1 文だけで表示されます。

Cloud Logging の一般的な情報については、次のリソースをご覧ください。

始める前に

Google Cloud コンソールを使用してカスタム ダッシュボードにログパネル ウィジェットを追加するために必要な権限を取得し、プロジェクトまたはログビューでログエントリを表示するように構成するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • プロジェクトに対するモニタリング編集者roles/monitoring.editor)。
  • ログエントリを表示する各プロジェクトに対するロギング閲覧者roles/logging.viewer)。このロールによってすべてのログエントリに対するアクセス権が付与されるわけではありません。ロールの詳細については、IAM を使用した Cloud Logging アクセス制御をご覧ください。
  • アクセスするログビューのログバケットを保存する各プロジェクトに対するログ表示アクセス者roles/logging.viewAccessor)。ログ表示アクセス者のロールは、プロジェクトに保存されているすべてのログビューへのアクセス権を付与します。特定のログビューにアクセスする方法については、ログビューへのアクセスを制御するをご覧ください。

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

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

ダッシュボードでログエントリを表示する

このセクションでは、Google Cloud コンソールを使用してログパネル ウィジェットを追加して構成する方法について説明します。Cloud Monitoring API の使用方法については、LogsPanel ウィジェットを含むダッシュボードをご覧ください。

ログパネル ウィジェットは、Google Cloud プロジェクトで発生したログエントリと、Google Cloud プロジェクトにルーティングされたログエントリを取得するように事前構成されています。ただし、ログパネル ウィジェットがログバケットからどのログエントリを取得するかを構成できます。たとえば、なんらかのエラー条件を示すログエントリのみ、またはログビュー内のログエントリのみを表示するようにウィジェットを構成できます。

ダッシュボードには最大で 40 のウィジェットを配置できます。

コンソールを使用してダッシュボードにログパネル ウィジェットを追加するには、次の操作を行います。

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. ダッシュボードを選択するか、[ダッシュボードを作成] をクリックします。
  3. ツールバーで [ウィジェットを追加] をクリックします。
  4. [ウィジェットを追加] ダイアログで、 [ログ] を選択します。
  5. 省略可: タイトルを更新するには、[ウィジェットのタイトル] フィールドに新しいタイトルを入力します。
  6. 省略可: 取得するログエントリを変更するには、次のいずれかを行います。

    • 異なるプロジェクトまたは複数のプロジェクトからログエントリを取得するには、[プロジェクト] エントリで [現在のプロジェクト] を展開し、ダイアログを完成させます。このメニューには、現在の指標スコープ内のすべての Google Cloud プロジェクトが一覧表示されます。

      メニューのエントリに「このプロジェクトのログを表示するプロジェクト レベルの権限がありません」というテキストが含まれている場合、その Google Cloud プロジェクトのログエントリを表示するために必要な権限がありません。

    • ログバケットのログビューに含まれるログエントリを取得するには、次の操作を行います。

      1. [Scope by] エントリで、 [プロジェクト] を展開してから、[ストレージ] を選択します。
      2. [ストレージ ビュー] エントリで、 [現在のプロジェクト] を展開し、ダイアログを完成させます。 メニューには、Google Cloud プロジェクトのログバケットのログビューが一覧表示されます。他の Google Cloud プロジェクトのログバケットのログビューを選択するには、メニューで [プロジェクトをインポート] をクリックし、プロジェクトを選択してから 1 つまたは複数のログビューを選択します。 現在の指標スコープに含まれるプロジェクトのみをインポートできます。
  7. 省略可: ログパネル ウィジェットに表示するログを制限するには、[クエリエディタ] フィールドを使用します。クエリの自動実行を無効にしている場合は、[クエリを実行] をクリックします。クエリの概要については、クエリの例をご覧ください。

  8. 省略可: ログパネル ウィジェットにテンプレート変数を適用します。詳細については、カスタム ダッシュボードに一時フィルタを追加するウィジェットに永続フィルタを適用するをご覧ください。

  9. 変更をダッシュボードに適用するには、ツールバーで [適用] をクリックします。変更を破棄するには、[キャンセル] をクリックします。

  10. 変更したダッシュボードを保存するには、ツールバーで [保存] をクリックします。

    ログパネル ウィジェットには、クエリと一致する取得されたログエントリのテーブルが表示されます。ウィジェットのフィルタバーを使用して、ウィジェットに表示されるログエントリを一時的に変更することもできます。 詳細については、ログエントリをフィルタリングするをご覧ください。

クエリの例

[Query Editor] フィールドに入力するには、フィールドにテキストを入力するか、メニューから選択します。[Query Editor] フィールドでは、ログ エクスプローラと同じクエリ言語を使用します。トラブルシューティング情報については、構文の問題をご覧ください。

[重大度] メニューと [ログ名] メニューでは、複数のオプションを選択できます。複数の重大度レベルと一致するクエリ ステートメントの例を次に示します。

severity=(WARNING OR ERROR OR CRITICAL OR ALERT OR EMERGENCY)

[リソース] メニューを使用すると、リソースでフィルタできます。[監査対象リソース] などのリソースタイプを選択するか、ウィンドウ内を移動して特定のメソッドを選択できます。

たとえば、監査対象リソースのクエリを追加するには、次の操作を行います。

  1. [リソース] メニューを展開します。
  2. [監査対象リソース] を検索して選択します。
  3. [適用] をクリックします。

    この手順では、[クエリエディタ] フィールドに次の句を追加します。

    resource.type="audited_resource"
    

同様に、Cloud Functions 監査ログのクエリを追加するには、次の操作を行います。

  1. [リソース] メニューを展開します。
  2. [監査対象リソース] を検索して選択します。
  3. サービス メニューで [Cloud Functions] を選択します。
  4. [適用] をクリックします。

    この手順では、[クエリエディタ] フィールドに次の句を追加します。

    resource.type="audited_resource" resource.labels.service="cloudfunctions.googleapis.com"
    

ログエントリをフィルタリングする

次のフィールドまたはメニューの値を変更することで、ログパネル ウィジェットに表示されるログエントリを変更できます。

  • ダッシュボード タイムセレクタ: ログパネル ウィジェットは、このフィールドで指定されたインターバルで書き込まれたログエントリのみを取得します。

  • ログパネル ウィジェットの [フィルタ] フィールド: 指定したフィルタは、クエリの実行後に適用されます。このフィールドの値は、現在のセッションに対してのみ保持されます。

  • ログパネル ウィジェットの [重大度] メニュー: 重大度によるフィルタは、クエリの実行後に適用されます。このフィールドの値は、現在のセッションに対してのみ保持されます。

  • ログパネル ウィジェットでのクエリ: ログパネル ウィジェットには、クエリに一致するログエントリのみが表示されます。 クエリを指定しない場合は、選択した期間内のすべてのログが表示されます。クエリを指定すると、ログパネル ウィジェットに [クエリを表示] アイコンが表示されます。このアイコンにより、現在のクエリがツールチップとして表示されます。

    クエリを変更するには、ログパネル ウィジェットを編集します。

  • ログパネル ウィジェットの Google Cloud プロジェクト: この設定を変更するには、ログパネル ウィジェットを編集します。

  • ダッシュボード フィルタ: ダッシュボード フィルタが存在する場合、フィルタ設定はログパネル ウィジェットのクエリに適用されます。 たとえば、ダッシュボードのフィルタ cluster_name: mycluster を追加すると、resource.labels."cluster_name"="mycluster" を含むようにクエリが更新されます。ダッシュボード フィルタの詳細については、一時フィルタを追加する永続的なフィルタを追加するをご覧ください。

このセクションの残りの部分では、ログエントリをフィルタリングする方法についての追加情報を提供します。

例: ログエントリを日付でフィルタリングする

ログパネル ウィジェットに最新のログを表示するには、ダッシュボード ツールバーの時間フィールドを使用します。 たとえば、[1H] を選択します。カスタムの期間を指定しない場合、選択した時間枠より古い場合でも、ウィジェットには最新のログが表示されます。

インシデントを調査する際には、ログエントリを特定の期間内のエントリに限定することをおすすめします。ログエントリを一定期間内のログを表示するように構成するには、次のいずれかまたは両方を行います。

  • 期間セレクタを使用して期間を選択します。
  • 構成ペインの [クエリエディタ] フィールドに timestamp 句を入力し、[フィルタを適用] を選択します。

期間を指定しても、ログパネル ウィジェットは自動更新されません。

例: ログエントリを重大度でフィルタリングする

失敗状況のデバッグのモニタリング中は、エラー メッセージだけを表示し、他のログエントリは表示しないようにすることをおすすめします。特定の重大度レベルを満たすログエントリのみを表示するようにログパネル ウィジェットを構成するには、次のいずれかまたは両方を行います。

  • 一時的なフィルタを適用するには、ログパネル ウィジェットの [重大度] メニューの値を選択します。このメニューでは、最小の重大度レベルを指定します。たとえば、値が「Warning」の場合、重大度が「Error」のログエントリが取得されますが、重大度が「Notice」のログエントリは取得されません。デフォルトでは、このフィールドの値は Default に設定され、すべてのログエントリが含まれます。

    [重大度] メニューの設定は、ダッシュボードから移動すると破棄されます。

  • 永続フィルタを適用するには、構成ペインの [クエリエディタ] フィールドに severity 句を入力し、[フィルタを適用] を選択します。

ログエントリを文字列またはフレーズでフィルタリングする

特定の文字列やフレーズでログエントリをフィルタリングすると、関心のないログエントリは表示されなくなります。たとえば、特定のメールアドレスを含むログエントリを表示するには、そのアドレスでフィルタできます。

  • 一時フィルタを適用して特定の単語やフレーズを含むログエントリのみを表示するには、 [フィルタ] フィールドを使用します。contains-test では大文字と小文字が区別されません。

    複数のフィルタを追加すると、暗黙的な AND が隣接するフィルタの間に挿入されるため、すべてのフィルタに一致するログのみが表示されます。ただし、OR 演算子は明示的に挿入できます。

    • たとえば、フィルタ GetCompute を追加すると、両方の単語を含むログエントリが表示されます。

    • たとえば、フィルタ GetORCompute を追加すると、Get または Compute を含むログエントリが表示されます。

    [フィルタ] フィールドの値は永続的ではありません。

  • 永続フィルタを適用するには、[クエリエディタ] フィールドに保存されたクエリを変更して、[フィルタを適用] を選択します。クエリ構文の詳細については、Logging のクエリ言語をご覧ください。

    たとえば、MESSAGE フィールドに文字列「lamp」が含まれるログエントリだけを表示するには、クエリエディタjsonPayload.MESSAGE:"lamp" 句を追加します。

ログ エクスプローラのログ エントリを表示する

ログパネル ウィジェットにはログエントリの重要なフィールドが表示されますが、完全なログエントリは表示されません。ログエントリのすべてのフィールドを調べるには、次の操作を行います。

  1. ログパネル ウィジェットで、[ログ エクスプローラで表示] を選択します。
  2. ダイアログで、ログ エクスプローラを開く Google Cloud プロジェクトを選択します。

    新しいブラウザタブでログ エクスプローラが開き、ログパネル ウィジェットで選択したフィルタが自動的に適用されます。

  3. 表示するログエントリを選択します。

ログ分析クエリから生成されたグラフを表示する

このセクションでは、ログ分析クエリから生成されたグラフを構成して、カスタム ダッシュボードに保存する方法について説明します。ログ分析では、SQL クエリを使用してログの検索と集計を行い、有用な分析情報を生成できます。

[ログ分析] ページを使用してグラフを構成してダッシュボードに保存するだけでなく、次の操作を行ってログ分析グラフを [Monitoring] に直接保存できます。

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. ダッシュボードを選択するか、[ダッシュボードを作成] をクリックします。
  3. ツールバーで [ウィジェットを追加] をクリックします。
  4. [ウィジェットを追加] ダイアログで、[データ] セクションに移動して [ログ分析] を選択します。
  5. [ウィジェットを構成] パネルで SQL を使用してクエリを作成し、グラフに表示するデータを構成して [クエリを実行] をクリックします。
  6. 省略可: [結果] タブで、[ディスプレイ] パネルを使用してグラフ構成をカスタマイズします。

    [ディスプレイ] パネルでは、ディメンション、メジャー、内訳を変更してグラフの種類を変更し、グラフ化する行と列をカスタマイズできます。

    • ディメンション: ディメンションは、タイムスタンプ、数値、または文字列の列である必要があります。デフォルトでは、ディメンションはスキーマ内の最初のタイムスタンプ ベースの列に設定されます。クエリにタイムスタンプが含まれていない場合は、最初の文字列の列がディメンションとして選択されます。ディメンションは、[グラフ表示] パネルでカスタマイズすることもできます。ディメンションとしてタイムスタンプ列を選択すると、時間の経過とともにデータがどのように変化するかがグラフに示されます。

    • メジャー: [グラフ表示] パネルで複数のメジャーを選択できます。メジャーを選択する場合は、グループ化された値(countsumaveragepercentile-99、など)に実行する集計関数も選択する必要があります。たとえば、count-distinct は所与の列内の一意の値の数を返します。

    • 内訳: 1 つのデータ系列を別の列に基づいて複数のデータ系列に分割するには、内訳を追加します。

    グラフ構成のカスタマイズの詳細については、グラフ構成をカスタマイズするをご覧ください。

  7. 変更したダッシュボードを保存するには、ツールバーで [保存] をクリックします。

ログ分析のグラフは、ダッシュボードに保存した後で編集することもできます。詳細については、ウィジェットの構成を変更するをご覧ください。

ダッシュボードにエラーを表示する

このセクションでは、Google Cloud コンソールを使用して Error Reporting パネルを追加して構成する方法について説明します。Cloud Monitoring API を使用して Error Reporting パネルをダッシュボードに追加する方法については、ErrorReportingPanel ウィジェットを含むダッシュボードをご覧ください。

コンソールを使用して Error Reporting パネルをダッシュボードに追加する手順は次のとおりです。

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. ダッシュボードを選択するか、[ダッシュボードを作成] をクリックします。
  3. ツールバーで [ウィジェットを追加] をクリックします。
  4. [ウィジェットを追加] ダイアログで、[可視化] セクションに移動し、[Error Reporting] パネルを選択します。
  5. エラーグループが表示されているプロジェクトを選択し、 [プロジェクト] を展開してから、選択を行います。
  6. 省略可: タイトルを更新します。
  7. 省略可: エラーが表示されるリソースを制限するには、次の手順を行います。

    1. [すべてのリソース] を展開し、リソースを選択します。
    2. リソースを選択したら、[適用] を選択するか、追加のメニューを使用してフィルタ条件を絞り込むことができます。

      • App Engine リソースのエラーを表示するには、[GAE サービス] を選択して [適用] をクリックします。

      • 特定の App Engine サービスのエラーを表示するには、[GAE サービス] を選択し、サービスを選択して [適用] をクリックします。

  8. 変更をダッシュボードに適用するには、ツールバーで [適用] をクリックします。変更を破棄するには、[キャンセル] をクリックします。

    次の例は、Error Reporting パネルを示しています。

    Error Reporting パネルの構成ペインの例。

  9. 変更したダッシュボードを保存するには、ツールバーで [保存] をクリックします。

トラブルシューティング

次のステップ