如何获取连续Azure WebJob调用的详细信息

时间:2016-05-09 16:08:13

标签: azure azure-webjobs azure-webjobssdk

查看Kudu Azure WebJobs API文档https://github.com/projectkudu/kudu/wiki/WebJobs-API我看到我可以通过编程方式管理WebJobs。

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

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

我想通过一个函数来管理毒性队列,该函数通过电子邮件发送错误的详细信息并将消息移到死信队列中。

知道这是否可行?

3 个答案:

答案 0 :(得分:5)

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

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

调用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);
}

答案 1 :(得分:1)

目前还没有正式的方法可以做到这一点,但是有一个问题是跟踪暴露稳定的API(C#和REST)以读取各个函数实例:请参阅https://github.com/Azure/azure-webjobs-sdk/issues/880了解状态

答案 2 :(得分:0)

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

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

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

您可以通过手动手动来访问这些详细信息。