首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cadence中测量运行的工作流数

如何在cadence中测量运行的工作流数
EN

Stack Overflow用户
提问于 2022-06-15 21:21:07
回答 1查看 108关注 0票数 1

我想在Prometheus中监视当前运行的cadence工作流的数量。

我检查了由不同的cadence服务(如cadence_historycadence_workercadence_frontend等)导出的度量,我可以找到的唯一与工作流相关的度量是:

  • activity_end_to_end_latency histogram (workflowType是其中一个标签)
  • workflow_success counter / workflow_terminate counter / workflow_failed counter

因此,似乎有一些指标可以分析已经完成的工作流,但没有关于当前工作流的信息。我说的对吗还是我错过了什么?

这意味着我必须自己导出所需的度量,我看到了两个可能的解决方案:

  • 例如,在工作流的开始和停止时,创建一个量规和增量/递减值:
代码语言:javascript
复制
func MyWorkflow(ctx workflow.Context) error {
    mymetrics.gauge.Inc()

    if err := workflow.ExecuteActivity(ctx, someActivity).Get(ctx, nil); err != nil {
        mymetrics.gauge.Dec()
        return err
    }

    // ...

    mymetrics.gauge.Dec()
    return nil
}

这种方法的缺点是用户手动终止的工作流将无法正确测量。

  • 创建prometheus导出程序,并使用cadence.client.ListOpenWorkflow函数收集正在运行的工作流数。然而,cadence文档说,“这个API的大量使用可能会带来巨大的持久性压力”,所以我认为在prometheus出口商中调用它是一个非常糟糕的主意。

你认为还有其他可能的解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-16 01:58:59

因此,似乎有一些指标可以分析已经完成的工作流,但没有关于当前工作流的信息。我说的对吗还是我错过了什么?

没错。没有像这样的度量标准。

然而,cadence docs说,“这个API的大量使用可能会造成巨大的持久性压力”。

如果将高级能见度与ElasticSearch结合使用,则情况并非如此。

但是,如果使用高级可见性,则应该使用"CountWorkflowExecution“API。这将更有效地计算开放的工作流。

如果使用基本可见性,如果数字非常大,则持久化可能是一个额外的问题。因为你必须在页面上进行迭代才能得到数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72637962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档