【问题标题】:How to import Stackdriver logs into BigQuery如何将 Stackdriver 日志导入 BigQuery
【发布时间】:2018-07-20 13:52:46
【问题描述】:

有没有办法将日志从应用引擎加载到 Google Cloud Platform 上的 BigQuery 中?

我正在尝试使用联合查询在 Cloud Storage 中加载 Stackdriver 日志文件。但是 BigQuery 无法加载 Stackdriver 编写的某些字段名称。

日志文件是换行符分隔的 JSON,记录看起来像

{  
   "insertId":"j594356785jpk",
   "labels":{  
      "appengine.googleapis.com/instance_name":"aef-my-instance-20180204t220251-x59f",
      "compute.googleapis.com/resource_id":"99999999999999999",
      "compute.googleapis.com/resource_name":"c3453465db",
      "compute.googleapis.com/zone":"us-central1-f"
   },
   "logName":"projects/my-project/logs/appengine.googleapis.com%2Fstdout",
   "receiveTimestamp":"2018-02-08T02:59:59.972739505Z",
   "resource":{  
      "labels":{  
         "module_id":"my-instance",
         "project_id":"my-project",
         "version_id":"20180204t220251"
      },
      "type":"gae_app"
   },
   "textPayload":"{\"json\":\"blob\"}\n",
   "timestamp":"2018-02-08T02:59:54Z"
}

但 BigQuery 在此输入上返回错误:query: Invalid field name "compute.googleapis.com/zone". Fields must contain only letters, numbers, and underscores, start with a letter or underscore, and be at most 128 characters long.

有没有办法将这种日志提取到 BigQuery 中?

我对仅提取 textPayload 字段特别感兴趣。

【问题讨论】:

    标签: google-app-engine google-cloud-platform google-bigquery etl stackdriver


    【解决方案1】:

    您可以将 Stackdriver 日志导出到 BigQuery

    Google Cloud Platform 控制台中,Stackdriver 日志记录 >> 导出 >> 创建导出。 创建一个过滤器resource.type="gae_app" 并填写右侧的 Sink Name 并选择 BigQuery 作为 Sink Service 然后从 中选择要导出到的数据集>汇目的地https://console.cloud.google.com/logs/exports

    参考:https://cloud.google.com/logging/docs/export/configure_export_v2#dest-create

    【讨论】:

    • 谢谢萨米尔。不过,这些日志已经导出到 Cloud Storage。我希望从 Cloud Storage 中提取它们
    • 抱歉造成误会。正如您所描述的,您对特定字段 textPayload 感兴趣,这是幸运的有效字段名称,您可以通过指定架构 textPayload:STRING,timestamp:STRING(不使用自动检测)来加载文件并启用选项 cloud.google.com/bigquery/docs/reference/rest/v2/… 否则,如果您对所有感兴趣字段(或字段无效为 BQ 字段名)您可以使用 DataFlow(请参阅cloud.google.com/solutions/…
    • 成功了!同样为了他人的利益,UI 中也提供了“忽略未知值”。将此答案标记为正确?
    • 从 Stackdriver 导出到 BigQuery 时,我无法选择表(仅数据集)。如何在我希望日志进入的数据集中指定表?
    猜你喜欢
    • 2021-01-04
    • 2019-12-08
    • 1970-01-01
    • 2018-02-07
    • 2016-07-26
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多