ログ分析でクエリの結果をグラフ化する

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

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

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

始める前に

  1. Log Analytics を使用してクエリの実行、ログの表示、グラフの作成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。

    • _Required および _Default のログバケットに対してクエリを実行するには:   ログ閲覧者roles/logging.viewer
    • カスタム ログバケットをクエリするには:   ログ表示アクセサーroles/logging.viewAccessor
    • (省略可)グラフをダッシュボードに保存するには: Monitoring 編集者roles/monitoring.editor

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

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

  2. クエリを実行するログビューで、[ログストレージ] ページに移動し、これらのログビューを格納するログバケットが、ログ分析を使用するようにアップグレードされていることを確認します。必要に応じて、ログバケットをアップグレードしてください。

    Google Cloud コンソールで、[ログストレージ] ページに移動します。

    [ログストレージ] に移動

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

  3. 省略可: BigQuery データセットを使用してログデータをクエリする場合は、リンクされた BigQuery データセットを作成します。

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

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

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

  1. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

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

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

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

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

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

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

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

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

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

グラフの種類を変更する

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

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

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

  • 折れ線グラフ

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

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

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

  • 円グラフ

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

  • ゲージとスコアカード

    ゲージとスコアカードには、色分けされたしきい値と対比しながら最新の測定値が表示されます。ゲージには最新の測定値のみが表示され、スコアカードには最近の測定値の履歴も表示されます。これらのウィジェットも色分けされています。最新の値が予想範囲にある場合、データは緑色で示されます。値が警告範囲内にある場合、データは黄色で表示されます。同様に、値が危険範囲内にある場合、赤色で表示されます。

    ゲージまたはスコアカードを使用してクエリ結果を表示する場合、内訳を指定することはできません。

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

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

  • ディメンション

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

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

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

  • 測定

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

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

内訳を追加する

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

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

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

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

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

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

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

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

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

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

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

  1. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

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

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

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

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

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

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

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

制限事項

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

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

サンプルクエリ

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

  1. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

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

  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 つ必要です。

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

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

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

次のステップ