gpt4 book ai didi

docker - 在 Docker 容器中运行的 .Net Core 3 应用程序中缺少 Application Insights 遥测

转载 作者:行者123 更新时间:2023-12-02 18:07:09 26 4
gpt4 key购买 nike

我们在 AKS 中托管了一个小型 API,它是使用 .Net core 2.2 编写的。它一直运行良好,我们已经在 Azure 门户中看到了我们所有的 App Insights 遥测数据,如预期的那样在 Live Metrics 和 Log Analytics 中。我们最近在一个长时间运行的过程中遇到了一个问题,它给了我们一个无用的错误消息,但似乎升级到 .Net core 3 或更高版本会在它发生时提供更多信息,所以我们着手升级。我们直奔 3.1,升级了所有包(包括 AI 包)以确保它们都与 3.1 兼容,并修复了引入的任何重大更改。在 Visual Studio 中运行时,我们会在 Live Metrics 中看到我们的遥测数据和预期的日志,但是当我们将其构建到 docker 容器中并从那里运行它时,我们会丢失此遥测数据。但是,仍会记录异常。

我们在 startup.cs 中使用以下内容配置 AI:

services.AddSingleton(typeof(ITelemetryChannel),
new InMemoryChannel() { MaxTelemetryBufferCapacity = 10000 });

services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
InstrumentationKey = Configuration.GetValue<string>("ApplicationInsights:InstrumentationKey")
});

我试过使缓冲区变大或变小,我已经降级到 .Net core 3,我试过将 Microsoft.ApplicationInsights.AspNetCore 包降级到 2.8.0(核心的最低版本) 3) 因为那是我们在 2.2 中使用的,但都无济于事。

我还查看了使用 Fiddler 的容器和 VS 的结果。在这两种情况下,您都可以看到大量与 QuickPul​​seService(实时指标)的聊天,但是在使用 VS 或托管在 Docker 中的 2.2 版本时,我可以看到类似这样的内容:

"Documents": [
{
"Timestamp": "2020-02-13T11:28:17Z",
"SequenceNumber": 34,
"Content": {
"__type": "TraceTelemetryDocument:#Microsoft.ManagementServices.RealTimeDataProcessing.QuickPulseService",
"CloudRoleInstance": "XXXXXXXX",
"DocumentStreamIds": [
"all-types-default"
],
"DocumentType": "Trace",
"Id": "fc840f65-29a8-48dc-a425-e5b7aacd03a5",
"InternalNodeName": "XXXXXXXX",
"Message": "Finished processing 159 of 159 events in 3.29 seconds",
"OperationName": "POST Publish/Publish",
"Properties": [
{
"key": "totalEvents",
"value": "159"
},
{
"key": "ActionId",
"value": "a825bb45-a286-4f85-95f8-64cd88871f8d"
},
{
"key": "RequestPath",
"value": "/api/publish"
}
],
"SeverityLevel": "Information",
"Timestamp": {
"DateTime": "2020-02-13T11:28:15.309Z",
"OffsetMinutes": 0
},
"Version": "1.1"
},
"Instance": "XXXXXX",
"DocumentStreamIds": [
"all-types-default"
]
}]

这是我期望在 AI 中看到的消息,当在 docker 中监视核心 3 版本时,QuickPul​​seService 调用根本不包含任何文档。

我不应该在 VS 中运行或在本地使用 Docker Desktop 时将日志记录级别设置为 Debug,这与我们过去使用 .Net core 2.2 时的设置相同。

如果相关,这里还有 dockerfile

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0

WORKDIR /app

COPY --from=build-env /app/out .

CMD ["dotnet", "MyApp.dll"]

我觉得我一定是错过了一些关键配置的一小部分,但在多次阅读 .Net core 3 重大更改列表后,我无法弄清楚那可能是什么。

有没有其他人遇到过这种情况,如果有,您是否设法解决了这个问题?或者你对我有什么想法/指点吗,因为我很困惑。

最佳答案

我最近在将 .NET Core 2.2 Web API 更新到 3.1 时遇到了这个问题。同时,我升级了所有的支持库,包括 Microsoft.ApplicationInsights.AspNetCore,从 2.12.1 升级到 2.14.0。在我这样做之后,我停止在 Application Insights 中获取 SQL 语句。当我将 Microsoft.ApplicationInsights.AspNetCore 降级回 2.12.1(但保持其他一切不变)时,SQL 语句再次出现在 Application Insights 中。

关于docker - 在 Docker 容器中运行的 .Net Core 3 应用程序中缺少 Application Insights 遥测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60212128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com