如果您使用活动日志来查看 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 | 数据访问权限 |
载荷
在每个审核日志条目中,查找 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_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。