Log Analytics でクエリの結果をグラフ化する

このドキュメントでは、Log Analytics のクエリ結果をグラフ化する方法について説明します。これにより、ログデータのパターンと傾向を識別できます。Log Analytics では、SQL クエリを使用して、ログを検索して集計し、有用な分析情報を生成できます。

クエリを実行すると、クエリ結果をテーブルで表示したり、グラフに変換したりできます。たとえば、ログが生成する重大度の種類を確認するには、過去 12 時間にわたって生成されたログの数を表示するグラフを作成し、ログを severity で分類します。次のスクリーンショットは、さまざまな重大度の種類に分割されたデータポイントを示しています。

重大度別の内訳を示すグラフの例。

準備

  • Log Analytics ページを読み込み、クエリを実行するために必要な権限を取得するには、Cloud Logging のログ閲覧者roles/logging.viewer)IAM ロールを付与するよう管理者に依頼します。ロールの付与の詳細については、アクセスの管理をご覧ください。

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

    [ログ分析] ページでログエントリを表示してクエリを実行するために必要な権限は、[ログ エクスプローラ] ページでログを表示するために必要な権限と同じです。ユーザー定義バケットに対するビューのクエリ実行、または _Default ログバケットの _AllLogs ビューのクエリ実行のために必要な追加のロールについて詳しくは、Cloud Logging のロールをご覧ください。

  • Google Cloud コンソールを使用してカスタム ダッシュボードを作成および管理するために必要な権限を取得するには、プロジェクトに対するモニタリング編集者roles/monitoring.editor)の IAM ロールを付与するように管理者へ依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

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

グラフ化するデータを選択する

グラフに表示するデータを構成するには、SQL を使用してクエリを作成します。[グラフ] タブを選択すると、Logging はクエリ結果に基づいてグラフを自動的に生成します。クエリが実行され、グラフが生成されたら、グラフの種類を変更し、異なるデータを表示する列を選択して、グラフの構成をカスタマイズできます。

クエリ結果をグラフとして表示するには、次のようにします。

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

  2. [クエリ] ペインでクエリを入力し、[実行] をクリックします。

  3. クエリが完了したら、[結果] タブでクエリ結果を表示する方法を選択します。

    • テーブル: クエリ結果のテーブルのみを表示します。

    • グラフ: クエリ結果のグラフのみを表示します。

    • 両方: 表とグラフの両方を並べて表示します。

  4. [グラフ] タブまたは [両方] タブを選択した場合は、グラフの種類を変更し、グラフ化する行と列をカスタマイズすることで、グラフの構成をカスタマイズできます。グラフ構成の詳細については、グラフ構成をカスタマイズするをご覧ください。

グラフ構成をカスタマイズする

グラフの構成をカスタマイズするには、グラフの種類を変更し、グラフにディメンションとメジャーを選択し、内訳を適用します。ディメンションは、行をグループ化または分類するために使用される、X 軸の値です。メジャーまたは Y 軸の値は、Y 軸に対してプロットされるデータ系列です。

グラフの種類を変更する

ディメンションとメジャーとして選択した行と列の種類、およびデータを可視化する方法に応じて、次のグラフの種類から選択できます。

  • 棒グラフ(デフォルト)

    棒グラフでは、2 つの軸でデータをプロットします。グラフでカテゴリーまたは文字列をディメンションとして使用する場合、棒グラフのグラフ構成は、ディメンションとメジャーの軸を入れ替える水平方向または垂直方向に設定できます。

  • 折れ線グラフ

    折れ線グラフを使用すると、経時的なデータの変化を示すことができます。折れ線グラフを使用する場合、各時系列は選択したメジャーに対応する異なる線で示されます。

    X 軸が時間ベースの場合、各データポイントは時間間隔の始めに配置されます。各データポイントは線形補間によって接続されています。

  • 面グラフ 面グラフは折れ線グラフに基づいており、各線の下の領域は網掛けされます。面グラフでは、データ系列が積み上げられます。たとえば、2 つの同一の系列が折れ線グラフで重複する場合、網掛けされた領域は面グラフで積み重ねられます。

  • 円グラフ

    円グラフは、データセット全体に対するデータセット内のカテゴリの割合を示します。円はデータセット全体を表し、円の中の扇形はデータセット内のカテゴリを表します。扇形のサイズは、カテゴリが全体に占める割合を割合を示します。

ディメンションとメジャーを変更する

ディメンションとメジャーのフィールドを選択することで、グラフ化する行と列を選択できます。

  • ディメンション

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

    タイムスタンプの間隔はデフォルトで自動的に設定されますが、カスタムの間隔を選択することもできます。自動間隔では、同様のサイズのグループを維持するために、期間セレクタに基づいて値が変更されます。

    間隔を無効にすることもできます。これにより、クエリ内で独自の集計と期間を指定して、より複雑な分析を行うことができます。間隔を無効にすると、測定の集計関数が none に設定されます。ディメンション間隔が無効になっている場合は、数値メジャーのみが許可されます。

  • 測定

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

    ディメンションの [間隔を無効にする] チェックボックスをオンにすると、none 集計関数のオプションを使用できます。ディメンションが文字列値の場合、[間隔を無効にする] チェックボックスは表示されません。ただし、測定の集計関数を none に設定すると、間隔も無効になります。

内訳を追加する

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

内訳を選択した場合は、多数の文字列や長い文字列(textPayload など)を含むフィールドではなく、少数の短く、意味のあるラベル(region_name など)を含む列を選択します。

