仅导出jsonPayload

时间:2019-08-30 15:01:11

标签: google-cloud-logging

Stackdriver Logging导出导出整个json对象,而不仅仅是我发送的jsonPayload。

我正在通过Python SDK将JSON数据发送到stackdriver。

以以下格式

将数据提取到Stackdriver fine中
{ 
insertId: ""
jsonPaload: [what I sent]
labels: []
logname: ""
receiveTimestamp: ""
resource: {}
timestamp: ""
}

当我将日志导出到GCS时,将发送整个有效负载,而不仅仅是我的jsonPload,并且似乎没有办法将数据发送到GCS。

这引起的问题是,如果我想再次使用它,我已经剥离了jsonPload数据,例如mydata = json.loads(export_line)['jsonPayload']。

示例:某供应商想要我的代理日志。我不能仅仅给他们GCS日志,因为Bro数据嵌套在jsonPayload中。因此,我必须预先解析数据并手动将其发送到GCS,或者将其从GCS中提取,解析并提供给供应商。

我希望我应该只有一种方法可以导出我发送的jsonPaload。即,我发送堆栈驱动程序数据,告诉它导出我的数据,并且仅导出我的数据,而不导出其内部遥测/添加。

1 个答案:

答案 0 :(得分:0)

问题在于,Stackdriver Logging中的每个日志条目都是LogEntry类型的对象,并且日志记录导出会将实际对象导出到GCS。即使在写入导出之前进行解析,也无法隔离有效负载,因为LogEntry对象将始终至少将logNameresource字段作为其{{3}的一部分}。

如果您想让GCS日志导出中的其他人只能使用{strong>仅字段,则[*]Payload字段必须在共享之前进行解析。您也可以将日志导出到structure,对其进行查询,然后直接或通过BigQuery dataset共享输出,而不是从GCS解析LogEntry对象。