【问题标题】:How to get the details of a continuous Azure WebJob invocation如何获取连续 Azure WebJob 调用的详细信息
【发布时间】:2016-05-09 16:08:13
【问题描述】:

查看 Kudu Azure WebJobs API 文档https://github.com/projectkudu/kudu/wiki/WebJobs-API 我发现有几个调用可以以编程方式管理 WebJobs。

对于连续的网络作业,缺少的是获取单个调用详细信息的调用。对于调用,我的意思是对给定消息的函数的单次执行。

我想要做的是,对于进入毒队列的消息,获取父调用的异常消息。在有毒消息中,我使用 json 道具 $AzureWebJobsParentId 获取父调用的 id。

我想通过电子邮件发送错误详细信息并将消息移动到死信队列中的功能来管理中毒队列。

知道这是否可能吗?

【问题讨论】:

  • 不是说你上面链接的API是通用的WebJobs API,对SDK一无所知。但是您的问题是特定于 SDK 的。您可能需要调整标题以使其更清晰。
  • 好吧@DavidEbbo,你的意思是我指的Api是Kudu Api,它不是要看的地方吗?我想是的,因为有人打电话来获取触发工作的详细信息。关于在哪里寻找的任何建议?如果没有办法,那就奇怪了。这对我来说是一个有用的场景。无论如何,感谢您的评论。
  • Kudu API 只知道连续和触发的 WebJobs。如果连续 WebJob 恰好使用 SDK,Kudu 对此一无所知。所以你的问题更多:使用SDK时,是否有API可以获取详细信息。
  • @GiorgioBozio 如何接受提到 Azure WebJobs SDK 扩展的答案?这仍然是要走的路。

标签: azure azure-webjobs azure-webjobssdk


【解决方案1】:

Azure WebJobs SDK Core extensions 包含ExecutionContext 的绑定,它允许您在函数中访问特定于调用的系统信息。展示如何访问函数调用 ID 的示例:

public static void ProcessOrder(
    [QueueTrigger("orders")] Order order,
    TextWriter log,
    ExecutionContext context)
{
    log.WriteLine("InvocationId: {0}", context.InvocationId);
}

调用 ID 用于仪表板日志中,因此以编程方式访问此 ID 允许您将调用与这些日志相关联。

创建一个function specific error handler,它只会处理一个函数的错误。这是通过基于“ErrorHandler”后缀的命名约定来完成的。

public static void ProcessOrderErrorHandler(
    [ErrorTrigger()] TraceFilter filter,
    TextWriter log)
{

    var lastMessage = filter.Message;
    var lastMessages = filter.GetDetailedMessage(5);
}

email notifications

public static void ErrorMonitor(
    [ErrorTrigger("0:30:00", 10, Throttle = "1:00:00")] TraceFilter filter,
    [SendGrid] SendGridMessage message)
{
    message.Subject = "WebJobs Error Alert";
    message.Text = filter.GetDetailedMessage(5);
}

【讨论】:

  • 我正在寻找一个 API 调用来获取作业调用的详细信息。现在可以使用吗?我应该在哪里寻找它?
  • 我更新了答案以收集可能对您的用例有用的谜题。
【解决方案2】:

目前还没有正式的方法来执行此操作,但在跟踪公开稳定 API(C# 和 REST)以读取单个函数实例时存在问题:请参阅 https://github.com/Azure/azure-webjobs-sdk/issues/880 了解状态

【讨论】:

  • 谢谢迈克。添加这将是一个很好的功能,也许它并不难做到。这将使毒物队列的处理更容易。
【解决方案3】:

给定 WebJobs SDK 调用 ID,您可以通过 WebJobs 仪表板访问该执行的详细信息。您可以通过门户中的 WebJobs 刀片访问仪表板(链接将在“LOGS”列中)。

或者在浏览器中您可以自己形成 URL,例如(替换您的应用名称和调用 ID):

https://<yourapp>.scm.azurewebsites.net/azurejobs/#/functions/invocations/<invocation-id>

这就是您手动访问这些详细信息的方式。

【讨论】:

  • 是的,我想办法通过一些 API 调用获得相同的信息,以便在邮件进入毒队列时在自动电子邮件警报中使用它。
猜你喜欢
  • 2020-10-05
  • 1970-01-01
  • 2023-01-12
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2019-11-23
  • 2020-03-13
相关资源
最近更新 更多