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。即,我发送堆栈驱动程序数据,告诉它导出我的数据,并且仅导出我的数据,而不导出其内部遥测/添加。
答案 0 :(得分:0)
问题在于,Stackdriver Logging中的每个日志条目都是LogEntry
类型的对象,并且日志记录导出会将实际对象导出到GCS。即使在写入导出之前进行解析,也无法隔离有效负载,因为LogEntry
对象将始终至少将logName
和resource
字段作为其{{3}的一部分}。
如果您想让GCS日志导出中的其他人只能使用{strong>仅字段,则[*]Payload
字段必须在共享之前进行解析。您也可以将日志导出到structure,对其进行查询,然后直接或通过BigQuery dataset共享输出,而不是从GCS解析LogEntry
对象。