在 WebApi2 项目中,我有自定义 Claim,我想将它作为每个请求的自定义属性发送。
我实现了 TelemetryInitializer 但 HttpContext 中的 User 始终为空。
public class MyTelemetryInitializer : ITelemetryInitializer
{
var requestTelemetry = telemetry as RequestTelemetry;
if (requestTelemetry == null) return;
var user= HttpContext.Current.User;
// values from header are wokring
requestTelemetry.Context.Properties["abc"] = HttpContext.Current.Request.Headers.Get("abc");
}
Run Code Online (Sandbox Code Playgroud)
实现这一目标的正确方法是什么?
我想将 Application Insights 遥测数据记录到我自己的帐户和客户的帐户中。
使用 TelemetryClient 的多个实例将相同的数据记录到两个不同的 Application Insights 检测密钥是否存在任何问题?或者有更好的方法来做到这一点吗?
我有具有服务总线主题触发器的 azure 函数。我注意到当函数没有任何异常执行时,所有 tracewriter.loginformation 消息都会正确显示在应用程序洞察中。但是如果发生任何异常,那么晚上会显示 log.information 或 appinsights 中显示 log.error
我的功能在消费计划下运行。我注意到我有 2 个 catch 块。
catch(validation ex)
{
log.error;
}
catch(exception ex)
{
log.error;
throw;
}
Run Code Online (Sandbox Code Playgroud)
第一个 catch 块中的所有错误都被记录下来,但第二个 catch 块中的所有错误都没有被记录下来。我注释掉了 throw 并且它开始记录到 appinsights .. 请指教。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<Version>1.6.15</Version>
<DependsOnNETStandard>netstandard1.5</DependsOnNETStandard>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningsAsErrors />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="2.1.0-beta1" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Http" Version="1.0.0-beta1" />
<PackageReference Include="Microsoft.Azure.WebJobs.ServiceBus" Version="2.1.0-beta1" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.0-alpha6" />
<PackageReference Include="System.IO" Version="4.1.0" />
<PackageReference Include="System.Runtime" Version="4.1.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
</ItemGroup> …Run Code Online (Sandbox Code Playgroud) 我有一个 .NET Core 2.1 控制台应用程序。我已经添加了所需的所有 Nuget 包。
private static IConfiguration Configuration { get; set; }
static void Main(string[] args)
{
ServiceCollection services = new ServiceCollection();
ConfigureServices(services);
var serviceProvider = services.BuildServiceProvider();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>()
var service = serviceProvider.GetService<TestClass>();
service.TimmerTriggerTask();
}
private static void ConfigureServices(IServiceCollection services)
{
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
services.AddApplicationInsightsTelemetry("8028437c-1111-2222-8293-2cf3f3f106a8"); //instrumentation key
services.AddLogging(builder => builder.AddConsole());
}
TestClass.cs
public class TestClass
{
private readonly ILogger<TestClass> _logger;
public TestClass(ILogger<TestClass> logger)
{
Console.WriteLine("Ctor");
_logger = logger; …Run Code Online (Sandbox Code Playgroud) .net console-application azure azure-application-insights asp.net-core-2.1
我正在尝试从我们的 .net 核心 MVC 应用程序中获取一些关于应用程序洞察的额外信息。我发现了以下帖子: 在 Application Insights 指标中为每个请求添加自定义属性
在答案中,他们使用自定义遥测初始值设定项,如果您想要一些请求数据或其他内容,则可以使用。
现在我们的应用程序中有一组中间件。他们将一些标题翻译成可读的内容。
当然,我们可以记录标题并搜索它们可以具有的所有不同值。但是我们希望将中间件的结果转化为应用洞察的属性。
任何人都知道如何将中间件的一些结果用于 Application Insights 请求遥测的属性?
我对 Application Insights 完全是个菜鸟,遗憾的是,经过一整天的尝试,我根本无法让它工作。我尝试使用以下代码:
this.telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault());
this.telemetryClient.TrackTrace($"Test", Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Warning);
Run Code Online (Sandbox Code Playgroud)
但是,当我转到应用程序洞察窗口并显示当前调试会话中的所有遥测数据时,没有记录任何内容。一位用户说缺少 ApplicationInsights.config 文件(一个空的文件可以很好地进行调试),我创建了一个但它没有任何改变。
然后我尝试了我能找到的最简单的控制台应用程序 - https://docs.microsoft.com/en-us/azure/azure-monitor/app/console。我没有检测密钥,从我今天阅读的数百个论坛来看,如果您将其留空,它仍应出现在调试遥测中。唉,Application Insights 中仍然没有任何内容。
我怎样才能让它工作?我只想在查询“调试遥测”时在 Visual Studio Application Insights 窗口中看到一条 Trace 消息。
我有很多天蓝色的功能。我想将每个 azure 函数的日志存储在一个位置。我首先将所有日志存储在 azure append blob 中。但现在我想实时存储和可视化。我找到了一些解决方案,如loggly.com的集中式解决方案。天蓝色有什么解决方案吗?如果是,那是什么?如果没有,我还有什么其他选择?
logging azure centralized azure-application-insights azure-functions
我在这里阅读了基于日志的指标和预聚合指标之间的区别: https: //learn.microsoft.com/en-us/azure/azure-monitor/app/pre-aggreated-metrics-log-metrics
后来我遇到了事件计数器: https://learn.microsoft.com/en-us/azure/azure-monitor/app/eventcounters
它们似乎都被用来跟踪某种类型的指标。我看到 EventCounters 文档没有提到任何(预)聚合,但除此之外,两者之间有什么区别以及何时使用 EventCounter 而不是调用 TelemetryClient.TrackMetric()?
我们的应用程序正在使用天蓝色应用程序见解。我读到的是,使用应用程序洞察端到端跟踪,我们甚至可以获取在数据库中执行的查询以及该查询花费了多少时间。
但如屏幕截图所示,Azure App Insights 显示有 3 个对数据库的调用,但没有在这些调用中对数据库执行的实际查询。
我需要知道的是,我需要做什么才能获取针对数据库执行的查询?
我正在尝试使用https://dev.applicationinsights.io/使用 Azure App Insights API 使用此“https://api.applicationinsights.io/v1/apps/889f31e2-8281-4d8b-bb80- 获取指标数据” 53a9f83d4a09/metrics/requests/duration?interval=PT1H", 通过标头传递 api 密钥。但无法获取查询:尝试过此操作: https: //api.applicationinsights.io/v1/apps/889f31e2-8281-4d8b-bb80-53a9f83d4a09/Query/traces | 其中 operation_Id 包含 62c5a318-c2cf-434e-a102-0e6efc0a84e7?interval=P7D
获取状态代码为 NotFound。
有什么建议吗,我错过了什么吗?
azure-application-insights ×10
azure ×7
c# ×3
logging ×3
.net ×2
.net-core ×1
centralized ×1
rest ×1
telemetry ×1