作者:MeshCloud脉时云公有云架构师 许多杰
引言
GCP Cloud Logging中生成的日志会因 response code、cache status 等字段状态不同,每条日志的 schema 可能有所不同。
一、整体架构
二、技术介绍
Logs data:指GCP采集各资源的log日志。
Logs Router:所有日志(包括审核日志、平台日志和用户写入的日志)都会通过日志路由器进行传递。日志路由器根据现有规则检查每个日志条目,以确定要提取(存储)到日志存储桶中的日志条目、要路由到目标位置的日志条目以及要排除(舍弃)的日志条目。
BigQuery:通过数据表的结构存储由 Log Router 转存的日志,并通过自身补全缺失字段的属性实现统一 schema。
Cloud Storage:将必须字段的Logging数据存储至对象存储,后续可通过生命周期设置等规则处理日志。
三、目标
实现 Cloud Logging 生成的日志统一 schema,补全日志中缺失的字段。
四、准备工作
确认账户拥有权限 Owner 或 Logging Admin,BigQuery Admin 权限
开通 Cloud Logging、BigQuery、Cloud Storage 服务
已有服务日志转存至 Cloud Logging中
五、实施步骤
创建 BigQuery dataset
创建 Logs Router 接收器
在destination中选择 BigQuery dataset,并选择目标数据集。
设置filter,过滤满足条件的日志到Router中,本案例为过滤指定LB的请求日志。
六、测试验证
测试请求指定的LB,观察CLoud Logging、BigQuery dataset中是否有日志数据,并观察dataset是否补充了缺失字段。
发起测试请求
通过Cloud Logging查看日志,复现字段不统一现象
例如:cacheFillBytes字段只有在请求命中cdn缓存时才会出现。
通过Bigquery查看日志数据
观察到不同日志之间缺失的字段已自动补全。
导出表数据至Cloud Storage
七、补充工作
其他常见filter过滤项
httpRequest.requestUrl=~”http(s)?://.*\.com.*”
匹配以 .com 结尾域名请求的日志;
Logging query language 相关介绍可以参考:https://cloud.google.com/logging/docs/view/logging-query-language
八、参考资料