我已经从Google Cloud项目中的Stackdriver Logging页面中创建了“导出”。我将导出配置为转到BigQuery数据集。
当我转到BigQuery时,我看到了数据集。
数据集中没有表,因为Stackdriver导出为我创建了BigQuery数据集。
如何查看导出的数据?由于没有表,因此无法执行“从X选择*”。我可以创建一个表,但不知道要添加哪些列,也不知道如何告诉Stackdriver日志写入该表。
我一定错过了一步。
Google在导出到Big Query时有一个短短的1分钟视频,但它恰好在我正在进行的过程中停止。
答案 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
然后使用代码将日志添加到堆栈驱动程序
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();