如何收集 Application Insights SDK 的自诊断日志

使用 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 .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 包括 ErrorCritical 级别)。

Web 应用程序的自我诊断

若要启用自我诊断,请转到 Web 应用程序的当前工作目录并创建 ApplicationInsightsDiagnostics.json 配置文件。

若要禁用自我诊断,请删除配置文件。 即使 Web 应用程序正在运行,也可以启用或禁用自我诊断,而无需重启应用程序。

在大多数情况下,可以将文件与应用程序一起删除。 下面是查找当前工作目录的两种方法:

  • 在 Windows 中,使用进程资源管理器。

    打开进程资源管理器,选择进程,然后打开 “属性 ”对话框。 在“图像文件”下查找当前目录

  • GetCurrentDirectory调用和AppContext.BaseDirectory方法以获取当前工作目录。

在 Windows 中App 服务 Web 应用的自我诊断

  1. 从Azure 门户转到App 服务 Web 应用。

  2. 通过选择“高级工具>转到”转到 Kudu“页。

  3. 在 Kudu 仪表板中,选择“调试控制台>CMD”。

  4. 导航到App 服务 Web 应用所在的目录,例如 D:\home\site\wwwroot

  5. 使用 Kudu 仪表板顶部的“+”符号在 wwwroot 文件夹中创建新文件并将其命名为 ApplicationInsightsDiagnostics.json

    ApplicationInsightsDiagnostics.json文件需要放在 <drive>:\home\site\wwwroot 文件夹中。 并非所有App 服务 Web 应用都位于同一驱动器上。 有些可以位于 C: 驱动器上,有些可能位于 D: 驱动器上。 若要查找它,请检查默认 Kudu 页中的 “站点”文件夹“临时”文件夹 字段。

    显示“站点文件夹”和“Temp 文件夹”字段的屏幕截图。

  6. 编辑以下配置并将其添加到 ApplicationInsightsDiagnostics.json 文件:

    {
        "LogDirectory": "<drive>:\home\site\wwwroot",
        "FileSize": 5120,
        "LogLevel": "Verbose"
    }
    

    注意

    参数LogDirectory应设置为 drive>:\home<的位置,以便轻松访问,但如果有足够的访问权限,则其他位置有效。

  7. 保存文件。

    10 秒后,wwwroot 文件夹中会显示新的日志文件(如 20220307-193542.w3wp.exe.7692.log)。

  8. 删除配置文件或将其重命名为 ApplicationInsightsDiagnostics.bak

    10 秒后,日志记录将停止。

Linux 中App 服务 Web 应用的自我诊断

  1. 在本地计算机上,创建一个文件并将其命名为 ApplicationInsightsDiagnostics.json

  2. 编辑文件并添加以下内容:

    {
        "LogDirectory": ".",
        "FileSize": 5120,
        "LogLevel": "Verbose"
    } 
    
  3. 保存文件。

  4. 从Azure 门户转到App 服务 Web 应用。

  5. 通过选择“高级工具>转到”转到 Kudu“页。

  6. 当浏览器会话启动时,请添加到 /newui URL 的末尾。 浏览器中的 URL 应如下所示 https://<appname>.scm.azurewebsites.net/newui

  7. Enter。 将打开具有新 UI 的 Kudu 页面。

  8. 在左侧菜单中,选择“ 文件管理器”。

  9. 选择“站点”文件夹,然后选择 wwwroot 文件夹。

  10. ApplicationInsightsDiagnostics.json 文件拖放到 wwwroot 文件夹中。

    10 秒后,wwwroot 文件夹中会显示一个新日志文件,例如20220307-193542.w3wp.exe.7692.log

  11. 删除配置文件或将其重命名为 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 反馈社区