创建一个基于日志的指标来跟踪 2 个日志之间的差异

Create a log-based metrics that keeps track of the delta between 2 logs

假设我有 3 个协同工作的应用程序,并使用 pub-sub 为 "management" 发送消息。 假设有一个 "transaction id" 在开始时创建并通过应用程序传递,并写入日志中。

我会有如下日志:

app1 - transactionIdX - started - timestamp01
app1 - transactionIdX - ended - timestamp02
app2 - transactionIdX - started - timestamp03
app1 - transactionIdY - started - timestamp04
app1 - transactionIdY - ended - timestamp05
app2 - transactionIdX - ended - timestamp06
app3 - transactionIdX - started - timestamp07
app2 - transactionIdY - started - timestamp08
app2 - transactionIdY - ended - timestamp09
app3 - transactionIdX - ended - timestamp10
app3 - transactionIdY - started - timestamp11
app3 - transactionIdY - ended - timestamp12

我想要一个公开此类信息的指标:

有没有一种方法可以构建提供此类信息的基于日志的指标?

目前,仅使用基于日志的指标无法做到这一点 API。基于日志的指标管道不维护两个日志条目之间的状态,因此您无法捕获两个值并制定查询来捕获两者之间的差异。

我看到了两种可能的解决方法:

  1. 检测您的应用以保留有关事务延迟的统计信息,并将其输出到日志中并使用基于日志的指标捕获它。
  2. 在查询时使用与 Stackdriver 集成的类似 Cloud Datalab 的脚本执行此类计算。

免责声明:我是 Google Stackdriver 的一名工程师。

我目前正在编写示例解决方案。将 post 它放在其他线程上:Latency SLO from logs on GCP Cloud Logging