基于 BigQuery + Log Router 统一 Cloud Logging Schema

作者:MeshCloud脉时云公有云架构师 许多杰

引言

GCP Cloud Logging中生成的日志会因 response code、cache status 等字段状态不同,每条日志的 schema 可能有所不同。

一、整体架构

基于 BigQuery + Log Router 统一 Cloud Logging 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

基于 BigQuery + Log Router 统一 Cloud Logging Schema

创建 Logs Router 接收器

基于 BigQuery + Log Router 统一 Cloud Logging Schema

在destination中选择 BigQuery dataset,并选择目标数据集。

基于 BigQuery + Log Router 统一 Cloud Logging Schema

设置filter,过滤满足条件的日志到Router中,本案例为过滤指定LB的请求日志。

基于 BigQuery + Log Router 统一 Cloud Logging Schema

六、测试验证

测试请求指定的LB,观察CLoud Logging、BigQuery dataset中是否有日志数据,并观察dataset是否补充了缺失字段。

发起测试请求

基于 BigQuery + Log Router 统一 Cloud Logging Schema

通过Cloud Logging查看日志,复现字段不统一现象

例如:cacheFillBytes字段只有在请求命中cdn缓存时才会出现。

基于 BigQuery + Log Router 统一 Cloud Logging Schema

通过Bigquery查看日志数据

观察到不同日志之间缺失的字段已自动补全。

基于 BigQuery + Log Router 统一 Cloud Logging Schema

导出表数据至Cloud Storage

基于 BigQuery + Log Router 统一 Cloud Logging Schema
基于 BigQuery + Log Router 统一 Cloud Logging Schema

七、补充工作

其他常见filter过滤项

httpRequest.requestUrl=~”http(s)?://.*\.com.*”

匹配以 .com 结尾域名请求的日志;

Logging query language 相关介绍可以参考:https://cloud.google.com/logging/docs/view/logging-query-language

八、参考资料

https://cloud.google.com/logging/docs
https://cloud.google.com/bigquery/docs
https://cloud.google.com/storage/docs

发表评论

您的电子邮箱地址不会被公开。