你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Monitor 代理收集 IIS 日志

Internet Information Services (IIS) 将数据记录到 Windows 计算机的本地磁盘。 本文介绍如何通过创建数据收集规则 (DCR),使用 Azure Monitor 代理从受监视的计算机收集 IIS 日志。

先决条件

如果要完成此过程,需要:

  • Log Analytics 工作区,你在其中至少拥有参与者权限

  • 一个或两个数据收集终结点,具体取决于虚拟机和 Log Analytics 工作区是否位于同一区域。

    有关详细信息,请参阅如何根据部署设置数据收集终结点

  • 在工作区中创建数据收集规则对象的权限

  • 运行 IIS 的 VM、虚拟机规模集或已启用 Arc 的本地服务器。

    • W3C 格式的 IIS 日志文件必须存储在运行 Azure Monitor 代理的计算机的本地驱动器上。
    • 必须使用行尾来描述日志文件中的每个条目。
    • 日志文件不得允许会以新条目覆盖文件的循环日志记录、日志轮换,或者会移动文件并打开同名的新文件的重命名。

创建用于收集 IIS 日志的数据收集规则

数据收集规则定义:

  • Azure Monitor 代理扫描哪些源日志文件以查找新事件。
  • Azure Monitor 如何在引入期间转换事件。
  • Azure Monitor 将数据发送到的目标 Log Analytics 工作区和表。

可以定义数据收集规则,以将数据从多台计算机发送到多个 Log Analytics 工作区,包括不同区域或租户中的工作区。 在 Analytics 工作区所在的同一区域中创建数据收集规则。

注意

若要跨租户发送数据,必须先启用 Azure Lighthouse

若要在 Azure 门户中创建数据收集规则,请执行以下操作:

  1. 在的“监视”菜单中,选择“数据收集规则”。

  2. 选择“创建”,创建新的数据收集规则和关联。

    显示“数据收集规则”屏幕上的“创建”按钮的屏幕截图。

  3. 输入规则名称,并指定订阅、资源组、区域、平台类型和数据收集终结点:

    • “区域”指定将在其中创建 DCR 的位置。 虚拟机及其关联可以处于租户中的任何订阅或资源组中。
    • “平台类型”指定此规则可应用到的资源类型。 “自定义”选项允许 Windows 和 Linux 两种类型。
    • 数据收集终结点指定用于收集数据的数据收集终结点。 此数据收集终结点必须与 Log Analytics 工作区位于同一区域。 有关详细信息,请参阅如何根据部署设置数据收集终结点

    显示“数据收集规则”屏幕的“基本信息”选项卡的屏幕截图。

  4. 在“资源”选项卡上:

    1. 选择“+ 添加资源”并将资源关联到数据收集规则。 资源可以是虚拟机、虚拟机规模集和 Azure Arc for servers。 Azure 门户将在尚未安装 Azure Monitor 代理的资源上安装 Azure Monitor 代理。

      重要

      门户可以在目标资源上启用系统分配的托管标识,还包括现有的用户分配的标识(如有)。 对于现有应用程序,除非在请求中指定用户分配的标识,否则计算机将默认使用系统分配的标识。

    2. 选择“启用数据收集终结点”。

    3. 为与数据收集规则关联的每个虚拟机选择数据收集终结点。

      此数据收集终结点将配置文件发送到虚拟机,并且必须与虚拟机位于同一区域。 有关详细信息,请参阅如何根据部署设置数据收集终结点

    显示“数据收集规则”屏幕的“资源”选项卡的屏幕截图。

  5. 在“收集和传递”选项卡上,选择“添加数据源”以添加数据源并设置目标。

  6. 选择“IIS 日志”。

    Azure 门户窗体的屏幕截图,用于在数据收集规则中选择客户性能计数器。

  7. 指定文件模式以确定日志文件所在的目录。

  8. 在“目标”选项卡上,为数据源添加目标

    此屏幕截图显示了用于在数据收集规则中添加数据源的 Azure 门户表单。

  9. 选择“查看 + 创建”,查看数据收集规则的详细信息以及与虚拟机集的关联。

  10. 选择“创建”,创建数据收集规则。

注意

创建数据收集规则后,可能需要最多 5 分钟的时间来将数据发送到目标。

示例日志查询

  • 按主机的 URL www.contoso.com 统计 IIS 日志条目的数量。

    W3CIISLog 
    | where csHost=="www.contoso.com" 
    | summarize count() by csUriStem
    
  • 查看每个 IIS 计算机接收的总字节数。

    W3CIISLog 
    | summarize sum(csBytes) by Computer
    

警报规则示例

  • 针对返回状态为 500 的任何记录创建警报规则。

    W3CIISLog 
    | where scStatus==500
    | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
    

疑难解答

使用以下步骤排查 IIS 日志的收集问题。

检查是否已收到任何 IIS 日志

首先通过在 Log Analytics 中运行以下查询,检查是否为 IIS 日志收集了任何记录。 如果查询未返回任何记录,请查看其他部分以了解可能的原因。 此查询将查找过去两天的条目,但可以修改为其他时间范围。

W3CIISLog
| where TimeGenerated > ago(48h)
| order by TimeGenerated desc

验证代理是否成功发送了检测信号

验证 Azure Monitor 代理是否正常通信,方法是在 Log Analytics 中运行以下查询,以检查检测信号表中是否有任何记录。

Heartbeat
| where TimeGenerated > ago(24h)
| where Computer has "<computer name>"
| project TimeGenerated, Category, Version
| order by TimeGenerated desc

验证是否正在创建 IIS 日志

查看日志文件的时间戳,并打开最新的日志文件以查看其中是否存在最新的时间戳。 IIS 日志文件的默认位置为 C:\inetpub\logs\LogFiles\W3SVC1。

IIS 日志的屏幕截图,显示时间戳。

验证是否在数据收集规则中指定了正确的日志位置

数据收集规则包含如下所示的节。 logDirectories 元素指定要从代理计算机收集的日志文件的路径。 检查代理计算机以验证此设置是否正确。

    "dataSources": [
    {
            "configuration": {
                "logDirectories": ["C:\\scratch\\demo\\W3SVC1"]
            },
            "id": "myIisLogsDataSource",
            "kind": "iisLog",
            "streams": [{
                    "stream": "ONPREM_IIS_BLOB_V2"
                }
            ],
            "sendToChannels": ["gigl-dce-6a8e34db54bb4b6db22d99d86314eaee"]
        }
    ]

此目录应与代理计算机上 IIS 日志的位置相对应。

代理计算机上 IIS 日志文件的屏幕截图。

验证 IIS 日志的格式是否为 W3C

打开 IIS 管理器并验证日志是否以 W3C 格式写入。

代理计算机上 IIS 日志记录配置对话框的屏幕截图。

在代理计算机上打开 IIS 日志文件以验证日志的格式是否为 W3C。

IIS 日志的屏幕截图,显示标头,标头指定文件采用 W3C 格式。

注意

目前不支持 X-Forwarded-For 自定义字段。 如果这是关键字段,你可以将 IIS 日志作为自定义文本日志来收集。

后续步骤

了解有关以下方面的详细信息: