Stackdriver 基于日志的指标 - 需要在校准期间求和

Stackdriver Logs-Based Metrics - need sum over alignment period

我们有一些看起来像这样的堆栈驱动程序日志条目:

{
  insertId:  "xyz"  
  jsonPayload: {
    countOfApples:  100   
    // other stuff
    }
  // other stuff
}

我们希望能够设置一个基于日志的指标,告诉我们在过去 10 分钟(或任何对齐时间段)内看到的苹果总数,但到目前为止,我无法找到尽管通读了文档,还是这样做的一种方法。

尝试 1:

过滤那些指定了 countOfApples 的日志条目,并创建一个 Counter 指标,并将 countOfApples 作为标签。

完成此操作后,我可以根据 countOfApples 高于或低于某个值来 过滤 。我看不到基于此值的 聚合 的方法。所有聚合选项似乎都适用于对齐期间与过滤器匹配的日志条目数

尝试 2:

过滤那些指定了 countOfApples 的日志条目,并创建一个 distribution 指标,字段名称设置为 jsonPayload.CountOfApples

这似乎更接近了,因为我现在可以在指标资源管理器中看到苹果数量,但我找不到正确的 Aligner/Reducers 组合来给我这段时间的苹果总数?选择 Aligner:delta & Reducer:sum 会导致错误消息:

This aggregation does not produce a valid data type for a Line plot type. Click here to switch the aligner to sum and the reducer to 99th percentile

是否可以只监控每个对齐周期内所有这些值的总和?

截至 2019 年 5 月 3 日,无法根据日志中存储的值创建计数器指标。将值放入标签中只是将它们公开为字符串,这使您可以过滤但不执行基于这些值的聚合。根据 documentation,计数器指标计算日志条目,而不是这些日志条目中的值。正如您所注意到的,分布指标上没有足够的可用操作来执行您想要的操作。

目前,最好的办法是根据这些日志值编写您自己的自定义指标。您可以通过 exporting your logs to Cloud Pub/Sub and writing some code to process the logs from Pub/Sub and send custom metrics. Alternatively, you could try to configure the Stackdriver monitoring agent to extract the values using the tail plugin, and send them as custom metrics.

如果您只需要绘制图表并探索这些值(而不是,例如,将它们用于警报),您可以尝试 Cloud Datalab