Azure App Insights 中的 Flush()

Posted

技术标签:

【中文标题】Azure App Insights 中的 Flush()【英文标题】:Flush() in Azure App Insights 【发布时间】:2019-01-27 23:32:20 【问题描述】:

对于 Azure App Insights 中的 Flush() 方法,我想知道它是否会影响项目的性能?

我尝试删除 Flush() 并且所有自定义数据仍然发送到 App Insights。所以我的问题应该是为什么我们需要 Flush()?我们可以删除它吗?

【问题讨论】:

【参考方案1】:

TelemetryClient 上的Flush() 将它当前在缓冲区中的所有数据推送到 App Insights 服务。 您可以在此处查看其源代码:https://github.com/Microsoft/ApplicationInsights-dotnet/blob/3115fe1cc866a15d09e9b5f1f7f596385406433d/src/Microsoft.ApplicationInsights/TelemetryClient.cs#L593。

通常,Application Insights 会在后台批量发送您的数据,以便更有效地使用网络。 如果您启用了开发者模式或手动调用 Flush(),则会立即发送数据。

通常您不需要调用 Flush()。 但如果您知道该进程将在该点之后退出,您将需要调用 Flush() 以确保所有数据都已发送。

【讨论】:

如果应用程序正在退出,则建议在 Flush() 之后使用 Sleep(5000) 以确保发送所有项目。 嗯,看起来一点也不干净。我们应该能够明确地等待某些东西,也许退出代码是关键遥测。 @evilSnobu 有道理,您可以提供任何示例代码吗?这是一个用于 asp.net 核心的 web api。我会假设控制器类将是退出代码。 我找到了一些有用的示例代码:thinkrethink.net/2017/03/09/…

以上是关于Azure App Insights 中的 Flush()的主要内容,如果未能解决你的问题,请参考以下文章

text Azure App Insights Kubernetes日志

如何使用 Pyspark 提取 Azure Application Insights 事件?

Azure App Service Application Insights 不显示依赖的 sql 命令文本

Azure App Insights REST API 获取内存使用情况

App Insights:禁用 SQL 依赖遥测

Application Insights 未记录浏览器数据