从活动日志迁移到审核日志


如果您使用活动日志来查看 Compute Engine 管理员活动和系统事件,请阅读本指南,了解如何改用审核日志来查找类似的日志条目。

Compute Engine 活动日志已弃用。您可以根据日志名称来识别活动日志条目:

logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"

Compute Engine 审核日志不但包含活动日志所提供的信息,而且还会包含其他信息。但审核日志呈现这些信息的方式与活动日志有所不同。因此,您需要调整查询。

如何从活动日志迁移到审核日志

如需使用审核日志而非活动日志,请调整您的查询。具体操作步骤如下所示。

  1. 查找您的旧查询。例如,您可能已将这些查询保存在日志浏览器中已保存的搜索下,或者已使用 API 或 SDK 创建了脚本。如需详细了解如何监控资源,请参阅 Logging 文档。

  2. 将活动日志字段替换为适当的审核日志字段。如需了解各字段相互之间的对应关系,请参阅此表格

    例如,如果您的旧活动日志查询查找的是名为 jsonPayload.resource.name 的字段,则新的审核日志查询应该改为查找 protoPayload.resourceName

  3. 保存并使用新的审核日志查询。例如,在 Cloud Logging 中创建已保存的搜索或更新您的脚本。

示例

以下是转换后查询的一些示例:

查询与特定资源相关的活动

查询示例
旧式活动日志gcloud logging read jsonPayload.resource.name="VM_NAME"
审核日志

请使用以下任一方式

  1. gcloud logging read protoPayload.resourceName:"VM_NAME"
  2. gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

使用方式 1 时,“包含”运算符 (:) 匹配项目中名称包含 VM_NAME 的所有资源。使用方式 2 时,“等于”运算符 (=) 仅匹配具有该名称的特定完全限定资源。

查询最近的管理员活动日志条目

查询示例
旧式活动日志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"

活动日志与审核日志之间的差异

本部分介绍审核日志与活动日志在结构上有何不同。在将旧式活动日志查询转换为审核日志查询时,请牢记这些差异。例如,您需要在查询中将所有旧式活动日志字段名称替换为相应的审核日志字段名称。

审核日志记录和活动日志记录虽然都会返回日志条目对象,但存在以下差异:

  • 字段名称不同。如需了解详情,请参阅字段名称映射表。
  • 不同的字段值,包括:
    • 不同的日志名称:审核日志的日志名称包含 cloudaudit.googleapis.com
    • 不同的载荷:审核日志返回 protoPayload 字段,而不是 jsonPayload
    • 完全限定的资源名称:审核日志返回的资源名称包含资源路径,例如 projects/my-project/zones/us-east1-b/instances/my-instance-name
    • 带版本号的方法名称:审核日志返回的方法名称包含方法版本,例如 v1

以下示例显示了日志名称和载荷方面的差异:

日志条目示例
旧式活动日志
{
  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 以下各项中的一项:
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

字段值

根据以下表,将旧式活动日志字段值映射到审核日志字段值。与活动日志相比,审核日志具有多个日志名称值和不同的载荷值。 审核日志条目还会返回完全限定的资源名称和带版本号的方法名称

日志名称

如需查找审核日志条目,请查找包含 cloudaudit.googleapis.comlogName

日志名称日志内容
旧式活动日志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数据访问权限

载荷

在每个审核日志条目中,查找 protoPayload 而不是 jsonPayload

载荷类型载荷示例
旧式活动日志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_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
审核日志protoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete

protoPayload.methodName=beta.compute.instances.delete

protoPayload.methodName:compute.instances.delete

您仍然可以在审核日志查询中使用不带版本号的方法名称,但必须修正您的查询以使用“包含”运算符 (:) 而不是“等于”运算符 (=)。例如:无论版本如何,protoPayload.methodName:compute.instances.delete 都会返回所有实例删除 API 调用。如需详细了解运算符,请参阅比较

后续步骤