5

我正在尝试使用 BigQuery 进行日志分析。具体来说,我有一个 appengine 应用程序和一个 javascript 客户端,它们会将日志数据发送到 BigQuery。在 bigquery 中,我会将完整的日志文本存储在一列中,但也会将重要字段提取到其他列中。然后我希望能够对这些列进行临时查询。

两个问题:

1) BigQuery 在这个用例中是特别好还是特别坏?2) 如何设置循环日志?即我只想存储最后 N 个日志或最后 X GB 的日志数据。我看到不支持删除。

4

3 回答 3

5
  1. 如您所知,有一个通过 App Engine MapReduce 将 App Engine 日志数据移动到 BigQuery 的出色演示,称为 log2bq (http://code.google.com/p/log2bq/)

  2. 回复:“用例”- Stack Overflow 不是判断最佳或最差的好地方,但 Google 内部使用 BigQuery 来分析非常大的日志数据。

  3. 我看不到将完整日志文本存储在单个列中的优势。如果您决定必须设置循环“日志”,则可以通过创建单独的 BigQuery 表(可能每天一个)来提取每日日志转储,然后在表变旧时将其删除。有关 Table.delete 方法的更多信息,请参阅https://developers.google.com/bigquery/docs/reference/v2/tables/delete

于 2012-05-01T23:37:07.563 回答
1

在实现这一点之后——我们决定开源我们为它构建的框架。您可以在此处查看框架的详细信息:http: //blog.streak.com/2012/07/export-your-google-app-engine-logs-to.html

于 2012-07-06T18:36:17.120 回答
0

如果您希望 Google App Engine (Google Cloud) 项目的日志包含在 BigQuery 中,Google 已将此功能添加到新的 Cloud Logging 系统中。这是一项称为“日志导出”的测试版功能 https://cloud.google.com/logging/docs/install/logs_export

他们将其总结为:

将您的 Google Compute Engine 日志和 Google App Engine 日志导出到 Google Cloud Storage 存储桶、Google BigQuery 数据集、Google Cloud Pub/Sub 主题或三者的任意组合。

我们在 Python GAE 项目中使用“将 App Engine 日志流式传输到 BigQuery”功能。这会将我们应用的日志直接发送到 BigQuery,因为它们正在发生,以便在 BigQuery 数据集中提供近乎实时的日志记录。

还有一个页面描述了如何使用导出的日志。 https://cloud.google.com/logging/docs/export/using_exported_logs

当我们想要查询多天(例如上周)导出到 BigQuery 的日志时,您可以使用带有FROM如下子句的 SQL 查询:

FROM
    (TABLE_DATE_RANGE(my_bq_dataset.myapplog_,
      DATE_ADD(CURRENT_TIMESTAMP(), -7, 'DAY'), CURRENT_TIMESTAMP()))
于 2016-02-06T16:03:04.790 回答