三、将 GCS Usage Logs 导入到 BigQuery 进行结构化存储和查询
概述
Google Cloud Storage (GCS) 是 Google Cloud 的对象存储,适用于长期存储视频、图片、日志等非结构化内容文件。如果涉及到海量用户内容上传和下载,那么追踪对象访问记录,进行统计分析和错误排查,会是一个常见的需求。这时可以利用 GCS 的访问日志来满足需求。下面介绍开通和使用 GCS 访问日志的一些方法。
一、配置和使用 GCS 审计日志
Google Cloud 很多产品都提供审计日志,帮助用户查询“谁,在何地,做了什么”的问题。GCS 的审计日志包含 Admin Activity Logs 和 Data Access Logs。我们可以用 Data Access Logs 审计日志来查看不同用户对 GCS 上对象文件的访问操作。
为了节省用户费用,GCS 的审计日志默认是关闭的。可以在控制台 IAM 菜单的 Audit Logs 查看其状态,并将其打开。
如果 Google Cloud Stroage 的各个审计日志项都是”-”状态,说明没有打开。可以选中后在右侧配置面板打开各项日志,并保存配置。
审计日志打开后,其状态应该如下所示。
审计日志打开后,对象的访问日志会实时导入到 Google Cloud 日志服务。可以在日志服务的 Log Explorer 中进行查看。注意在查询表达式栏中输入’resource.type=”gcs_bucket”’。
在列出的对象访问日志中,可以查看到每次访问的详细信息。比如展开一个访问记录,可以看到访问的操作是创建或下载,访问的用户账号,访问的对象 URI,访问的结果等等。
需要注意的是,Storage Audit Log 审计日志开启后,可以看到授权实名用户访问的记录。但是看不到匿名用户的访问记录,和通过 Google Cloud CDN 的访问记录。
比如用下面两种方式访问对象,不会产生日志。
1. 直接用对象链接下载
2. 通过 CDN 下载
如果需要查看匿名用户的访问记录,那么需要使用 GCS 的 Usage Logs。
二、配置和使用 GCS Usage Logs
GCS 的 Usage Logs 不像审计日志一样自动导入到日志服务,而是会导出到对象存储。所以首先需要创建一个存放日志的对象存储桶。
给 Usage Logs 服务的服务账号提供写访问日志存储桶的权限。
打开目标桶的 Usage Logs,并将其日志输出桶设为刚建好的日志存储桶。同时也可以设置一个日志文件前缀,相当于目录。
确认目标桶的日志已经打开。
应该看到类似如下输出。
{"logBucket": "youzhi-lab-logs-bucket", "logObjectPrefix": "hk-publish-access-log/"}
日志打开之后,GCS 日志服务会每小时一次把目标桶的访问日志输出到日志存储桶,生成日志文件。可以等1-2小时后到日志存储桶查看。
但是手工下载和查看日志存储桶中的众多文件非常耗时,也不方便。我们建议将日志再转存到 Google Cloud 数据仓库 BigQuery,方便使用 SQL 进行查询,也可以接入其它数据分析工具和展示报表。
三、将 GCS Usage Logs 导入到 BigQuery 进行结构化存储和查询
首先创建一个 BigQuery 数据集,用来存放 GCS 日志。下面操作使用 BigQuery 的命令行工具。但也可以在控制台操作。
下面要用官方提供的 schema 文件创建一个数据表,并导入一个日志文件。可以到日志文件存储桶,拷贝一个 Usage Logs 日志文件的 URI。
下载 Schema 文件并导入一个日志文件。导入任务会根据 Schema 文件自动创建一个表。
导入完成后,可以到 BigQuery 控制台查看表中的数据。
上述操作成功后,删除导入的日志文件,并导入剩余的其它日志文件。
导入完成后会看到如下提示。
可以在 BigQuery 中用对象名搜索特定对象的访问记录列表。
以上是用命令行对存量日志做批量导入。对增量日志,也可以用定时导入任务来自动化导入。
首先删除之前已经导入过的日志。
然后在 BigQuery 的 Data Transfers 菜单创建一个导入任务。进行如下配置。注意选择的频率是每小时一次——这是自动任务可以执行的最高频率。另外,写入模式为 Append,追加写入。
定时导入任务配置完后,点击保存。等待几小时,可以看到完成的任务状态。
之后,可以在 BigQuery 里随时查看 GCS 的对象访问记录,也可以用程序执行查询,根据结果触发后续操作。
不过需要注意,通过 gsutil 工具,或者控制台做的上传、修改、下载等操作,由于属于审计日志范畴,不会在 Usage Log 里记录。这些日志需要通过第一节所介绍的审计日志查看方式来查询。
文章信息
相关推荐
