当前位置: 首页 > 知识库问答 >
问题:

如何在应用程序洞察中跟踪来自Azure WebJob的自定义事件?

方树
2023-03-14
TelemetryClient tc = new TelemetryClient();
tc.TrackEvent("EventName");
using System.Configuration;
using System.Diagnostics;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace WebJobs
{
  public class Program
  {
    public static void Main()
    {
      JobHostConfiguration config = new JobHostConfiguration();
      config.UseTimers();

      using (LoggerFactory loggerFactory = new LoggerFactory())
      {
        string key = ConfigurationManager.AppSettings["webjob-instrumentation-key"];
        loggerFactory.AddApplicationInsights(key, null);
        loggerFactory.AddConsole();
        config.LoggerFactory = loggerFactory;
        config.Tracing.ConsoleLevel = TraceLevel.Off;

        if (config.IsDevelopment)                
          config.UseDevelopmentSettings();                

        JobHost host = new JobHost(config);

        host.RunAndBlock();
      }
    } 
  }
}

这只是一个每分钟都会运行半个小时的测试函数

using Core.Telemetry;
using Microsoft.ApplicationInsights;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Timers;
using System;
using System.Collections.Generic;

namespace WebJobs.Functions
{
  public class TestFunctions
  {
    public void TelemetryTest([TimerTrigger(typeof(Schedule))] TimerInfo timer)
    {
      TelemetryClient tc = new TelemetryClient();
      tc.TrackEvent("TelemetryTestEvent");
    }

    // schedule that will run every minute
    public class Schedule : DailySchedule
    {
        private static readonly string[] times =
        {
          "12:01","12:02","12:03","12:04","12:05","12:06","12:07","12:08","12:09","12:10",
          "12:11","12:12","12:13","12:14","12:15","12:16","12:17","12:18","12:19","12:20",
          "12:21","12:22","12:23","12:24","12:25","12:26","12:27","12:28","12:29","12:30"
        };

        public Schedule() : base(times) { }
    }
  }
}

这似乎部分工作,因为我可以看到一些遥测在AI但不是自定义事件。例如,我可以看到每次testfunctions.telemetrytest()运行时都会出现一个请求,以及在WebJob初始化期间的各种跟踪。

我可能没有正确配置某些内容,或者没有以正确的方式获取TelemetryClient,但是我找不到任何关于在WebJobs中跟踪自定义事件的文档。

如有任何帮助,我们将不胜感激。

共有1个答案

诸彬郁
2023-03-14

尝试将instrumentationkey设置为Explicit:

tc.Context.InstrumentationKey = "<your_key>";

根据文档,您应该可以使用

System.Environment.GetEnvironmentVariable(
            "APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process)

如果您已经设置了应用程序洞察集成。

 类似资料:
  • 按照此链接中的说明,我在Azure中创建了一个Web应用程序,在.NET core framework中创建了一个Web API。 现在在我的Web应用程序中,启用了应用程序Insights。 在WebAPI中有一些类似的日志记录代码。 默认情况下,它会打印一些跟踪日志(类似于应用程序洞察)。 现在我的要求是它不应该打印应用程序Insights中的所有默认日志。它只能打印带有的文件。如何和在何处禁

  • 我想有一个共享的应用程序insights实例,将保存来自不同微服务运行的所有日志。 或者说,共享应用程序insights实例并将所有日志和遥测都放在一堆中是不是一个坏主意?

  • 我想我找遍了所有地方,但我找不到任何图表或报告与参考交通数据。我使用的是在预览Azure门户中存储数据的最新版本。在旧的应用程序中,insights(在VS Online中)就有这个数据。 有没有人知道在新门户中是否可以找到它,以及在哪里可以找到它? 提前道谢!

  • 我正在Windows Server 2016 Azure VM中运行无代码版本的Application Insights。通过SDK,我知道可以添加自定义遥测,这样我就可以更新出现在度量中的cloudRoleName值。 我的问题是,对于由应用程序洞察推动的性能计数器,它只为进程相关数据提供了一个值,如,但我确实希望能够将该进程与应用程序池(理想情况下是与cloudRoleName)相关联 我可以

  • Google App Engine现在通过新的第二代标准环境支持Go 1.11。在将较旧的标准环境应用程序转换为第二代应用程序时,如何将来自应用程序引擎基础结构的跟踪信息与我使用OpenCensus添加到应用程序中的自定义跟踪相结合并不明显。 尽管我已经创建了一个堆栈驱动程序导出器并注册了跟踪,但我没有在附加到入站请求的堆栈驱动程序控制台中看到自定义跟踪信息。

  • 我正在Azure Application Insights中监视很多应用程序。在所有这些中,我都为事件、跟踪等添加了一些自定义属性,以便在门户中进行筛选/分组。 是否可以将相同的自定义属性添加到内置的application insight与Azure功能的集成中? 我维护了大量托管在各种环境中的应用程序。其中大约15个是Azure函数。在我的所有应用程序中,我通过日志处理程序将遥测发送到同一个应用