Google Cloud Backup and DR 日志集成指南:事件日志与备份恢复作业日志的 Proto 结构解析
【免费下载链接】googleapisPublic interface definitions of Google APIs.项目地址: https://gitcode.com/GitHub_Trending/go/googleapis
Cloud Backup and DR(备份与灾难恢复)服务通过一组 proto 文件对外发布其日志数据的结构化格式,帮助运维与开发人员理解备份/恢复设备产生的事件、作业运行记录与合规报告。本文以 google/cloud/backupdr/logging/v1/README.md 为核心,结合同目录下三个日志定义文件与 Backup Plan 相关 proto,逐层拆解每类日志消息的字段语义、适用场景与底层关联,帮助读者掌握如何利用这些日志进行监控、排障与报表分析。
日志集成整体架构
根据 google/cloud/backupdr/logging/v1/README.md 的说明,该目录下的 proto 文件承担着"事件日志格式文档"的角色。事件日志(Event Logs)用于查看在 Backup and DR Service 中执行的操作,其数据来源与产生机制如下:
- 备份/恢复设备(Backup/Recovery Appliance)产生带有事件 ID(Event ID)和关联错误消息(Error Message)的事件;
- 在很多情况下,底层组件在经历错误或告警时,会额外提供错误代码(Error Code)及其自带的错误消息,这些信息会被一并写入日志;
- 因此,一条完整的事件日志通常由"设备事件"与"底层组件错误详情"两层信息构成。
日志定义集中在 google/cloud/backupdr/logging/v1 目录下三个 proto 文件中,按用途划分为三大类:
| Proto 文件 | 职责 | 覆盖的日志消息 |
|---|---|---|
| eventlog.proto | 设备产生的基础事件日志 | Event |
| bdr_log.proto | 基于 Backup Plan 保护体系的作业与资源日志 | BDRBackupRestoreJobLog、BDRProtectedResourceLog、BDRBackupVaultDetailsLog、BDRBackupPlanJobLog、BDRBackupPlanAssociationJobLog |
| reportlog.proto | GCBDR 上报体系中的作业报告、合规与资源利用日志 | BackupRecoveryJobReportLog、UnprotectedResourceReportLog、DailyScheduleComplianceReportLog、BackupStorageUtilizationReportLog、ProtectedResource、MountedImage、ConnectorVersionReportLog |
三个文件统一声明package google.cloud.backupdr.logging.v1;,即所有消息的完整限定名都以该命名空间开头;其中 bdr_log.proto 与 reportlog.proto 还显式指定了go_package = "cloud.google.com/go/backupdr/logging/apiv1/loggingpb;loggingpb",供 Go 客户端导入使用。
设备事件日志:Event
eventlog.proto 中仅定义一个消息Event,它对应 README 所描述的"备份/恢复设备产生的事件",用于记录事件发生时刻、来源组件、关联应用与作业等信息:
| 字段 | 类型 | 说明 |
|---|---|---|
event_time | string | 事件被上报的时间 |
srcid | int64 | 事件在备份设备中发生的唯一 ID |
error_message | string | 与该事件关联的详细错误描述 |
event_id | int32 | 与错误关联的唯一事件 ID |
component | string | 事件来源组件 |
appliance_name | int64 | 事件发生的设备唯一 ID |
app_name | string | 与事件关联的应用名称 |
app_type | string | 与事件关联的应用类型 |
job_name | string | 与事件关联的作业名称 |
从字段设计可以看出Event覆盖了排障所需的完整上下文链:通过appliance_name定位设备,通过component定位组件,通过event_id/srcid精确对应设备侧错误码,再辅以app_name、job_name还原出错时的业务现场。
基于 Backup Plan 的作业与资源日志:bdr_log.proto
bdr_log.proto 面向使用 Backup Plan 保护的资源,定义了五类日志消息,覆盖"作业执行—资源保护状态—备份库容量—计划变更—计划关联变更"五条观测链路。
备份/恢复作业日志:BDRBackupRestoreJobLog
该消息记录基于 Backup Plan 保护的资源的备份与恢复作业(Backup and Restore Job),是排障与审计的核心消息,字段如下:
| 字段 | 类型 | 说明 |
|---|---|---|
job_id | optional string | 被记录作业的标识符 |
job_category | optional string | 作业类别 |
job_status | optional string | 作业状态 |
source_resource_name | optional string | 被保护资源的完整资源名 |
source_resource_id | optional string | 源资源 ID |
restore_resource_name | optional string | 恢复目标资源的完整资源名,仅在恢复作业中填充 |
backup_name | optional string | 备份作业中创建的备份、恢复作业中使用的备份的完整资源名 |
resource_type | optional string | 被保护资源的类型 |
start_time | optional google.protobuf.Timestamp | 作业开始时间 |
end_time | optional google.protobuf.Timestamp | 作业结束时间 |
backup_plan_name | optional string | 作业所属 Backup Plan 的完整资源名,仅计划备份与临时备份(Adhoc Backup)填充 |
backup_rule | optional string | 备份规则名称,仅计划备份与临时备份填充 |
backup_retention_days | optional int32 | 备份保留天数 |
backup_vault_name | optional string | 备份库(Backup Vault)完整资源名 |
incremental_backup_size_gib | optional double | 增量备份数据拷贝量(GiB) |
error_code | optional int32 | 错误代码,仅在错误场景填充 |
error_type | optional string | 错误类型名称,如PERMISSION_DENIED,仅在错误场景填充 |
error_message | optional string | 用户可读的错误消息,仅在错误场景填充 |
backup_consistency_time | optional google.protobuf.Timestamp | 备份一致性时间 |
source_resource_location | optional string | 源资源位置 |
restore_resource_location | optional string | 恢复资源位置 |
recovery_point_time | google.protobuf.Timestamp | 恢复点时间(必填) |
data_source_name | string | 规范数据源名称(Canonical Data Source Name,必填) |
值得注意的两点:一是recovery_point_time与data_source_name为必填字段(非optional),是关联恢复点与数据源的锚点;二是错误类字段(error_code、error_type、error_message)与 README 描述的"错误代码+错误消息"机制一一对应,其中error_type给出的PERMISSION_DENIED等值可直接映射到 Google API 的标准错误模型。
被保护资源日志:BDRProtectedResourceLog
该消息记录被保护资源的当前保护状态,可用于构建"资源—Backup Plan—Backup Vault"的当前快照:
| 字段 | 类型 | 说明 |
|---|---|---|
source_resource_name | optional string | 源资源完整规范名 |
source_resource_id | optional string | 源资源 ID(GCE 场景为实例 ID) |
resource_type | optional string | 资源类型,如Compute Engine |
source_resource_data_size_gib | optional double | 被保护源资源大小(GiB),四舍五入保留 2 位小数 |
current_backup_plan_name | optional string | 当前关联源资源的 Backup Plan 完整规范名 |
current_backup_rule_details | repeated BackupRuleDetail | 当前关联 Backup Plan 的备份规则详情(可重复) |
last_protected_on | optional google.protobuf.Timestamp | 资源最后一次受保护的时间戳 |
current_backup_vault_name | optional string | 当前关联源资源的 Backup Vault 完整资源名 |
source_resource_location | optional string | 源资源位置 |
其中current_backup_rule_details引用内嵌消息BackupRuleDetail,将计划中的规则展开为可读描述:
| 字段 | 类型 | 说明 |
|---|---|---|
rule_name | optional string | 备份规则名称 |
retention_days | optional int32 | 备份保留天数 |
recurrence | optional string | 重复类型,如Weekly、Monthly、Daily |
recurrence_schedule | optional string | 重复调度描述,如"每月 1 日和 25 日" |
backup_window | optional string | 备份窗口,如00:00 to 06:00 |
backup_window_timezone | optional string | 备份窗口时区(IANA 格式),如America/Los_Angeles |
BackupRuleDetail中的recurrence、backup_window等语义可在服务端 proto google/cloud/backupdr/v1/backupplan.proto 中找到对应定义:StandardSchedule.RecurrenceType枚举了HOURLY、DAILY、WEEKLY、MONTHLY、YEARLY五种周期(见 backupplan.proto#L186-L206),而BackupWindow通过start_hour_of_day(0-23)与end_hour_of_day(1-24)界定每日窗口,并约定0 <= start_hour_of_day < end_hour_of_day <= 24、结束时刻不包含在窗口内(见 backupplan.proto#L273-L288)。日志中的recurrence/backup_window字符串即是对上述结构化配置的人读化摘要。
备份库详情日志:BDRBackupVaultDetailsLog
该消息从 Backup Vault 维度汇总备份库中数据的可恢复性、容量与保护约束:
| 字段 | 类型 | 说明 |
|---|---|---|
backup_vault_name | optional string | Backup Vault 的相对资源名 |
source_resource_name | optional string | 源资源相对名 |
resource_type | optional string | 资源类型,如Compute Engine |
current_backup_plan_name | optional string | 当前用于保护资源的 Backup Plan 名称 |
first_available_restore_point | optional google.protobuf.Timestamp | 首个(最旧)备份的时间戳 |
last_available_restore_point | optional google.protobuf.Timestamp | 最近一次备份的时间戳 |
stored_bytes_gib | optional double | 备份占用的存储空间(GiB) |
minimum_enforced_retention_days | optional int32 | 备份库中备份免于删除的最短保护时限(天) |
source_resource_location | optional string | 源资源位置 |
first_available_restore_point与last_available_restore_point组成可恢复时间区间,minimum_enforced_retention_days对应备份库的强制保留策略——该字段与服务端 Backup Vault 定义(见 google/cloud/backupdr/v1/backupvault.proto)中的最小强制保留期语义一致,可用于审计数据是否处于删除保护期内。
备份计划变更作业日志:BDRBackupPlanJobLog
该消息记录 Backup Plan 的更新类作业(如UPDATE_BACKUP_PLAN),支持对计划修订的审计追踪:
| 字段 | 类型 | 说明 |
|---|---|---|
job_id | string | 被上报作业的标识符(必填) |
job_category | string | 作业类别,可取UPDATE_BACKUP_PLAN |
job_status | string | 作业状态,可取RUNNING、SUCCESSFUL、FAILED |
resource_type | string | 被保护资源类型 |
backup_plan_name | string | 作业对应的 Backup Plan 规范资源名 |
previous_backup_plan_revision_id | string | 旧修订的友好 ID,如v0、v1 |
previous_backup_plan_revision_name | string | 旧修订的完整资源名 |
new_backup_plan_revision_id | string | 新修订的友好 ID |
new_backup_plan_revision_name | string | 新修订的完整资源名 |
start_time | google.protobuf.Timestamp | 作业开始时间 |
end_time | google.protobuf.Timestamp | 作业结束时间 |
workloads_affected_count | int32 | 受作业影响的工作负载总数 |
previous_backup_rules | repeated BackupRuleDetail | 旧 Backup Plan 的规则列表 |
revised_backup_rules | repeated BackupRuleDetail | 修订后 Backup Plan 的规则列表 |
error_code | int32 | 错误代码,仅在错误场景填充 |
error_type | string | 错误类型名称,如PERMISSION_DENIED |
error_message | string | 用户可读错误消息 |
修订机制与服务端 proto 中 Backup Plan 的版本化设计呼应:Backup Plan 消息中定义了revision_id、revision_name、revision_etag等修订字段(见 backupplan.proto),日志通过previous_*/new_*成对字段完整记录"从哪个修订改到哪个修订",配合前后规则列表即可精确还原一次计划变更的内容。
备份计划关联变更日志:BDRBackupPlanAssociationJobLog
该消息记录 Backup Plan 与资源之间关联(Backup Plan Association,BPA)的创建与更新作业:
| 字段 | 类型 | 说明 |
|---|---|---|
job_id | optional string | 作业标识符 |
job_category | optional string | 作业类别,可取UPDATE |
job_status | optional string | 作业状态,可取RUNNING、QUEUED、SUCCESSFUL、FAILED、SKIPPED |
source_resource_name | optional string | 被保护资源完整资源名 |
source_resource_id | optional string | 被保护资源 ID |
source_resource_location | optional string | 被保护资源位置 |
resource_type | optional string | 被保护资源类型 |
backup_plan_association_name | optional string | 作业对应的 BPA 完整资源名 |
previous_backup_plan_name | optional string | 旧 Backup Plan 完整资源名,仅在更新 BPA 时填充 |
previous_backup_plan_revision_id/previous_backup_plan_revision_name | optional string | 旧 Backup Plan 修订 ID / 完整资源名 |
new_backup_plan_name | optional string | 新 Backup Plan 完整资源名,更新与创建 BPA 时填充 |
new_backup_plan_revision_id/new_backup_plan_revision_name | optional string | 新 Backup Plan 修订 ID / 完整资源名 |
start_time/end_time | optional google.protobuf.Timestamp | 作业开始 / 结束时间 |
error_code/error_type/error_message | optional | 错误代码 / 类型 / 消息,仅在错误场景填充 |
注意job_status多出的QUEUED与SKIPPED状态,反映了关联变更作业会被排队执行、且可能在条件不满足时被跳过的实际行为,排查时应结合该状态字段判断作业"未成功"是失败、排队超时还是被主动跳过。
GCBDR 上报体系日志:reportlog.proto
reportlog.proto 定义了作为 GCBDR Reporting 发布的多类报告日志,覆盖作业执行报告、未保护资源、计划合规、存储利用、受保护资源清单、挂载镜像与连接器版本等主题。
备份/恢复作业报告:BackupRecoveryJobReportLog
该消息是作业级报告的核心载体,字段数量最多(40 个),按语义可归纳为五组:
- 作业身份与调度:
job_name、job_id、job_category(Backup 或 Recovery Job)、job_type、job_status、log_backup(日志备份是仅日志、仅 DB 还是两者)、backup_type(Log、Incremental 或 Full Copy); - 时间维度:
job_start_time、job_end_time、job_queued_time、job_duration_in_hours、recovery_point、backup_consistency(crash consistent 或 application consistent); - 资源与策略归属:
resource_name、resource_id、resource_type、backup_rule_policy_name、backup_rule_policy_id、backup_plan_policy_template; - 执行环境:
hostname、host_id、appliance_name、target_host_name、target_host_id、target_appliance_name、target_appliance_id、target_pool_name、target_pool_id; - 容量与性能指标:
resource_data_size_in_gib、data_copied_in_gib、onvault_pool_storage_consumed_in_gib、pre_compress_in_gib、compression_ratio、data_change_rate、snapshot_disk_size_in_gib、data_written_in_gib、data_sent_in_gib; - 失败归因:
error_code、error_message、job_initiation_failure_reason(作业未运行时给出未启动原因)。
其中compression_ratio定义为压缩后大小与压缩前大小的比值、data_change_rate为备份拷贝数据量占应用数据量的百分比,data_written_in_gib与data_sent_in_gib分别刻画远程写入量与网络发送量,可用于容量规划与网络带宽分析。字符串型时间字段(如job_start_time)与 bdr_log.proto 中的google.protobuf.Timestamp类型形成对比,使用者在做时间过滤与排序时需注意两种表示方式的差异。
未保护资源报告:UnprotectedResourceReportLog
该消息上报被发现但尚未纳入保护的资源,除必填的资源归属信息外,还提供发现溯源:
- 必填字段:
host_name、resource_name、resource_type、discovered_on(首次发现日期)、discovered_by(发现设备名称)、appliance_id、resource_id、host_id; - 可选字段:
instance_name(针对数据库实例成员的实例名)。
对运维团队而言,该日志可直接用于生成"保护覆盖率"报表,识别遗漏保护的高风险资源。
每日调度合规报告:DailyScheduleComplianceReportLog
该消息按天评估策略是否在备份窗口内按期执行,是 SLA 合规审计的关键数据源:
- 必填字段:
resource_name、resource_type、backup_rule_policy_name、backup_plan_policy_template、host_name、appliance_name、date(上报合规的日期)、backup_window_start_time、job_type、status(策略合规状态)、comment(状态原因描述)、resource_id、host_id、backup_plan_policy_template_id、backup_rule_policy_id、appliance_id。
结合backup_window_start_time与 backupplan.proto 中BackupWindow的定义可做交叉验证:若作业未在窗口内启动,日志会记录对应状态与comment说明原因。
备份存储利用报告:BackupStorageUtilizationReportLog
该消息按存储池维度上报容量使用情况,用于容量监控与扩容决策:
| 字段 | 类型 | 说明 |
|---|---|---|
appliance_name | optional string | 设备名称 |
storage_type | string | 存储资源类型(必填) |
pool_name | string | 存储池名称(必填) |
total_capacity_in_gib | double | 存储池总容量(GiB,必填) |
used_capacity_in_gib | double | 存储池已用容量(GiB,必填) |
utilization_percentage | double | 存储池利用率百分比(必填) |
appliance_id | string | 设备 ID(必填) |
利用utilization_percentage = used_capacity_in_gib / total_capacity_in_gib的关系可对上报数据的自洽性做校验。
受保护资源清单:ProtectedResource
该消息以扁平字段承载受保护资源的完整档案,覆盖保护策略、数据量与流式快照(streamsnap)场景下的跨设备信息:
- 身份与策略:
resource_name、resource_type、resource_id、backup_inclusion_or_exclusion(备份包含/排除)、backup_plan_policy_template_id、backup_plan_policy_template、sla_id、backup_plan_restrictions、policy_overrides; - 宿主与设备:
host_id、host_name、appliance_name、appliance_id; - 保护时间与数据量:
protected_on、protected_data_in_gib、onvault_in_gib、recovery_point; - streamsnap 相关(可选):
source_appliance、source_appliance_id、remote_appliance、remote_appliance_id。
挂载镜像日志:MountedImage
该消息记录恢复演练与数据挂载场景,一条记录描述一个被挂载的镜像,字段覆盖源资源、挂载目标、镜像属性、时间与容量:
- 源与镜像:
source_resource_name、source_resource_id、source_image_name、source_image_type、mounted_image_name、recovery_point_date、resource_type、restorable_object(可恢复对象)、read_mode(只读模式)、image_expiration_date(镜像过期日期); - 设备与集群:
appliance_name、appliance_id; - 挂载目标:
source_host_name、source_host_id、mounted_host_name、mounted_host_id、mounted_resource_name、mounted_resource_label、user_name; - 时间与容量:
last_mount_date、mounted_image_age_in_days、resource_virtual_size_in_gib、storage_consumed_in_gib、resource_size_in_gib。
连接器版本报告:ConnectorVersionReportLog
该消息上报备份代理(Connector)的安装与升级状态,用于版本合规管理:
| 字段 | 类型 | 说明 |
|---|---|---|
appliance_name/appliance_id | string | 设备名称 / ID(必填) |
host_name/host_id | string | 主机名称 / ID(必填) |
host_os_type | optional string | 主机操作系统类型 |
host_ip_address | string | 主机 IP 地址(必填) |
db_authentication | optional string | 数据库认证方式 |
installed_version | string | 已安装版本(必填) |
available_version | optional string | 可用版本 |
version_check | string | 版本检查结果(必填) |
disk_preference | string | 磁盘偏好(必填) |
transport | string | 传输方式(必填) |
通过对比installed_version与available_version即可快速筛选出需要升级的连接器主机。
日志 proto 的构建与多语言产出
日志定义以 Bazel 目标的形式组织在 google/cloud/backupdr/logging/v1/BUILD.bazel 中:proto_library("logging_proto")聚合三个 proto 源文件,并依赖@com_google_protobuf//:timestamp_proto(对应google.protobuf.Timestamp的引入);随后通过java_proto_library、go_grpc_library、py_gapic_library、php_proto_library、ruby_proto_library、csharp_proto_library、cc_proto_library等规则生成各语言的 proto 代码与客户端库,产物命名形如google-cloud-backupdr-logging-v1-java、google-cloud-backupdr-logging-v1-go、google-cloud-backupdr-logging-v1-py等。这意味着无论使用 Java、Go、Python、PHP、Ruby、C# 还是 C++,都可以从同一份 proto 定义获得类型安全的日志结构体,便于在各自的数据管道中解析与建模。
从构建配置还能看到:Go 库的 import path 为cloud.google.com/go/backupdr/logging/apiv1/loggingpb,与 proto 内go_package声明一致;Python 客户端通过py_gapic_library生成,传输方式配置为grpc+rest。
日志消费与排障实践建议
综合上述消息定义,在实际使用中可参考以下实践:
- 排障路径:按
Event.event_id/srcid定位设备侧原始事件,再以job_id关联BDRBackupRestoreJobLog或BackupRecoveryJobReportLog中的error_code、error_type、error_message,即可形成"设备事件 → 作业状态 → 底层错误"的完整证据链; - 审计变更:利用
BDRBackupPlanJobLog的previous_*/new_*修订对与规则列表,还原每次 Backup Plan 变更;利用BDRBackupPlanAssociationJobLog追踪资源与计划的关联变更; - 合规与容量:
DailyScheduleComplianceReportLog提供按日合规状态,BackupStorageUtilizationReportLog提供存储池利用率,UnprotectedResourceReportLog暴露保护盲区,三者组合即可构建覆盖"是否按期备份、容量是否充足、资源是否漏保护"的运维仪表盘; - 恢复能力评估:
BDRBackupVaultDetailsLog的first/last_available_restore_point与minimum_enforced_retention_days决定可恢复区间与数据删除保护,MountedImage则记录恢复演练的实际情况。
需要说明的是,本目录 proto 定义的仅是日志的数据格式契约,日志的实际产生、投递与查询依赖 Backup and DR Service 运行时及其日志导出通道;本文所有字段语义均直接取自 bdr_log.proto、eventlog.proto、reportlog.proto 中的注释与类型声明,并与 google/cloud/backupdr/v1/backupplan.proto 等服务端定义相互印证,可作为二次开发与日志解析的权威依据。
【免费下载链接】googleapisPublic interface definitions of Google APIs.项目地址: https://gitcode.com/GitHub_Trending/go/googleapis
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考