【问题标题】:Does Adaptive Sampling in Application Insights affect Telemetry Correlation?Application Insights 中的自适应采样是否会影响遥测相关性?
【发布时间】:2021-01-28 05:03:19
【问题描述】:

我正在构建一个通过 Azure Functions 管道处理数据的解决方案。总共有 10 多个,数据可以在不同的方向分叉。

在开发过程中,我们一直在使用 App Insights,内置的相关性非常宝贵,能够看到一项数据如何在系统中传输是非常棒的。

到目前为止,我们一直在使用提取采样来限制 App Insights 成本,这种方法运行良好,并且在处理 App Insights 服务端时保留了相关事件(据我了解)。

我们正在考虑使用自适应采样来更好地控制采样的发生方式,但我担心的是,因为这是客户端(Azure 函数端),它不会尊重相关性,我们将无法看到请求的整个过程。我查看了文档但无法确认 - 有人知道答案吗?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    *摄取端采样的工作方式相同 - 仅在这种情况下,所有项目都已上传,然后发生丢弃。这类似于固定采样。

    以下是采样(固定或自适应)在一个应用程序边界内的工作方式:

    1. 传入请求具有操作 ID(从上游接收到的新请求)
    2. 每个遥测项(请求、依赖项、异常等)都带有此操作 ID 标记
    3. 对于每个遥测项目,AI SDK 对操作 ID 进行哈希处理并转换为 [0,1] 范围
    4. 将此采样率与当前采样阈值(固定或自适应)进行比较
    5. 如果值小于阈值,则对项目进行抽样

    这保证了一个应用程序中的所有项目要么被采样,要么被采样(当自适应采样阈值在事务期间发生变化并且事务采样率处于边界时,这是一种极端情况)。

    现在它如何扩展到分布式应用程序:

    1. 操作 ID 不仅传播到其他遥测项,而且作为传出调用(HTTPS、队列项等)的一部分(根据 W3C 标准)
    2. 在每个应用程序中独立应用相同的采样逻辑。但是操作 id 是相同的,因此特定事务的采样率是相同的。
    3. 如果我们有一个具有固定采样的分布式系统,并且每个应用程序的比率完全相同 - 那么可以保证事务将被完全采样或完全采样。
    4. 如果分布式系统使用自适应采样并且各种应用程序具有不同的负载,则事务可能会被部分采样

    Application Insights UX 如何帮助找到完整的交易:

    1. 在主要的两个故障排除体验 - 故障和性能 - 切片和切块(使用各种过滤器缩小范围)之后,提供的项目按“相关性”排序
    2. 由于所有项目都满足过滤条件,因此它们本质上是按采样率排序的(UX 使用完全相同的算法)
    3. 现在有点数学 =) 假设有 100 个遥测项目可供选择,以 99.5% 的概率找到一个样本,该样本将被采样以用于自适应采样率为 1% 的应用程序(100 个请求/秒/虚拟机)。

    【讨论】:

    • 这是一个很好的答案 - 正是我正在寻找的信息 - 非常感谢 :)
    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多