如何处理从Google Cloud Projects导出到BigQuery的堆栈驱动程序日志

时间:2019-07-31 12:27:34

标签: google-bigquery google-cloud-stackdriver

我已经从Google Cloud项目中的Stackdriver Logging页面中创建了“导出”。我将导出配置为转到BigQuery数据集。

当我转到BigQuery时,我看到了数据集。

数据集中没有表,因为Stackdriver导出为我创建了BigQuery数据集。

如何查看导出的数据?由于没有表,因此无法执行“从X选择*”。我可以创建一个表,但不知道要添加哪些列,也不知道如何告诉Stackdriver日志写入该表。

我一定错过了一步。

Google在导出到Big Query时有一个短短的1分钟视频,但它恰好在我正在进行的过程中停止。

2 个答案:

答案 0 :(得分:0)

定义新的Stackdriver导出后,它将然后开始将新写入的日志记录导出到目标接收器(在这种情况下为BQ)。根据此处找到的文档:

https://cloud.google.com/logging/docs/export/

它表明:

  

由于仅对新日志条目进行导出,因此无法导出   创建接收器之前Logging收到的日志条目。

如果要将现有日志导出到文件,则可以按照以下说明使用gcloud(或API):

https://cloud.google.com/logging/docs/reference/tools/gcloud-logging#reading_log_entries

然后可以以您认为合适的任何方式使用现有日志记录的“转储”的输出。例如,可以将其导入到BQ表中。

答案 1 :(得分:0)

要从 stackdrive 导出 bigquery 中的日志,您必须使用代码或 GCP 日志记录 UI 创建 Logger Sink

然后创建 Sink,添加过滤器。 https://cloud.google.com/logging/docs/export/configure_export_v2

enter image description here

然后使用代码将日志添加到堆栈驱动程序

public static void writeLog(Severity severity, String logName, Map<String, String> jsonMap) {
List<Map<String, String>> maps = limitMap(jsonMap);
for (Map<String, String> map : maps) {
  LogEntry logEntry = LogEntry.newBuilder(Payload.JsonPayload.of(map))
      .setSeverity(severity)
      .setLogName(logName)
      .setResource(monitoredResource)
      .build();
  logging.write(Collections.singleton(logEntry));
}

}

private static MonitoredResource monitoredResource = 
MonitoredResource.newBuilder("global")
   .addLabel("project_id", logging.getOptions().getProjectId())
   .build();

https://cloud.google.com/bigquery/docs/writing-results