たとえば、ディメンション フィールドがタイプメジャー フィールドが行数をカウントする内訳フィールドが重要度に設定されている、次のグラフ構成をご覧ください。

内訳を追加するグラフ構成の例。

次のグラフは、内訳を追加したグラフの例です。

重大度別の内訳を含むグラフの例。

前のスクリーンショットでは、積み重ねられたデータ系列が表示され、ここではリソースタイプ k8s_container が異なる severity タイプに分割されています。これにより、特定のリソースによって重大度タイプごとに生成されたログの数を特定できます。

カスタム ダッシュボードにグラフを保存する

クエリからグラフが生成されたら、そのグラフをカスタム ダッシュボードに保存できます。カスタム ダッシュボードでは、さまざまな種類のウィジェットを使用して有用な情報を表示、整理できます。たとえば、Cloud Storage バケットの使用状況の詳細を示すダッシュボードを作成できます。

Cloud Storage バケットの使用状況を示すダッシュボードの例。

グラフをダッシュボードに保存する手順は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

  2. グラフを生成するクエリを実行して、 [グラフ] タブで [グラフを保存] をクリックします。

  3. [Save to dashboard] ダイアログで、グラフのタイトルを入力し、グラフを保存するダッシュボードを選択します。

  4. 省略可: カスタム ダッシュボードを表示するには、トーストで [ダッシュボードを表示] をクリックします。

Log Analytics SQL クエリで生成されたグラフを含むカスタム ダッシュボードのリストを表示するには、[Save Chart] ボタンに移動し、 [Menu] をクリックします。

カスタム ダッシュボードに保存されたグラフを編集する

ダッシュボードに保存されているログ分析 SQL クエリによって生成されたグラフを編集するには、ウィジェットの構成を変更するをご覧ください。[ウィジェットを構成する] ダイアログでは、グラフの生成に使用されるクエリを編集できます。また、グラフの構成をカスタマイズしてさまざまなデータを可視化することもできます。

制限事項

  • Google Cloud プロジェクトが Assured Workloads を使用するフォルダ内にある場合、生成したグラフはカスタム ダッシュボードに表示されません。

  • ダッシュボード レベルのフィルタは、Log Analytics SQL クエリから生成されたグラフには適用されません。

サンプルクエリ

このセクションでは、クエリ結果をグラフ化するサンプル SQL クエリを示します。ログからより有用な分析情報を得るには、グラフ構成をカスタマイズします。サンプルクエリを使用するには、次のようにします。

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

  2. デフォルトのクエリを実行して、ログビューのテーブル名を特定します。

    [ログビュー] リストでログビューを見つけて、[クエリ] を選択します。[クエリ] ペインには、クエリ対象のテーブル名を含むデフォルトのクエリが入力されます。テーブル名の形式は project_ID.region.bucket_ID.view_ID です。

    デフォルトのクエリにアクセスする方法については、ログビューをクエリするをご覧ください。

  3. TABLE は、クエリを実行するビューに対応するテーブル名に置き換えてから、クエリをコピーします。

  4. クエリを [クエリ] ペインに貼り付けて [クエリを実行] をクリックします。

ログエントリをロケーションと重大度でグラフ化する

次のクエリでは、ロケーション キャストを文字列として、locationseverity を選択します。

SELECT
  CAST(JSON_VALUE(resource.labels.location) AS STRING) AS location,
  severity,
FROM
  `TABLE`

サンプルのグラフとグラフ構成は次のようになります。

ロケーションと重大度に対してログエントリをグラフ化するグラフの例。

前のスクリーンショットでは、グラフ構成が次のグラフ構成をとります。

  • グラフの種類: 棒グラフ、水平方向
  • ディメンション: location(上限 10)
  • メジャー: 行をカウントする
  • 内訳: severity(上限 5)

BigQuery データアクセス監査ログをグラフ化する

次のクエリでは、BigQuery data_access 監査ログをフィルタリングし、user_emailipauth_permissionjob_execution_project などの特定のフィールドを選択します。たとえば、各プリンシパルの BigQuery API の使用頻度の推移位を可視化するグラフを作成できます。

SELECT
  timestamp,
  proto_payload.audit_log.authentication_info.principal_email as user_email,
  proto_payload.audit_log.request_metadata.caller_ip as ip,
  auth.permission as auth_permission,
  auth.granted as auth_granted,
  JSON_VALUE(data_access.resource.labels.project_id) AS job_execution_project,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(1)] AS referenced_project,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(3)] AS referenced_dataset,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(5)] AS referenced_table
FROM `TABLE` as data_access,
  UNNEST(proto_payload.audit_log.authorization_info) AS auth
WHERE
  log_id="cloudaudit.googleapis.com/data_access"
  AND data_access.resource.type = 'bigquery_dataset'

サンプルのグラフとグラフ構成は次のようになります。

BigQuery データアクセス監査ログのグラフの例

前のスクリーンショットでは、グラフ構成が次のグラフ構成をとります。

  • グラフの種類: 棒グラフ、垂直方向
  • ディメンション: user_email(上限 5)
  • メジャー: 行をカウントする
  • 内訳: auth_permission(上限 5)

制限事項

  • 選択した列には、NULL 以外の値を持つ行が少なくとも 1 つ必要です。

  • クエリを保存してグラフ構成をカスタマイズする場合、カスタムグラフ構成は保存されません。

  • クエリにすでに集計が含まれている場合は、Log Analytics によって自動的に適用される追加の集計により、生成されるグラフが異なる場合があります。

  • グラフ化するには、JSON パスが文字列と数値にキャストされる必要があります。

次のステップ