Stackdriver 是否将日志中的不同时间单位转换为毫秒?

Does Stackdriver convert different time units in logs to milliseconds?

我有粗略格式的日志数据:

textPayload: "latency=1.539325257s method=GET"
textPayload: "latency=355.376208ms method=GET" 
textPayload: "latency=704.816053ms method=GET"
textPayload: "latency=751.597856ms method=GET"
textPayload: "latency=1.845525343s method=GET"

并且我使用正则表达式在 Stackdriver 中创建了一个分布指标:latency=([0-9.]+) 提取延迟(并由 stackdriver 转换为双精度)

当我绘制此数据时,它似乎在我的图表上显示了值“1539.32”和“1845.52”,这表明这些 s 值正在转换为 ms

这就是我想要的,但我找不到任何地方说 Stackdriver 实际上 读取单位的后缀(它绝对不是我的正则表达式的一部分)并将时间转换为标准单位。这是 Stackdriver 的实际行为吗?

过滤例如可能会更好。对于 httpRequest.latency,请参阅 https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#HttpRequest

latency - A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".

参见agent metrics

Stackdriver 绝对不会为您在时间单位之间进行转换,它只是提取 double 值并将其视为您在自定义指标中指定的任何单位,在我的例子中是 ms。我们最终将日志记录代码更改为始终在 ms 中输出,并且永远不会将 "pretty print" 值输出为 3.293s2m51s 之类的值,这是处理 golang [=] 时的默认值15=].

一张图表胜过一千个字,看看您能否发现我们部署了代码更改的位置。