问题描述
使用Azure Application Insights收集AKS中ASP.NET Core应用的监控数据,自动收集请求的Trace情况,用于分析单个请求在应用内部的耗时及处理事件情况,参考Application Insights的文档,功能“Profiler Trace”可以追踪请求详情,但是在中国区的Application Insights中,确没有发现Profiler Trace功能。这里需要如何在Docker文件中配置呢?
期望结果 | 实际结果 |
那这里需要如何设置才能查看到Profiler Trace呢?
问题解决
根据示例的Docker代码,需要在构建镜像时候配置正确的Application Insights Connect String。而在文档中使用的是APPINSIGHTS_INSTRUMENTATIONKEY的方式,所以这里需要修改为APPLICATIONINSIGHTS_CONNECTION_STRING, 并且需要在其中必须包含Profiler 的Endpoint: ProfilerEndpoint=https://profiler.monitor.azure.cn/ 。
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build-env WORKDIR /app # Copy everything and build COPY . ./ # Adding a reference to hosting startup package RUN dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore -v 2.* # Restore & publish the app RUN dotnet publish -c Release -o out # Build runtime image FROM mcr.microsoft.com/dotnet/aspnet:3.1 # Create an argument to allow docker builder to passing in application insights key. # For example: docker build . --build-arg APPINSIGHTS_CONNECTION_STRING=YOUR_APPLICATIONINSIGHTS_INSTRUMENTATION_CONNECTION_STRING ARG APPINSIGHTS_CONNECTION_STRING # Making sure the argument is set. Fail the build of the container otherwise. RUN test -n "$APPINSIGHTS_CONNECTION_STRING" # Light up Application Insights and Service Profiler ENV APPLICATIONINSIGHTS_CONNECTION_STRING $APPINSIGHTS_CONNECTION_STRING ENV ASPNETCORE_HOSTINGSTARTUPASSEMBLIES Microsoft.ApplicationInsights.Profiler.AspNetCore WORKDIR /app COPY --from=build-env /app/out . ENTRYPOINT ["dotnet", "EnableServiceProfilerForContainerApp.dll"]
APPLICATIONINSIGHTS_CONNECT_STRING格式如下:
InstrumentationKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;EndpointSuffix=applicationinsights.azure.cn;IngestionEndpoint=https://chinaeast2-0.in.applicationinsights.azure.cn/;ProfilerEndpoint=https://profiler.monitor.azure.cn/
参考资料
Enable Service Profiler for containerized ASP.NET Core application:https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore/tree/main/examples/EnableServiceProfilerForContainerApp
Profile production applications in Azure with Application Insights:https://docs.microsoft.com/en-us/azure/azure-monitor/app/profiler-overview#view-profiler-data