アクティビティ ログの表示


Compute Engine のアクティビティ ログは非推奨になりました。代わりに、監査ログを使用してください。詳しくは、アクティビティ ログから監査ログへの移行をご覧ください。

Compute Engine アクティビティ ログは監査ログとは異なります。監査ログには、以前のアクティビティ ログなどと同じ情報が含まれています。アクティビティ ログの代わりに監査ログを使用することをおすすめします。アクティビティ ログをすでに使用している場合は、アクティビティ ログから監査ログへの移行をご覧ください。

Compute Engine のアクティビティ ログを使用して、API 呼び出しやシステム イベントなどのプロジェクトに影響するイベントを追跡できます。具体的には次の情報がログに記録されます。

  • Compute Engine API の呼び出し: GCE_API_CALL イベントは、リソースの状態を変更する API 呼び出しです。たとえば、ディスクの作成、インスタンス メタデータの更新、インスタンス グループの作成、マシンタイプの変更などの API 呼び出しがアクティビティ ログに記録されます。get リクエストや list リクエストなど、リソースを更新しない API 呼び出しは記録されません。
  • オペレーション ログ: リソースの状態を変更する API 呼び出しが完了し、Compute Engine からオペレーション完了イベントが返されると、GCE_OPERATION_DONE イベントがアクティビティ ログに記録されます。
  • システムログ: Compute Engine がシステム イベントを実行すると、GCE_SYSTEM_EVENT イベントがアクティビティ ログに記録されます。たとえば、透過的メンテナンスのイベントがシステム イベントとして記録されます。

たとえば API イベントのアクティビティ ログを見ると、API リクエストの開始時間と終了時間、リクエスト本文の詳細、API リクエストを発行した承認済みユーザー、リクエストのエンドポイントなどの詳細情報がわかります。アクティビティ ログをダウンロードして特定の API リクエストを検索したり、Compute Engine が開始したシステム イベントを確認したりできます。

アクティビティ ログには、プロジェクトに関する課金や使用状況の情報(仮想マシン インスタンスの稼働時間やそれに対する課金など)は記録されません。課金のログについては、課金データのエクスポート機能をご覧ください。使用状況ログについては、使用状況レポートの表示をご覧ください。

アクティビティ ログは Cloud Logging サービスの一部として提供されています。Logging の全般的な情報については、Cloud Logging のドキュメントをご覧ください。

始める前に

  • Cloud Logging について理解します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

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

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

このタスクに必要な権限

このタスクを行うには、次の権限が必要です。

  • プロジェクトの logging.logServiceIndexes.list
  • プロジェクトの logging.logServices.list

ログの表示

アクティビティ ログは、特に設定しなくてもすべての Compute Engine プロジェクトで記録されます。

プロジェクトのアクティビティ ログを表示するには、Google Cloud コンソールログ エクスプローラを使用します。

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

    [ロギング] ページに移動

  2. ログ エクスプローラで、最初のプルダウン リストからリソースタイプを選択してフィルタします。
  3. [すべてのログ] プルダウン リストから [compute.googleapis.com/activity_log] を選択すると、Compute Engine アクティビティ ログが表示されます。

ルーティング ログ

アクティビティ ログをエクスポートする方法については、Cloud Logging のドキュメントのシンクを構成して管理するをご覧ください。

ログファイルの特定

Cloud Storage にログをエクスポートすると、ログファイルは、ログエントリのオブジェクトのドキュメントで説明している構造内に保存されます。

Compute Engine のログファイルは次のディレクトリ構造で保存されます。

<bucket>/compute.googleapis.com/activity_log/<year>/<month>/<day>

次に、my-bucket という名前の Cloud Storage バケットに保存されているログファイル名の例を示します。

my-bucket/compute.googleapis.com/activity_log/2014/10/31/20:00:00_20:59:59_S0.json

BigQuery では、アクティビティ ログは一連のテーブルとして保存されます。ログタイプと日付ごとに 1 つのテーブルが作成され、次のファイル名で保存されます。

<dataset>.compute_googleapis_com_activity_log_YYYYMMDD

BigQuery でアクティビティ ログのクエリを実行する方法については、BigQuery のログエントリをご覧ください。

アクティビティ ログを読む

アクティビティ ログの構造については、LogEntry タイプのドキュメントに説明があります。

Compute Engine アクティビティ ログには次の要素が含まれます。

  • compute.googleapis.com/activity_log: log フィールドの値になります。
  • metadata: タイムスタンプなどの共通情報を示します。
  • structPayload: 各ログエントリに固有の情報を示します。

