我想知道应用程序见解如何与cookie一起使用,因为我想了解用户和会话跟踪,所以我一直在研究和...
以下是该理论的简要介绍:
每当Application Insights SDK收到没有应用程序洞察用户跟踪cookie的请求(由Application Insights JS代码段设置)时,它将设置此cookie并启动新会话.(来自apmtips)
2.
UserTelemetryInitializer使用在用户浏览器中运行的Application Insights JavaScript检测代码生成的ai_user cookie中提取的值,更新所有遥测项目的User上下文的Id和AcquisitionDate属性.
SessionTelemetryInitializer更新所有遥测项的Session上下文的Id属性,其值从用户浏览器中运行的ApplicationInsights JavaScript检测代码生成的ai_session cookie中提取.(来自azure文档(使用ApplicationInsights.config配置Application Insights SKD))
所以有两个cookie:ai_session和ai_user.
这是我的问题:
试图删除它们我使用ASP.NET Web应用程序使用Web Api的默认模板创建了一个项目,其中包括MVC和Web Api.
做研究我发现这种方法禁用它们但我没有任何WebSessionTrackingTelemetryModule.所以我注释掉了"UserTelemetryInitializer"和"SessionTelemetryInitializer",这就是我所拥有的:
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SyntheticTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ClientIpHeaderTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserAgentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationNameTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationIdTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />-->
<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SessionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" …Run Code Online (Sandbox Code Playgroud) 我们刚刚为我们的应用程序实现了Azure Application Insights服务.该服务记录了我们所有的远程依赖项,但我们使用的Redis调用Session和.Net OutputCache.Redis包装器是StackExchange.Redis.StrongName.
有人遇到过这个问题吗?
尝试从docker镜像运行我的应用程序时收到以下错误:
Error: assembly specified in the dependencies manifest was not found -- package: 'Microsoft.ApplicationInsights.AspNetCore', version: '1.0.2', path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'
Run Code Online (Sandbox Code Playgroud)
泊坞窗图像基于microsoft/aspnetcore.
使用dotnet restore和dotnet publish在docker镜像上构建的文件microsoft/aspnetcore-build:1.1.0-projectjson
在"targets"中{app}.deps.json我有:
"Microsoft.ApplicationInsights.AspNetCore/1.0.2": {
"dependencies": {
"Microsoft.ApplicationInsights": "2.1.0",
"Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0",
"Microsoft.AspNetCore.Http.Abstractions": "1.0.0",
"Microsoft.AspNetCore.Mvc.ViewFeatures": "1.0.1",
"Microsoft.Extensions.Configuration": "1.0.0",
"Microsoft.Extensions.DiagnosticAdapter": "1.0.0",
"Microsoft.Extensions.Logging.Abstractions": "1.0.0",
"System.Net.NameResolution": "4.3.0"
},
"runtime": {
"lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll": {}
},
"compile": {
"lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll": {}
}
},
Run Code Online (Sandbox Code Playgroud)
我的已lib发布输出中没有文件夹,但我确实已Microsoft.ApplicationInsights.AspNetCore发布输出的根目录.
我觉得我错过了一些明显的东西.任何帮助,将不胜感激.
更新:
将Application Insights更新到2.0.0无效.
删除Application Insights只会将问题移动到另一个程序集.
切换到独立部署无效.
添加COREHOST_TRACE=1 …
我正在尝试将异常记录到Application Insights.我通过TelemetryClient.TrackException直接打电话成功完成了这项工作.但是,我想在我的代码中抽象出来,以防我将来想要登录其他平台,所以我想只关注ILogger接口.
我发现你可以使用ILoggerFactory.AddApplicationInsights(在这里实现),但不管我做了什么,我都没有看到日志在ApplicationInsights中出现.
以下是我的代码:
Startup.cs
IConfigurationRoot Configuration { get; set; }
ILoggerFactory LoggerFactory { get; set; }
IServiceProvider ServiceProvider { get; set; }
public Startup( IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory )
{
this.LoggerFactory = loggerFactory;
string configurationFilePath = "abc.json";
this.Configuration = new ConfigurationBuilder()
.SetBasePath( hostingEnvironment.ContentRootPath )
.AddJsonFile( configurationFilePath, optional: true, reloadOnChange: true )
.AddEnvironmentVariables()
.Build();
}
public void Configure(
IApplicationBuilder applicationBuilder,
IHostingEnvironment hostingEnvironment,
ILoggerFactory loggerFactory,
IServiceProvider serviceProvider )
{
this.ServiceProvider = serviceProvider;
loggerFactory.AddApplicationInsights( serviceProvider ); …Run Code Online (Sandbox Code Playgroud) c# logging azure-application-insights azure-web-app-service asp.net-core
Application Insight配置存在一些混淆.它可以使用Visual Studio在应用程序本身中配置,也可以在使用Azure Portal的App Service中配置.
当我使用Visual Studio 将Application Insights遥测添加到我的asp.net core 2.0网站时,它将以下配置添加到appsettings.json:
{
// Changes to file post adding Application Insights Telemetry:
"ApplicationInsights": {
"InstrumentationKey": "10101010-1010-1010-1010-101010101010"
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在startup.cs中配置AppInsights服务,如下所示:
var instrumentationKey= Configuration.GetSection("ApplicationInsights:InstrumentationKey").Value;
services.AddApplicationInsightsTelemetry(opt => opt.InstrumentationKey = instrumentationKey);
Run Code Online (Sandbox Code Playgroud)
但是,当我在Azure门户中的App Service中打开Application Insights选项卡时,它仍建议连接Application Insight.然后,向导会向配置添加新的Intrumentation Key:
仅使用APPINSIGHTS_INSTRUMENTATIONKEY有什么副作用(例如在Visual Studio工具中).我的意思是我会在startup.cs中写:
var instrumentationKey= Configuration.GetSection("APPINSIGHTS_INSTRUMENTATIONKEY ").Value;
services.AddApplicationInsightsTelemetry(opt => opt.InstrumentationKey = instrumentationKey);
Run Code Online (Sandbox Code Playgroud)我根据Tseng的回答得出结论,最好在Azure门户和appsettings.json中使用APPINSIGHTS_INSTRUMENTATIONKEY.
ASP.NET核心既了解APPINSIGHTS_INSTRUMENTATIONKEY和ApplicationInsights:InstrumentationKey,但Azure的门户网站只有第一个,它必须是环境变量.如果您使用了第二个,并尝试从代码中的某个位置的config中读取它,您可以轻松地在Azure门户和在Azure中运行的应用程序中使用不同的值.
此外,如果您从配置中手动读取检测键,则应首先查看APPINSIGHTS_INSTRUMENTATIONKEY然后ApplicationInsights:InstrumentationKey:
var instrumentationKey= Configuration.GetSection("APPINSIGHTS_INSTRUMENTATIONKEY")?.Value
?? Configuration.GetSection("ApplicationInsights:InstrumentationKey")?.Value;
Run Code Online (Sandbox Code Playgroud)
因为那是多么services.AddApplicationInsightsTelemetry(Configuration);有效.以防万一Azure …
visual-studio azure-web-sites azure-application-insights asp.net-core
我有以下代码,没有任何编译器警告或错误:(它是一个网络作业)
然而,在行: builder.Build 我得到了这个异常:
System.InvalidOperationException: 'Unable to resolve service for type 'Microsoft.AspNetCore.Hosting.IHostingEnvironment' while attempting to activate 'Microsoft.AspNetCore.Hosting.DefaultApplicationInsightsServiceConfigureOptions
Run Code Online (Sandbox Code Playgroud)
代码如下:
public class Program
{
private static IConfiguration Configuration { get; set; }
static async Task Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
b.AddTimers();
b.AddServiceBus(sbOptions =>
{
sbOptions.ConnectionString = Configuration["AzureWebJobsServiceBus"];
});
});
builder.ConfigureServices((context, s) => { ConfigureServices(s); s.BuildServiceProvider(); });
builder.ConfigureLogging(logging =>
{
string appInsightsKey = Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(appInsightsKey))
{
// This uses the options callback to explicitly …Run Code Online (Sandbox Code Playgroud) 我正在使用Microsoft Application Insights我的Web应用程序.我使用Application Insights TraceListener NuGet包进行日志记录.这非常有效.
现在我想切换到NLog.我添加了Microsoft.ApplicationInsights.NLogTargetNuGet包并在我的NLog配置文件中添加了一个新的NLog目标:
<target name='ai' xsi:type='ApplicationInsights' />
Run Code Online (Sandbox Code Playgroud)
NLog引发异常:
Target cannot be found: 'ApplicationInsights'
Run Code Online (Sandbox Code Playgroud)
我也试过通过扩展添加程序集,如下所示:
<extensions>
<add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>
Run Code Online (Sandbox Code Playgroud)
但它也没有用.
有什么建议?
我有以下配置,但没有跟踪到Application Insights(否则Application Insights可以正常用于其他日志记录,Azure诊断侦听器也在工作并捕获跟踪).难道我做错了什么?
<system.diagnostics>
<trace autoflush="true" indentsize="0">
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
</add>
<add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
</listeners>
</trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud) system.diagnostics azure azure-diagnostics azure-application-insights
社区
我在将Application Insights连接到ASP WEB API Core时遇到了麻烦.按照标准手册,我仍无法在AppInsights帐户中找到任何记录.我使用了很多手册,但它们完全相同,并描述了如何为ASP Core(而不是API Core)配置App Insights.所以我想知道是否需要一些特殊配置(或nuget包或其他)来使AppInsights跟踪我的API服务请求?
一旦我无法使AppInsights开箱即用,我仍然可以创建TelemetryClient实例并手动发布数据,但在我的情况下这是不可取的.
重要提示:我正在使用VS 2017 RC,Web APi Core项目(csproj)
UPD
csproj文件内容:
<Project ToolsVersion="15.0" Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.0</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="1.0.0-msbuild1-update1" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild1-final" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0-msbuild2-update1" />
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="1.0.0-msbuild1-update1" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild1-final" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0-msbuild2-update1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="1.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.0.1" />
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.2.0" />
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="1.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Cors" Version="1.0.1" />
<PackageReference Include="Microsoft.AspNetCore.ResponseCompression" Version="1.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.0.1" />
<PackageReference …Run Code Online (Sandbox Code Playgroud) 我正在尝试对应用洞察中的一些结果进行分组,并且正在努力
如果我要列出我的结果,它看起来像
Product Version
A 1
B 2
A 2
A 1
B 3
B 3
Run Code Online (Sandbox Code Playgroud)
如您所见,我有 2 个产品(A 和 B),每个产品都有一个版本号。
我试图将这些分组并提供一个计数,所以我的最终结果是
Product Version Count
A 1 2
A 2 1
B 2 1
B 3 2
Run Code Online (Sandbox Code Playgroud)
目前,我的方法一团糟,因为我手动执行此操作
customEvents
| summarise A1 = count(customEvents.['payload.prod'] == "A" and myEvents.['payload.vers'] == "1"),
| summarise A2 = count(customEvents.['payload.prod'] == "A" and myEvents.['payload.vers'] == "2")
Run Code Online (Sandbox Code Playgroud)
等等
我不知道如何聚合这些,以便它可以按产品和版本分组,然后计算每个出现的次数
azure-application-insights ×10
asp.net-core ×4
c# ×4
azure ×3
asp.net ×2
logging ×2
.net ×1
.net-core ×1
azure-devops ×1
docker ×1
nlog ×1
redis ×1