如何将 Stackdriver 日志导入 BigQuery

How to import Stackdriver logs into BigQuery

有没有办法将日志从 App Engine 加载到 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 returns 此输入错误: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 字段。

您可以将 Stackdriver 日志导出到 BigQuery

Google Cloud Platform 控制台中,Stackdriver Logging >> Exports >> 创建导出。 创建过滤器 resource.type="gae_app" 并在右侧填写 Sink Name 并选择 BigQuery 作为 Sink Service 然后 select 要从 接收器目标 导出到的数据集。 https://console.cloud.google.com/logs/exports

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