微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Blob触发器会影响Azure功能中的应用程序洞察力日志记录

如何解决Blob触发器会影响Azure功能中的应用程序洞察力日志记录

我在同一个Azure功能应用程序中存在两个Azure函数,它们都连接到相同的应用程序见解实例:

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

似乎启用了BlobFunction(不是由方式触发的)时,它会通过轮询阻塞应用程序见解,因为我没有收到一些用TimerFunction编写的日志消息。如果我禁用BlobFunction,那么我在开发工具监视器中看到的TimerFunction日志都在那里。

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

enter image description here

这是实时指标标签中的遥测示例:

enter image description here

在这里缺少明显的东西吗?发生了什么事?

仅供参考:我的host.json文件未设置任何日志级别,我在测试此日志的过程中将它们全部清除了,目前它几乎是骨架。我还更改了BlobFunction,改为使用HttpTrigger,该问题消失了,因此我可以确定99%是因为BlobTrigger造成的。

编辑:

我尝试添加一个事件网格触发器,而不是像Peter Bons建议的那样,但是由于某种原因,我的资源组未显示任何存储帐户。链接文章显示方式以及该视频的显示方式(https://www.youtube.com/watch?v=0sEzimJYhME&list=WL)都不适合我。选项只是不同,如下所示:

enter image description here

解决方法

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。