アクティビティ ログを使用して Compute Engine 管理アクティビティとシステム イベントを確認する場合は、このガイドを読み、監査ログで同様のログエントリを見つける方法を確認してください。
Compute Engine アクティビティ ログは非推奨になりました。ログ名でアクティビティ ログのエントリを識別できます。
logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Compute Engine の監査ログには、アクティビティ ログなどから入手できる情報が含まれています。ただし、監査ログには、アクティビティ ログと異なる情報も含まれます。したがって、クエリの調整が必要になります。
アクティビティ ログから監査ログに移行する方法
アクティビティ ログの代わりに監査ログを使用するには、クエリを調整します。方法は次のとおりです。
古いクエリを検索します。たとえば、ログ エクスプローラの保存済み検索に古いクエリを保存していたり、API または SDK を使用してスクリプトを作成していたりしていることが考えられます。リソースをモニタリングする方法の詳細については、Logging のドキュメントをご覧ください。
アクティビティ ログのフィールドを適切な監査ログのフィールドに置き換えます。各フィールドの対応関係については、表をご覧ください。
たとえば、以前のアクティビティ ログのクエリで
jsonPayload.resource.name
というフィールドを検索した場合、新しい監査ログのクエリでは、代わりにprotoPayload.resourceName
を検索する必要があります。新しい監査ログクエリを保存して使用します。たとえば、Cloud Logging で保存済み検索を作成するか、スクリプトを更新します。
例
変換されたクエリの例を次に示します。
特定のリソースに関連するアクティビティのクエリ実行
クエリの例 | |
---|---|
以前のアクティビティ ログ | gcloud logging read jsonPayload.resource.name="VM_NAME"
|
監査ログ | 以下のいずれかの方法を選択します。
オプション 1 では、「内包」( |
最新の管理アクティビティ ログのエントリのクエリ
クエリの例 | |
---|---|
以前のアクティビティ ログ | gcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
|
監査ログ | gcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" |
最新のインスタンス作成ログのエントリのクエリ
クエリの例 | |
---|---|
以前のアクティビティ ログ | gcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"' |
監査ログ | gcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"' |
すべてのインスタンス作成オペレーションの開始のクエリ
クエリの例 | |
---|---|
以前のアクティビティ ログ | gcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"' |
監査ログ | gcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"' |
任意のオペレーションの完了のクエリ
クエリの例 | |
---|---|
以前のアクティビティ ログ | gcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE" |
監査ログ | gcloud logging read operation.last="true" |
アクティビティ ログと監査ログの違い
このセクションでは、監査ログとアクティビティ ログの構造の違いについて説明します。以前のアクティビティ ログのクエリを監査ログのクエリに変換するときは、これらの違いにご注意ください。たとえば、クエリで、以前のアクティビティ ログのすべてのフィールド名を対応する監査ログのフィールド名に置き換えてください。
監査ロギングとアクティビティ ログはどちらもログエントリ オブジェクトを返しますが、両者には次のような違いがあります。
- フィールド名が異なります。詳細は、フィールド名対応表をご覧ください。
- 異なるフィールド値。例:
ログ名とペイロードの違いの例を以下に示します。
ログエントリの例 | |
---|---|
以前のアクティビティ ログ | { insertId: "1x3bbhjg2wwvz1x" jsonPayload: { event_subtype: "compute.instances.stop" ... resource: { id: "12345678900123456789" name: "my-instance-name" type: "instance" zone: "us-east1-b" } ... } labels: {…} logName: "projects/my-project/logs/compute.googleapis.com%2Factivity_log" receiveTimestamp: "2019-08-26T12:22:44.602794616Z" ... } |
監査ログ | { insertId: "-w6o499e22fwk" logName: "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity" protoPayload: { ... methodName: "beta.compute.instances.stop" ... resourceName: "projects/my-project/zones/us-east1-b/instances/my-instance-name" } receiveTimestamp: "2019-08-26T12:22:46.881198276Z" ... } |
アクティビティ ログから監査ログへのフィールドのマッピング
下の表を使用して、クエリのアクティビティ ログのフィールドを対応する監査ログのフィールドにマッピングします。
フィールド
下の表を使用して、更新されたクエリで、以前のアクティビティ ログのフィールドを監査ログのフィールドに置き換えます。
たとえば、以前のアクティビティ ログのクエリに jsonPayload.resource.type
に基づくフィルタが含まれていた場合、代わりに resource.type
に基づいて新しい監査ログのクエリをフィルタリングする必要があります。
以前のアクティビティ ログのフィールド | 監査ログのフィールド |
---|---|
insertId |
insertId |
jsonPayload.actor.user |
protoPayload.authenticationInfo.principalEmail |
jsonPayload.event_subtype |
protoPayload.methodName |
jsonPayload.event_timestamp_us |
timestamp |
jsonPayload.event_type="GCE_API_CALL" |
operation.first="true" |
jsonPayload.event_type="GCE_OPERATION_DONE" |
operation.last="true" |
jsonPayload.request |
protoPayload.request |
jsonPayload.operation |
operation |
jsonPayload.resource.id |
resource.labels.instance_id |
jsonPayload.resource.name |
protoPayload.resourceName |
jsonPayload.resource.type |
resource.type |
jsonPayload.resource.zone |
resource.labels.zone |
jsonPayload.trace_id |
operation.id |
jsonPayload.user_agent |
protoPayload.requestMetadata.callerSuppliedUserAgent |
labels.compute.googleapis.com/resource_id |
resource.labels.[RESOURCE_TYPE]_id |
labels.compute.googleapis.com/resource_name |
protoPayload.resourceName |
labels.compute.googleapis.com/resource_type |
resource.type |
labels.compute.googleapis.com/resource_zone |
次のいずれか:
|
logName |
logName |
receiveTimestamp |
receiveTimestamp |
resource.labels |
resource.labels |
severity |
severity |
timestamp |
timestamp |
フィールド値
次の表を使用して、以前のアクティビティ ログのフィールド値を監査ログのフィールド値にマッピングします。アクティビティ ログと比較すると、監査ログには複数のログ名の値と複数のペイロードの値があります。監査ログエントリは、完全修飾リソース名とバージョン付きのメソッド名も返します。
ログ名
監査ログエントリを見つけるには、cloudaudit.googleapis.com
が含まれる logName
を探します。
ログ名 | ログの内容 | |
---|---|---|
以前のアクティビティ ログ | projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log | 管理アクティビティとシステム イベント |
監査ログ | projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity | 管理アクティビティ |
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event | システム イベント | |
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access | データアクセス |
ペイロード
個々の監査ログエントリで、jsonPayload
ではなく protoPayload
を探します。
ペイロードの種類 | ペイロードの例 | |
---|---|---|
以前のアクティビティ ログ | jsonPayload | jsonPayload: { actor: {…} event_subtype: "compute.instances.start" event_timestamp_us: "1566404493487248" event_type: "GCE_API_CALL" ip_address: "" operation: {…} request: {…} resource: {…} trace_id: "operation-1566404491560-590a2f74b4705-a1ae0686-d896d772" user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" version: "1.2" } |
監査ログ | protoPayload | protoPayload: { @type: "type.googleapis.com/google.cloud.audit.AuditLog" authenticationInfo: {…} methodName: "v1.compute.instances.start" request: {…} requestMetadata: {…} resourceName: "projects/my-project/zones/us-central1-a/instances/alert" serviceName: "compute.googleapis.com" } |
これらのペイロードが互いにどのように関係しているか、以前のアクティビティ ログのフィールドを監査ログのフィールドにマッピングする方法については、ログエントリのフィールドのマッピングをご覧ください。
リソース名
監査ログでは、API リソース名(protoPayload.resourceName
フィールド内)は次のように完全修飾されます。
resourceName: "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
引き続き名前の一部を使用できますが、「等号」演算子の代わりに「内包」演算子(:
)を使用するようクエリを修正する必要があります。
監査ログクエリで次のいずれかのオプションを使用して、特定のリソースをフィルタリングします。
gcloud logging read protoPayload.resourceName:"VM_NAME"
gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
メソッド名
監査ログでは、API メソッド名(protoPayload.methodName
フィールド内)の先頭に、v1.compute.instances.delete
などのバージョンが接頭辞として付いています。
フィールド | 値 | クエリの例 | |
---|---|---|---|
以前のアクティビティ ログ | jsonPayload.event_subtype | RESOURCE.METHOD | jsonPayload.event_subtype=compute.instances.delete |
監査ログ | protoPayload.methodName | API_VERSION.RESOURCE.METHOD | protoPayload.methodName=v1.compute.instances.delete または protoPayload.methodName=beta.compute.instances.delete または protoPayload.methodName:compute.instances.delete |
監査ログクエリでバージョンが付いていないメソッド名を引き続き使用できますが、クエリを修正し、「等号」演算子(=
)ではなく「内包」演算子(:
)を使用する必要があります。たとえば protoPayload.methodName:compute.instances.delete
は、バージョンに関係なくすべてのインスタンス削除 API 呼び出しを返します。演算子の詳細については、比較をご覧ください。
次のステップ
- ロギングツールの使用方法について、クイックスタートを参照する。
- ログエントリの表示について学習する。
- 高度なロギング フィルタを使用してログを表示する方法を学習する。
- Compute Engine の Cloud Audit Logs について学習する。