Application Insights 数据采样

Posted

技术标签:

【中文标题】Application Insights 数据采样【英文标题】:Application Insights data sampling 【发布时间】:2018-07-04 14:56:46 【问题描述】:

我有一个与 Application Insights 链接的 Azure 函数。我登录了 AppInsights 几个业务数据,我可以在短时间内运行我的函数的很多实例。

我阅读了documentation of Data Sampling in AppInsights,我想知道:我会因为这种数据采样算法而丢失数据吗?

【问题讨论】:

【参考方案1】:

我想知道我是否会因为这种数据采样算法而丢失数据? -> 是的,这就是采样的重点:

抽样保留 n 条记录中的 1 条,丢弃其余记录。例如,它可能会保留 5 个事件中的 1 个,采样率为 20%。

如果所有数据对于您的日志记录/分析目的都至关重要,则不应应用抽样,或至少限制抽样。

您的问题的链接中应该有足够的材料来告诉您如何启用/禁用采样以及如何检查它当前是否适用。

请注意,默认情况下不会对指标进行抽样:

Application Insights 不会对指标和会话遥测类型进行抽样

【讨论】:

在我的 App Insight 配置中,我有以下设置:“选择 Application Insights 服务将使用摄取采样保留从您的应用接收到的数据的比例:所有数据 (100%)”,这意味着如果我是对的,我永远不会丢失任何数据,对吧?【参考方案2】:

关于 Azure Functions 的 App Insights 采样from the docs:

“Application Insights 有一个采样功能,可以保护您免受 在峰值负载时产生过多的遥测数据。当。。。的时候 遥测项目数超过指定速率,应用程序 Insights 开始随机忽略一些传入的项目。这 每秒最大项目数的默认设置为 5。您可以 在 host.json 中配置采样。”

您可以使用 host.json 配置或禁用采样


  "applicationInsights": 
    "sampling": 
      "isEnabled": true,
      "maxTelemetryItemsPerSecond" : 5
    
  

如果日志非常关键,还需要考虑aggregation process,这可能导致re-cycles中丢失trace等。

HTH

【讨论】:

以上是关于Application Insights 数据采样的主要内容,如果未能解决你的问题,请参考以下文章

Azure Application Insights 不显示数据

Application Insights - 没有“进程 cpu”的数据

Application Insights 筛选数据输出请求

Application Insights 未记录浏览器数据

Application Insights 从自定义数据源中清除数据

System.Diagnostics.TraceSource 未将数据发送到 Application Insights