首页 文章

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

提问于
浏览
4

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

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

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

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

知道这是否可行?

3 回答

  • 5

    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在仪表板日志中使用,因此以编程方式访问此调用可以将调用与这些日志相关联 .

    创建一个只能处理一个函数错误的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);
    }
    
  • 0

    有一个问题是跟踪暴露稳定的API(C#和REST)以读取各个函数实例:请参阅https://github.com/Azure/azure-webjobs-sdk/issues/880了解状态

  • 1

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

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

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

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

相关问题