如何在Datadog中测量异步过程的执行时间?

时间:2019-01-26 20:56:48

标签: asynchronous monitoring metrics execution-time datadog

我有一个基于kafka的基于微服务的项目,该项目用于事件总线。我有一个业务流程,其中包含多个微服务。微服务通过help kafka彼此异步通信。每个业务流程实例都有唯一的process_id

让我们考虑一些过程的示例:

  1. 用户在API网关服务中使用request_id == 556bb813-bf77-4f5f-8bb0-1a59d6ba16b4创建一个进程。
  2. API网关服务会向service1_in产生一些事件。当然,事件包含556bb813-bf77-4f5f-8bb0-1a59d6ba16b4
  3. Microservice_1消耗service1_in中的事件,并将事件产生到service2_in
  4. Microservice_2消耗service2_in中的事件,并产生事件到service1_in
  5. Microservice_1消耗service1_in中的事件,并将事件产生到service1_out
  6. API网关服务使用service1_out中的事件,并最终将结果返回给客户端。

因此,我需要测量此过程不同步骤之间的执行时间。例如,我想知道步骤3526之间的持续时间。

所以,我不知道如何测量它。我只有一个解决方法。我可以拥有共享内存(例如redis),在这里我可以存储每个流程主干的时间点。在过程结束时,我可以计算所有指标并将其推入datadog。

0 个答案:

没有答案