【问题标题】:Blob trigger affecting application insight logging in azure functionsBlob 触发器影响 Azure 函数中的应用程序洞察日志记录
【发布时间】:2020-11-12 01:16:50
【问题描述】:

我有两个 azure 函数,它们存在于同一个 azure 函数应用中,它们都连接到同一个应用洞察实例:

  • TimerFunction 使用 TimerTrigger,每 60 秒执行一次,并记录每种日志类型以供测试使用。
  • BlobFunction 使用 BlobTrigger,其功能与此问题无关。

似乎当 BlobFunction 启用时(它没有被顺便触发),它会通过轮询阻塞应用程序洞察力,因为我没有收到一些用 TimerFunction 编写的日志消息。如果我禁用 BlobFunction,那么我在开发工具监视器中看到的 TimerFunction 日志都在那里。

这显示在下面的屏幕截图中。 TimerFunction 和 BlobFunction 都在运行,直到我在 20:24 禁用 BlobFunction,您可以清楚地看到日志“正常”工作,然后在 20:26 我重新启用 BlobFunction 并且 TimerFunction 写入的日志再次断断续续,并且丢失了我的自己记录的信息。

以下是来自实时指标选项卡的示例遥测数据:

我是否遗漏了一些明显的东西?发生了什么事?

仅供参考:我的 host.json 文件没有设置任何日志级别,我在测试过程中将它们全部取出,它目前是一个近乎骨架。我还将 BlobFunction 更改为使用 HttpTrigger,问题消失了,所以我 99% 确定这是因为 BlobTrigger。

编辑:

我尝试按照 Peter Bons 的建议添加事件网格触发器,但我的资源组由于某种原因没有显示存储帐户。链接文章的显示方式以及该视频的显示方式 (https://www.youtube.com/watch?v=0sEzimJYhME&list=WL) 对我不起作用。只是选项不同,如下图:

【问题讨论】:

  • 您能否确保您的目标存储帐户满足成为 GPv2 存储帐户的要求?升级过程见this
  • 是的,我刚刚在文档中阅读并检查了它,它是 v1。我将升级到 v2 并试一试。

标签: azure azure-functions azure-blob-storage azure-application-insights


【解决方案1】:

轮询使您的日志变得混乱是正常现象。您当然可以在 host.json 中设置日志级别来过滤掉这些消息,尽管您也可能会丢失一些有价值的其他日志记录。

至于可能丢失的遥测:很可能是由于默认启用的sampling 而丢弃了一些日志。如果门户上未显示某些日志记录,我也不会感到惊讶。我亲身经历过日志记录被延迟长达 10 分钟,或者在门户网站上的 azure 功能日志页面中根本不可用。也可以在 App Insights 中尝试直接查询。

或者您可以直接访问 App Insights 资源并自己创建一些查询,使用 SearchLogs 过滤掉这些消息。

另一种选择是不依赖使用 blobtrigger 进行轮询,而是使用 event grid trigger 在添加 blob 后调用函数。 Here 是在将图像上传到 azure 存储 blob 容器时调用函数的示例。因为不涉及轮询,所以这是对存储事件做出反应的更有效的方式。

【讨论】:

  • 究竟什么是正常的?那个 blob 触发器会破坏其他应用程序的日志记录?需要明确的是,我理解轮询是正常行为,它对我的​​其他功能的影响是我不理解的。
  • @Murphybro2 我已经用有关采样和直接查询应用洞察力的相关信息更新了我的答案,而不是依赖门户中的控制台输出
  • 感谢您提供的额外信息,但是,生活从未如此简单。请查看我更新的问题。
猜你喜欢
  • 2021-09-21
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多