我正在Azure Application Insights中监视很多应用程序。在所有这些中,我都为事件、跟踪等添加了一些自定义属性,以便在门户中进行筛选/分组。
是否可以将相同的自定义属性添加到内置的application insight与Azure功能的集成中?
我维护了大量托管在各种环境中的应用程序。其中大约15个是Azure函数。在我的所有应用程序中,我通过日志处理程序将遥测发送到同一个应用程序insights实例。为了过滤/分组信息,我通过日志处理程序将“CustomerName”和“CustomerInstance”属性自动添加到所有事件中。
当我从Azure函数获得标准事件时,很难以有用的方式呈现信息并将其与其他事件关联起来。通过对函数apps进行一些巧妙的命名,我可以在analytics中解析请求url而不是在门户中解析请求url。
可以使用telemetry.context.properties.add()
方法显式添加这些自定义属性。
我用FunctionV2做了一个演示,如下所示:
1.在visual studio中创建函数v2
using Microsoft.ApplicationInsights;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System;
namespace FunctionApp17
{
public static class Function1
{
private static string key = System.Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY",EnvironmentVariableTarget.Process);
private static TelemetryClient telemetry = new TelemetryClient() { InstrumentationKey= key };
[FunctionName("Function1")]
public static void Run([TimerTrigger("*/10 * * * * *")]TimerInfo myTimer, ILogger log)
{
if (!telemetry.Context.Properties.ContainsKey("Function_appName"))
{
telemetry.Context.Properties.Add("Function_appName", "myfuncapp111");
}
else
{
telemetry.Context.Properties["Function_appName"] = "myfuncapp111";
}
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
telemetry.TrackEvent("event111");
telemetry.TrackTrace("trace111");
}
}
}
5.函数应用程序运行后,导航到您的应用程序insights->搜索,您可以添加您在代码中定义的过滤器。
我想有一个共享的应用程序insights实例,将保存来自不同微服务运行的所有日志。 或者说,共享应用程序insights实例并将所有日志和遥测都放在一堆中是不是一个坏主意?
从最近开始,Azure功能开始强制用户使用应用程序洞察来捕获调用日志,而不是使用以前显示20个最近调用的简单系统。 我的旧功能应用程序,没有使用应用程序洞察,仍然工作良好,并显示日志正确。 对于新功能应用程序,我如何禁用应用程序洞察并查看没有它的调用日志?
我们有一堆azure函数记录执行上下文的度量...您似乎无法使用OOTB或(至少在我所看到的情况下)来完成此操作,因为没有一个与我假设的名称为的等价物。 所以..此url(https://docs.microsoft.com/en-us/Azure/azure-functions/functions-monitoring#custom-telemetry-in-c-functions)显示了利用A
你好,拉姆
有什么想法会出什么问题吗?
这只是一个每分钟都会运行半个小时的测试函数。 这似乎部分工作,因为我可以看到一些遥测在AI但不是自定义事件。例如,我可以看到每次运行时都会出现一个请求,以及在WebJob初始化期间的各种跟踪。 我可能没有正确配置某些内容,或者没有以正确的方式获取,但是我找不到任何关于在WebJobs中跟踪自定义事件的文档。 如有任何帮助,我们将不胜感激。