使用BigQuery进行日志分析

时间:2012-05-01 23:19:32

标签: google-bigquery

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

两个问题:

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

3 个答案:

答案 0 :(得分:5)

  1. 您知道,有一个很棒的演示,可以通过App Engine MapReduce将App Engine日志数据移动到BigQuery,名为log2bq(http://code.google.com/p/log2bq/)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果您希望Google App Engine(Google Cloud)项目的日志位于BigQuery中,Google已将此功能内置于新的Cloud Logging系统中。这是一个称为" Logs Export" https://cloud.google.com/logging/docs/install/logs_export

他们总结为:

  

将您的Google Compute Engine日志和Google App Engine日志导出到Google云端存储分区,Google BigQuery数据集,Google Cloud Pub / Sub主题或这三者的任意组合。

我们将" Stream App Engine日志用于BigQuery"我们的Python GAE项目中的功能。这会将我们的应用程序日志直接发送到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()))