在 Azure Function 中添加自定义遥测属性

2023-12-28

我有一个 Azure 函数 (v2),其中数据通过 HTTP 主体以 JSON 形式传入。我想使用标准在 Application Insights 中记录一些 JSON 数据Trace and Request events.

到目前为止我尝试过的:

  • 使用自定义ITelemetryInitializer它解析主体并添加属性ISupportProperties.Properties。但这有两个缺点:每个请求都会多次读取和解析主体(在我的函数中一次,在遥测初始化程序中多次),有时访问主体会抛出异常,因为它已被处理(可能它会出去)函数调用结束时的范围)。
  • Use an TelemetryClient inside my Function. But this client doesn't seem to have an appropriate property to set:
    • TelemetryClient.Context.GlobalProperties适用于全局属性,而不是请求范围的属性;
    • TelemetryClient.Context.Properties已过时,我不知道如何使用推荐的替代品ISupportProperties.Properties there.

理想情况下,我想使用在函数内部解析的数据,并使用该数据来初始化遥测数据。


  1. 您可以通过添加标签来更新请求遥测属性Activity.Current like Activity.Current?.AddTag("my-prop", ExtractPropFromRequest());无需任何其他更改,这些标签将出现在请求中。不幸的是,你不会把它们印在痕迹上。

  2. 您还可以在函数中解析一次请求正文并将其存储在 AsyncLocal 中。然后在ITelemetryInitializer中访问这个AsyncLocal

 public class AsyncLocalPropertyTelemetryInitializer : ITelemetryInitializer
 {
   public void Initialize(ITelemetry telemetry)
     {
       if (telemetry is ISupportProperties propTelemetry &&
           Function1.AdditionalContext.Value != null) // you may find a better way to make it work with DI
         {
           propTelemetry.Properties["my-prop"] = Function1.AdditionalContext.Value;
         }
      }
  }


