将Stackdriver跟踪导出到BigQuery

时间:2019-08-14 16:58:27

标签: google-cloud-platform google-bigquery stackdriver

我想知道是否存在一种将跨度从Google Stackdriver导出到BigQuery的好方法,以便对痕迹进行更好的分析?

我目前看到的唯一可能的解决方案是单独或临时querying the trace API单独编写跟踪和BigQuery API。

第一个并不是很好,因为这需要对应用程序代码进行相当大的更改(我目前仅将OpenCensus与Stackdriver exporter一起使用,以透明方式将跟踪信息写入Stackdriver)。第二个方法不是很好,因为查询该API的跨度并将它们写入BigQuery非常繁琐,而且必须临时完成。

类似于log exporting的水槽会很好。

3 个答案:

答案 0 :(得分:1)

不幸的是,目前无法将Stackdriver跟踪信息导出到BigQuery。

我注意到已经要求在GCP端实现完全相同的功能。 GCP产品团队已经意识到此功能要求,并考虑实施此功能。

请注意,功能请求通常不会立即得到解决,因为它取决于有多少用户需要相同的功能。与该功能请求有关的所有通信都将在公共问题跟踪器1内完成,您也可以对其加注星标以确认您对此感兴趣,但是请记住,没有确切的预计到达时间。


答案 1 :(得分:0)

是的。推荐您的最佳做法。

  1. 分析效果更好,您的日志已分区并且查询效率很高。
  2. 日志格式不变。您记录的值可以,但查询结构不可以
  3. 日志在堆栈驱动器中有一个limited retention期间。使用bigquery,您可以保留所有想要的时间
  4. 免费!至少,下沉过程。您必须支付存储和bigquery处理

我有3条建议:

  • 请考虑清除日志以降低存储成本。但是,超过90天的数据更便宜。
  • 设置接收器之前,仅选择要保存到bigquery的相关日志条目。
  • 不要忘记分区时间,日志可能会迅速增大,并且不受控制的查询也很昂贵。

奖金:如果您必须遵守RGPD,并且日志中有个人数据,请确保在RGPD日志中列出该过程。

答案 2 :(得分:0)

您将日志导出到 big-query ,您必须在 big-query 中创建表并在 bigquery 中添加数据。

默认情况下,在 GCP 中,所有日志都通过堆栈驱动程序。

要从 stackdriver 导出大查询中的日志,您必须使用代码或 GCP 日志记录 UI 创建 Logger 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();