如何从 Cadence 工作流或 activity 发出自定义指标?

How can I emit custom metrics from a Cadence workflow or activity?

Cadence 使用 tally 发出一堆指标。是否可以使用 Cadence SDK 发出我自己的指标?

Go SDK有cadence.GetMetricsScope().Counter(counterName).Inc()但是我直接调用好像不行。我是否缺少一些必需的配置?

您可以使用 Go 和 Java SDK 添加自己的指标。下面的例子展示了如何使用 Go SDK 来实现,Java SDK 与它没有太大区别。

在工作流代码中:

cadence.GetMetricsScope().Counter(counterName).Inc(1)

在activity代码中:

cadence.GetActivityMetricsScope().Counter(counterName).Inc(1)

但是,仅仅这样做并不足以实际发出指标。原因是 tally 默认使用 tally.NoopScope,顾名思义,它什么都不做。因此,您还需要将 MetricsScope 设置为 WorkerOptions 的一部分,如下例所示:

workerOptions := cadence.WorkerOptions{
 MetricsScope: myTallyScope, 
}
worker := cadence.NewWorker(service, domain, taskList, workerOptions)

您可以按照 Go and Java 的计数文档中的示例创建 myTallyScope