すべてのログエントリに共通するフィールドについては、LogEntry の説明をご覧ください。ここでは、Compute Engine に固有である、アクティビティ ログ エントリのペイロードの内容について説明します。

ペイロードの内容

ログエントリの内容は JSON オブジェクト形式で structPayload フィールドに格納されます。structPayload フィールドには次の情報が含まれます。

フィールド タイプ 説明
actor 文字列 オペレーションを実行するユーザーまたはサービス アカウントのメールアドレス。これは user_id と同じです。
error 文字列 このイベント中にエラーが発生した場合、エラーの詳細を提供します。エラーが発生しなかった場合、このフィールドは省略されます。通常、エラーが発生するとリクエストは失敗します。このフィールドを使用して失敗したリクエストをデバッグできます。
event_subtype 文字列 特定のサブタイプを API メソッドとして表します。

たとえば、新しいインスタンスを挿入するリクエストは compute.instances.insert と表され、Address リソースを削除するリクエストは compute.addresses.delete と表されます。

API メソッドの一覧については、API リファレンスをご覧ください。

event_timestamp_us タイムスタンプ 記録されたイベントのタイムスタンプを標準エポックからの経過時間(マイクロ秒単位)で示します。これは metadata.timestamp と同じです。
event_type 文字列 全般的なイベントタイプを表します。

次のいずれかの値です。

  • GCE_API_CALL: リソースを更新した REST API 呼び出しを示します。
  • GCE_OPERATION_DONE: API リクエストが完了した後、成功したかどうかにかかわらず、このイベントタイプが記録されます。
  • GCE_SYSTEM_EVENT: Compute Engine によって開始されたシステム イベント。
info 文字列 該当する場合に追加情報を提供するオプション フィールド。追加情報がない場合は省略されます。
operation 文字列 リソースを更新または変更する API リクエストを発行すると、対応するオペレーション オブジェクトが作成され、リクエストの完了が追跡されます。このプロパティはイベントのオペレーション オブジェクトを表しており、オペレーション ID やオペレーションのゾーン、リージョンなどの情報を提供します。

変更対象のリソースに応じて、オペレーションはゾーン オペレーションリージョン オペレーショングローバル オペレーションに分けられます。

request JSON オリジナルの API リクエスト本文が含まれます。

resource JSON このイベントによって変更される特定のリソースを記述します。たとえば、仮想マシン(VM)インスタンスはリソースと見なされ、VM のリソース プロパティの例は次のようになります。
"resource": {
  "type": "instance",
  "name": "example-instance",
  "id": "0",
  "zone": "us-central1-f"
}

リソースタイプの一覧とその詳細については、API リファレンスをご覧ください。

注: 操作が複数のリソースに影響する場合、同じ trace_id で複数のログエントリが作成されることがあります。

trace_id 文字列 単一の操作によって発生した関連するログをグループ化する、自動生成されたトレース ID。次に例を示します。
trace_id: "operation-1442436581415-51fe3700bd85a-7fd317e3-f1a3555e"
user_agent 文字列 このリクエストを実行したクライアントを表します。たとえば、Java の Cloud クライアント ライブラリを使用してリクエストを発行した場合、ユーザー エージェントは Google-API-Java-Client になります。
version 文字列 Compute Engine ログスキーマの現在のログ形式バージョンを示します。現在のバージョンは 1.2 です。

注: Compute Engine API のバージョニングとログ形式のバージョニングは互いに関連していません。

warning 文字列 このイベント中に警告が発生した場合、警告の詳細を提供します。警告は情報提供を目的としたもので、エラーとは異なり、リクエストに影響することはありません。

ログエントリの例

たとえば、VM を作成する API リクエストを示すログエントリの例は次のようになります。

