使用 Application Insights SDK 通过 Application Insights 自动检测或手动检测应用程序时,可能会遇到 Application Insights SDK 本身的问题。 在此方案中,需要 Application Insights SDK 的诊断日志来发现和诊断 Application Insights 的问题。
本文介绍如何收集以下 Application Insights SDK 的自诊断日志:
- Application Insights .NET/.NET Core Framework SDK
- Application Insights Java 2.x
- Application Insights Java 3.x
Application Insights .NET/.NET Core Framework SDK
从 Application Insights .NET/.NET Core Framework SDK 的版本 2.18.0-beta2 开始,会提供“自我诊断”功能,从 SDK 本身捕获日志并将其写入指定目录中的日志文件。
自我诊断配置
使用包含以下内容的名为 ApplicationInsightsDiagnostics.json 的文件配置自我诊断:
{
"LogDirectory": "<LogDirectory>",
"FileSize": <FileSize>,
"LogLevel": "<LogLevel>"
}
注意
- 用于自我诊断的配置文件必须具有用于分析的 Application Insights .NET/.NET Core Framework SDK 的有效参数。 如果文件无效或格式不正确,SDK 将忽略它,并且不会启用自我诊断。 但是,这不会影响受监视应用程序的正常运行。
- 此配置文件不能超过 4 KB( KB)。 否则,只会读取前 4 KB 的内容。
- Application Insights .NET/.NET Core Framework SDK 将尝试每隔 10 秒读取配置文件,并创建或循环覆盖日志文件。
下面是配置参数的一些说明:
配置参数 | 说明 |
---|---|
LogDirectory |
存储日志文件的目录。 它可以是 Web 应用程序的当前工作目录的绝对路径或相对路径。 此日志文件命名为 YearMonthDay-HourMinuteSecond.ExecutableName.ProcessId.log, 例如20220307-193542.w3wp.exe.7692.log。 文件名以创建文件时生成的时间戳开头。 |
FileSize |
一个正整数,指定以 KB 为单位的日志文件大小。 此值必须介于 1 兆字节(MB)和 128 MB(含)之间,否则该值将舍入到最接近的上限或下限。 日志文件不会超过此配置的最大大小。 |
LogLevel |
要捕获的事件级别。 此值必须与其中一个字段 EventLevel 匹配。 较低的严重性级别包括更高的严重性级别(例如, Warning 包括 Error 和 Critical 级别)。 |
Web 应用程序的自我诊断
若要启用自我诊断,请转到 Web 应用程序的当前工作目录并创建 ApplicationInsightsDiagnostics.json 配置文件。
若要禁用自我诊断,请删除配置文件。 即使 Web 应用程序正在运行,也可以启用或禁用自我诊断,而无需重启应用程序。
在大多数情况下,可以将文件与应用程序一起删除。 下面是查找当前工作目录的两种方法:
在 Windows 中,使用进程资源管理器。
打开进程资源管理器,选择进程,然后打开 “属性 ”对话框。 在“图像文件”下查找当前目录。
GetCurrentDirectory
调用和AppContext.BaseDirectory
方法以获取当前工作目录。
在 Windows 中App 服务 Web 应用的自我诊断
从Azure 门户转到App 服务 Web 应用。
通过选择“高级工具>转到”转到 Kudu“页。
在 Kudu 仪表板中,选择“调试控制台>CMD”。
导航到App 服务 Web 应用所在的目录,例如 D:\home\site\wwwroot。
使用 Kudu 仪表板顶部的“+”符号在 wwwroot 文件夹中创建新文件并将其命名为 ApplicationInsightsDiagnostics.json。
ApplicationInsightsDiagnostics.json文件需要放在 <drive>:\home\site\wwwroot 文件夹中。 并非所有App 服务 Web 应用都位于同一驱动器上。 有些可以位于 C: 驱动器上,有些可能位于 D: 驱动器上。 若要查找它,请检查默认 Kudu 页中的 “站点”文件夹 和 “临时”文件夹 字段。
编辑以下配置并将其添加到 ApplicationInsightsDiagnostics.json 文件:
{ "LogDirectory": "<drive>:\home\site\wwwroot", "FileSize": 5120, "LogLevel": "Verbose" }
注意
参数
LogDirectory
应设置为 drive>:\home 下<的位置,以便轻松访问,但如果有足够的访问权限,则其他位置有效。保存文件。
10 秒后,wwwroot 文件夹中会显示新的日志文件(如 20220307-193542.w3wp.exe.7692.log)。
删除配置文件或将其重命名为 ApplicationInsightsDiagnostics.bak。
10 秒后,日志记录将停止。
Linux 中App 服务 Web 应用的自我诊断
在本地计算机上,创建一个文件并将其命名为 ApplicationInsightsDiagnostics.json。
编辑文件并添加以下内容:
{ "LogDirectory": ".", "FileSize": 5120, "LogLevel": "Verbose" }
保存文件。
从Azure 门户转到App 服务 Web 应用。
通过选择“高级工具>转到”转到 Kudu“页。
当浏览器会话启动时,请添加到
/newui
URL 的末尾。 浏览器中的 URL 应如下所示https://<appname>.scm.azurewebsites.net/newui
。按 Enter。 将打开具有新 UI 的 Kudu 页面。
在左侧菜单中,选择“ 文件管理器”。
选择“站点”文件夹,然后选择 wwwroot 文件夹。
将 ApplicationInsightsDiagnostics.json 文件拖放到 wwwroot 文件夹中。
10 秒后,wwwroot 文件夹中会显示一个新日志文件,例如20220307-193542.w3wp.exe.7692.log。
删除配置文件或将其重命名为 ApplicationInsightsDiagnostics.bak。
10 秒后,日志记录将停止。
Application Insights Java 2.x
可以为 Application Insights Java 2.6 或更低版本收集诊断日志。 为此,请在ApplicationInsights.xml配置文件的根节点(项目的资源文件夹中)下添加一个<SDKLogger>
元素。 在元素中 <SDKLogger>
,可以指示记录器输出到文件。
下面是ApplicationInsights.xml文件的示例:
<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
<Level>TRACE</Level>
<UniquePrefix>AI</UniquePrefix>
<BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>
有关详细信息,请参阅 Java Web 项目中Azure 应用程序见解疑难解答。
Application Insights Java 3.x
可以使用“自我诊断”功能为 Application Insights Java 3.x 收集诊断日志。 为此,请参阅 自我诊断。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。