public static class Function
{
    internal static readonly AsyncLocal<string> AdditionalContext = new AsyncLocal<string>();
    [FunctionName("Function1")]
    public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
    {
      AdditionalContext.Value = "something important"; // read the body here
      log.LogInformation("C# HTTP trigger function processed a request.") 
      AdditionalContext.Value = null;
      // ...
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Azure Function 中添加自定义遥测属性 的相关文章

随机推荐

  • 处理多个文件(图像)上传到 AWS S3 Swift

    我一直在尝试研究从 iOS 应用程序上传多个图像到 AWS S3 的最佳方法 我在 StackOverflow 上看到过一些类似的问题 其中最接近 答案 的问题就在这里 link https stackoverflow com questi
  • 如何将“camelCase”转换为“Camel Case”?

    我一直在尝试获取 JavaScript 正则表达式命令来将类似的内容转换为 thisString into This String 但我得到的最接近的是替换一个字母 导致类似的结果 Thi String or This tring 有任何想
  • C++ 从文本文件读取到数组/字符串

    这是我到目前为止的代码 我需要做的是从两个不同的文本文件 Matrix A 和 Matrix B 中读取 我可以这样做 但是对于我读到的每个文本文件矩阵 它只会出现 1 0 0 所以基本上是第一行 矩阵 A 的整个文本文件实际上是 1 0
  • Typescript - 错误地推断“从不”

    这是一个基本用例 用 null 初始化变量 然后更改某些嵌套循环 函数中的值 let a number null null 1 forEach gt a 1 if a null a toFixed Error Property toFixe
  • RStudio:我可以弹出源窗格吗?

    我有一个双显示器 我希望可以弹出 源窗格 我在其中编辑代码 以便我可以在一个显示器中编辑代码并跟踪另一个显示器中的其他所有内容 有谁知道这是否可能 非常感谢您的帮助 此功能本周刚刚添加到 RStudio 您可以在我们的日常构建中尝试它 0
  • Java Setter 和构造函数混淆

    我对如何在Java中使用构造函数和setter有点困惑 请参阅下面的示例代码 public class Name private String name public void setName String name this name n
  • 拳击,已经成为过去式了吗?

    这样做有什么意义吗 public static void Write
  • 构建詹金斯缺失的历史

    我刚刚为我的项目设置了一个新的 Jenkins 实例 版本 2 19 4 但是 当我尝试生成多个构建进行测试时 我发现构建历史记录仅向我显示一个历史构建 升级之前 至少显示两个或更多 詹金斯中有一个地方可以设置应该显示的历史构建的数量吗 在
  • 我可以将 Google Places API 中的姓名、地址和纬度/经度存储在我自己的数据库中吗?

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 Google Places 关于存储信息的术语可能有点令人困惑 我希望有人能提供一些说明 我想构建一个数据库并收集有关企业的独特数据
  • MSBuild 是否需要安装 Visual Studio?

    我正在使用 Atlassian Bamboo 设置构建服务器 MSBuild 包含在 NET 框架中 所以我相信我至少可以在没有 VS2010 的情况下很好地构建 NET 应用程序 我们主要使用 C 进行开发 我是否需要在构建服务器上安装
  • 异步函数何时实际返回待处理的承诺?

    我用谷歌搜索了这个问题很多次 但我看到这个问题的唯一答案是 异步函数总是返回一个承诺 但我没有找到任何可以回答这种情况何时真正发生的问题 是一进入异步函数还是一遇到第一个await关键词 我刚刚写了这段代码 async function m
  • 使用 JavaScript 平滑更改文本

    我正在制作一个登陆页面 其中的短语会随着选定的单词而不断变化 例如 设计更好的网站为客户制作 将切换第一个或最后一个单词成为 开发更好的网站为客户制作 然而 由于 开发 这个词比 设计 更大 因此文本的其余部分最终会被推来推去 而无法顺利过
  • 使用 cURL 测试 AWS API Gateway

    我确实有一个受 AWS IAM 授权保护的简单 AWS API Gateway 实施 我只想通过 cURL 从命令行进行测试 curl location request GET https
  • 在 WPF 中使用快速彩色文本框进行语法突出显示

    是否可以在 WPF 中使用快速彩色文本框进行语法突出显示 http www codeproject com Articles 161871 Fast Colored TextBox for syntax highlighting http
  • 在 Notepad++ 中智能突出显示时显示出现次数

    是否可以显示智能突出显示的单词出现的次数 我的意思是当你双击一个单词时 在 Matlab 中 例如通过让光标触摸单词并在工具栏中显示它来激活智能突出显示即刻例如说4 usages of weight found 搜索单词 短语将为您提供相同
  • jQuery 1.8 中的 pipeline() 和 then() 文档与现实

    更新 这个问题现在已经过时了 因为文档是准确且最新的 我一直在探索 jQuery Deferred Promise API 但我对两者之间的差异感到非常困惑pipe and then 在哲学上和 jQuery 文档中 我发现从 jQuery
  • 函数(d)和函数(d,i)之间的区别?

    Every D3js初学者我一定正在经历这个想法 我对此非常确定 我已经在这个东西上呆了几个小时了 但我不知道如何使用它 也不知道它是什么不同之处它们之间 function d return d function d i return d
  • 如何从栅格中提取其最高值位于多边形内的 xy 坐标?

    给出的是一个栅格以及一个 SpatialPolygonsDataframe 为了检索多边形区域内栅格的最高值 可以使用 raster extract 效果很好 如何另外获取多边形区域内栅格提取的最高值的坐标 create raster r
  • 如何使用 WebMatrix 连接到 SQL Server 数据库?

    我添加了一个连接 它显示在 其他连接 中 但我似乎无法引用它 var db Database Open MyNewConnection 抛出异常 Connection string MyNewConnection was not found
  • 在 Azure Function 中添加自定义遥测属性

    我有一个 Azure 函数 v2 其中数据通过 HTTP 主体以 JSON 形式传入 我想使用标准在 Application Insights 中记录一些 JSON 数据Trace and Request events 到目前为止我尝试过的