Azure函数未将自定义事件记录到应用程序洞察。

4
我已经创建了一个服务总线触发的Azure函数,并希望在应用洞察中记录自定义事件。
 private static string key = TelemetryConfiguration.Active.InstrumentationKey =
            System.Environment.GetEnvironmentVariable(
                "APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process);

        private static TelemetryClient telemetryClient =
            new TelemetryClient() { InstrumentationKey = key };

        [FunctionName("Function1")]
        public static void Run([ServiceBusTrigger("xxxxx", "xxxxx", AccessRights.Manage, Connection = "SBConnectionKey")]string mySbMsg, ILogger logger, TraceWriter log)
        {
            log.Info($"C# ServiceBus topic trigger function processed message: {mySbMsg}");

            telemetryClient.Context.Cloud.RoleName = "AIFunction";
            logger.LogMetric("test", 123);

            telemetryClient.TrackEvent("Ack123 Recieved");
            telemetryClient.TrackMetric("Test Metric", DateTime.Now.Millisecond);
       }

我只能看到这个跟踪日志:log.Info($"C# ServiceBus topic trigger function processed message: {mySbMsg}");,但是自定义事件和指标没有记录到应用程序洞察中。有什么想法是怎么回事吗?


我首先要验证的是你是否得到了预期的仪表盘密钥。它应该既被设置,又向你认为的资源发送遥测数据。 - John Gardner
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
4

回答您的明确问题:

我的遥测发送有什么问题或在应用程序洞察门户中如何找到它?

我创建了几乎相同的代码并进行了测试。您可以分析存储库。我部署了函数并获得了以下结果:

Event found through query

Metric found through query

回答您的隐含问题:

如何使用应用程序洞察?

一开始使用应用程序洞察查询语言可能有些棘手,我发现这个简明文件很有帮助。在使用此监视工具时需要考虑其他要素:

  1. 遥测发送后,在应用程序洞察门户中看到它存在一定的滞后。实时监视将是一种昂贵的工具。
  2. 过去,我遇到了相同的问题,问题在于事件/指标名称没有在遥测名称中找到,而是在详细信息中的某个位置。这个问题可能会涉及到它。因此,我们决定添加更多细节并使用方法和MetricTelemetry类。
  3. 虽然应用程序洞察可能看起来令人困惑,但它是一个强大的工具,值得投资时间学习。

1
嗨,Farrukh Normuradov,感谢您详细的回答。非常感谢您的努力。但是您使用了HttpTrigger。我看到它可以与HttpTrigger一起工作,但无法与ServiceBusTrigger一起工作。我们是否需要添加其他内容才能使其正常工作?谢谢。 - CGN007
@CGN007,我已经使用Service Bus Queue触发器进行了测试。我将代码添加到了repo中。您可以在这里这里找到结果。我可以确认它是有效的。只需部署我的函数应用程序并进行测试即可。 - Farrukh Normuradov
@CGN007,你有机会尝试我为你准备的东西了吗? - Farrukh Normuradov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,