{
  "log": "compute.googleapis.com/activity_log",
  "insertId": "2015-09-16|13:49:42.532185-07|10.106.9.208|335899593",
  "metadata": {
    "severity": "INFO",
    "projectId": "835469197146",
    "serviceName": "compute.googleapis.com",
    "zone": "us-central1-f",
    "labels":{
      "compute.googleapis.com/resource_id":"0",
      "compute.googleapis.com/resource_name":"example-instance",
      "compute.googleapis.com/resource_type":"instance",
      "compute.googleapis.com/resource_zone":"us-central1-f"
    },
    "timestamp": "2015-09-16T20:49:42.423637Z"
  },
  "structPayload": {
    "version": "1.2",
    "trace_id": "operation-1442436581415-51fe3700bd85a-7fd317e3-f1a3555e",
    "event_timestamp_us": "1442436582423637",
    "event_type": "GCE_API_CALL",
    "event_subtype": "compute.instances.insert",
    "resource": {
      "type": "instance",
      "name": "example-instance",
      "id": "0",
      "zone": "us-central1-f"
    },
    "actor": {
      "user": "user@example.com"
    },
    "ip_address": "",
    "user_agent": "apitools-client/1.0",
    "request": {
      "url": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances",
      "body": "{
        \"canIpForward\":false,
        \"description\":\"\",
        \"disks\":[{
          \"autoDelete\":true,
          \"boot\":true,
          \"deviceName\":\"example-instance\",
          \"initializeParams\":{
            \"diskSizeGb\":\"10\",
            \"diskType\":\"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/diskTypes/pd-standard\",
            \"sourceImage\":\"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20150818\"
          },
          \"mode\":\"READ_WRITE\",
          \"type\":\"PERSISTENT\"
        }],
        \"machineType\":\"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/machineTypes/n1-standard-1\",
        \"metadata\":{
          \"items\":[]
        },
        \"name\":\"example-instance\",
        \"networkInterfaces\":[{
            \"accessConfigs\":[{
              \"name\":\"External NAT\",
              \"type\":\"ONE_TO_ONE_NAT\"

            }],
            \"network\":\"https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default\"
          }],
        \"scheduling\":{
          \"automaticRestart\":true,
          \"onHostMaintenance\":\"MIGRATE\",
          \"preemptible\":false
        },
        \"serviceAccounts\":[{
          \"email\":\"default\",
          \"scopes\":[
            \"https://www.googleapis.com/auth/devstorage.read_only\",
            \"https://www.googleapis.com/auth/logging.write\"
          ]
        }],
        \"tags\":{
          \"items\":[]
        },
        \"zone\":\"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f\"
      }"
    },
    "operation": {
      "type": "operation",
      "name": "operation-1442436581415-51fe3700bd85a-7fd317e3-f1a3555e",
      "id": "291347737657178184",
      "zone": "us-central1-f"
    }
  }
}

非推奨のアクティビティ ログエントリ

次のアクティビティ ログエントリは 2020 年 6 月 1 日に無効になります。代替はありません。

モニタリング対象のリソースタイプ イベント サブタイプ
gce_backend_service BackendServiceConfigProgramming
gce_instance RE_ENCRYPT_SSL_CERTIFICATE_FLOW
gce_instance addFirewallRuleToSecurityPolicy
gce_instance attachCloudLink
gce_instance attachFirewallSecurityPolicy
gce_instance compute.instanceGroupManagers.updateHealth
gce_instance compute.instanceGroups.detachHealthCheck
gce_instance compute.instanceNetworkConfig.updateName
gce_instance compute.regionInstanceGroups.attachHealthCheck
gce_instance compute.regionInstanceGroups.detachHealthCheck
gce_instance createFirewallSecurityPolicy
gce_instance deleteFirewallSecurityPolicy
gce_instance detachFirewallSecurityPolicy
gce_instance patchFirewallRuleInSecurityPolicy
gce_instance removeCloudLink
gce_instance removeFirewallRuleFromSecurityPolicy
gce_instance updateFirewallSecurityPolicy
gce_instance updateVpnTunnel
gce_instance_group compute.instanceGroups.attachHealthCheck
gce_instance_group compute.instanceGroups.attachNetworkInterfaces
gce_instance_group compute.instanceGroups.detachHealthCheck
gce_instance_group compute.regionInstanceGroups.attachHealthCheck
gce_instance_group compute.regionInstanceGroups.detachHealthCheck
gce_instance_template compute.zoneInstanceTemplates.insert
gce_network compute.networks.switchLegacyToCustomMode
gce_project compute.projects.moveProjectNetworking
gce_reserved_address compute.addresses.insertDnsForwarding
gce_reserved_address compute.addresses.insertNatAddress
gce_ssl_certificate RE_ENCRYPT_SSL_CERTIFICATE_FLOW
gce_ssl_certificate SslCertificateAddManagedCertificateChallenge
gce_ssl_certificate SslCertificateProvisionManagedCertificate
gce_ssl_certificate SslCertificateRemoveManagedCertificateChallenge
gce_subnetwork compute.subnetworks.createOrUpdateVirtualSubnetwork
vpn_tunnel updateVpnTunnel