添加自定义维度以请求遥测 - Azure 函数

2023-11-25

我正在使用 v2.x 创建一个新的 Function 应用程序,并且正在集成 Application Insights 以进行请求日志记录,这是自动完成的,因为 Azure Function 现在已与 App Insights 集成(如文档中所述)link)。我需要做的是在 Application Insights 请求遥测中的自定义维度中记录一些自定义字段。是否可以不使用自定义请求日志记录(使用TrackRequest method)


关于添加自定义属性,可以参考这个教程:添加属性:ITelemetryInitializer。下面是我测试的一个HTTP触发功能。

public static class Function1
{
    private static string key = "Your InstrumentationKey";
    private static TelemetryClient telemetry = new TelemetryClient() { InstrumentationKey = key };
    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");

        if (!telemetry.Context.Properties.ContainsKey("Function_appName"))
        {
            telemetry.Context.Properties.Add("Function_appName", "testfunc");
        }
        else
        {
            telemetry.Context.Properties["Function_appName"] = "testfunc";
        }

        telemetry.TrackEvent("eventtest");
        telemetry.TrackTrace("tracetest");

        string name = req.Query["name"];

        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        name = name ?? data?.name;

        return name != null
            ? (ActionResult)new OkObjectResult($"Hello, {name}")
            : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
    }
}

运行此功能后,转到Application Insights Search可以检查数据或转到Logs(Analytics)。

enter image description here

enter image description here

Update:

enter image description here

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加自定义维度以请求遥测 - Azure 函数 的相关文章

随机推荐

  • Maven - 为什么在“mvn clean”之后我需要在“mvn package”之前执行“Maven Update Project”?

    我正在做一些测试 我想了解为什么执行命令后mvn clean我需要在运行之前执行 Maven gt Update Project mvn package 否则在打包过程中我的依赖项之一会出现编译错误 看起来我的项目在运行 Maven gt
  • PostgreSQL 同一连接上的多个事务

    PostgreSQL 是否支持同一连接上的多个事务 我的意思不是嵌套事务 而是不相关的不同事务 如果您指的是 Java JTA 标准所要求的 交错事务 不 不支持这一点 看到这个JDBC 常见问题解答部分为此 为什么这并不是一个大损失 而且
  • 如何以编程方式打开 Chrome 扩展页面

    我是延期的新人 我想以编程方式打开 Chrome 扩展页面 例如 chrome extension njlkegdphefeellhaongiopcfgcinikh options html 当我单击网页按钮或链接时 我想打开特定的扩展选项
  • 教程中的错误:语法错误,意外的“:”,期望keyword_end

    我很抱歉问了一个可能是补救问题的问题 但在学习 Rails 时 我试图遵循本教程中的注释 http guides rubyonrails org getting started html configuration gotchas 我参加第
  • Java JSON 序列化 - 最佳实践

    我需要为某些对象实现 JSON 序列化 并且在与通用集合集成时遇到了问题 所有可序列化的类都实现这个接口 JSONObject来自this图书馆 interface JSONSerializable public JSONObject du
  • WPF ControlTemplates 是否必须有 TargetType?

    WPF 中的 ControlTemplate 是否需要 TargetType 我正在重新设计一些控件 并注意到组合框项目 列表视图项目和列表框项目都具有相同的模板
  • 手动更改 Asp.Net 会员中的用户名

    我可以通过直接访问 asp net 会员用户表来更改用户名 然而 旧的用户名被保留在一个新行中 并由 asp net 自动分配一个新的 UserID 我该如何阻止这种情况发生 编辑 仅在用户表和角色表中 而不在成员资格表中 var mUse
  • 从字符串中删除非 ASCII 字符

    从网站提取数据时 我收到奇怪的字符 如何删除非扩展 ASCII 字符的任何内容 可以在这里找到更合适的问题 PHP 替换所有支持的语言的所有非字母数字字符 正则表达式替换将是最好的选择 使用 str作为示例字符串并使用它进行匹配 print
  • 捕获内存不足错误

    捕获内存不足错误有什么意义 java lang OutOfMemoryError 在Java中 Yes 以下是一些可能有意义的示例 如果你想通过以下方式处理它优雅地结束你的程序 如果您想向用户显示问题或记录错误 根据您的设计 您甚至可以清理
  • Matlab 标签、绘图、图例

    如何让图例条目的名称中包含下划线 而 MATLAB 不会认为我希望下划线表示下标 一种选择 如果您不打算使用anyTeX 或 LaTeX 格式化图例字符串的方法是设置 Interpreter 财产对于图例对象 none 有两种方法可以做到这
  • Python datetime.strptime() 占用大量 CPU 时间

    我有一些日志解析代码需要将时间戳转换为日期时间对象 我正在使用 datetime strptime 但根据 cProfile 的 cumtime 列 该函数使用了大量的 cputime 时间戳的格式为01 Nov 2010 07 49 33
  • 为忘记密码生成随机令牌的最佳实践

    我想为忘记密码生成标识符 我读到我可以通过使用 mt rand 的时间戳来做到这一点 但有些人说时间戳可能不是每次都是唯一的 所以我在这里有点困惑 我可以使用时间戳来做到这一点吗 Question生成自定义长度的随机 唯一令牌的最佳实践是什
  • JavaScript 中如何判断一个对象是否具有给定的属性

    如何判断一个对象是否x有一个定义的属性y 无论其值如何x y 我目前正在使用 if typeof x y undefined 但这似乎有点笨拙 有没有更好的办法 对象具有属性 如果您正在测试对象本身 而不是其原型链的一部分 上的属性 您可以
  • 我应该在电话的 SQL varchar(length) 中考虑最长的全球电话号码是多少

    我应该在 SQL 中考虑的最长的全球电话号码是多少varchar length 对于电话 考虑因素 表示国家 地区代码 为区号 x 6 个数字用于 Extension 扩展 因此设为 8 space 组之间的空格 即在美国电话中 x xxx
  • 使用 zsh 更改 virtualenv 实例的提示符样式

    我想为我使用或创建的每个 virtualenv 实例更改我的 zsh 提示符样式 我的实际提示是这样的 declare PS1 fg magenta n reset color at fg yellow m reset color in f
  • 在 Java 中包含 Perl

    有没有什么方法可以执行 perl 代码而不必使用 Runtime getRuntime exec 在java应用程序中解析 我自己最近也在研究这个问题 迄今为止我发现的最有希望的事情是内联 JavaCPAN 上的模块 它允许从 Perl 调
  • 使用 http.get node.js 进行承诺

    我正在做 Nodeschool 练习 这 这个问题与上一个问题 HTTP COLLECT 相同 您需要使用http get 然而 这一次你将 提供三个 URL 作为前三个命令行参数 您必须收集每个人向您提供的完整内容 URL 并将其打印到控
  • 使用参数的 npgsql 的类似语句

    我有一个 postgresql 数据库 我想查询表 Locations 以检索与用户输入的名称匹配的所有位置的名称 列名称为 LocationName 我正在使用 ASP net 和 C NpgsqlConnection con new N
  • 如何使用 std::forward_list 在恒定时间内进行范围拼接?

    我想拼接范围 first last 包括两个端点 我有元素的迭代器before first and to last 我可以用splice after 但仅限于线性时间 我相信这种拼接可以在恒定时间内完成 我怎样才能做到这一点std forw
  • 添加自定义维度以请求遥测 - Azure 函数

    我正在使用 v2 x 创建一个新的 Function 应用程序 并且正在集成 Application Insights 以进行请求日志记录 这是自动完成的 因为 Azure Function 现在已与 App Insights 集成 如文档