你当前正在访问 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 门户中创建数据收集规则,请执行以下操作:
在的“监视”菜单中,选择“数据收集规则”。
选择“创建”,创建新的数据收集规则和关联。
输入规则名称,并指定订阅、资源组、区域、平台类型和数据收集终结点:
- “区域”指定将在其中创建 DCR 的位置。 虚拟机及其关联可以处于租户中的任何订阅或资源组中。
- “平台类型”指定此规则可应用到的资源类型。 “自定义”选项允许 Windows 和 Linux 两种类型。
- 数据收集终结点指定用于收集数据的数据收集终结点。 此数据收集终结点必须与 Log Analytics 工作区位于同一区域。 有关详细信息,请参阅如何根据部署设置数据收集终结点。
在“资源”选项卡上:
选择“+ 添加资源”并将资源关联到数据收集规则。 资源可以是虚拟机、虚拟机规模集和 Azure Arc for servers。 Azure 门户将在尚未安装 Azure Monitor 代理的资源上安装 Azure Monitor 代理。
重要
门户可以在目标资源上启用系统分配的托管标识,还包括现有的用户分配的标识(如有)。 对于现有应用程序,除非在请求中指定用户分配的标识,否则计算机将默认使用系统分配的标识。
选择“启用数据收集终结点”。
为与数据收集规则关联的每个虚拟机选择数据收集终结点。
此数据收集终结点将配置文件发送到虚拟机,并且必须与虚拟机位于同一区域。 有关详细信息,请参阅如何根据部署设置数据收集终结点。
在“收集和传递”选项卡上,选择“添加数据源”以添加数据源并设置目标。
选择“IIS 日志”。
指定文件模式以确定日志文件所在的目录。
在“目标”选项卡上,为数据源添加目标。
选择“查看 + 创建”,查看数据收集规则的详细信息以及与虚拟机集的关联。
选择“创建”,创建数据收集规则。
注意
创建数据收集规则后,可能需要最多 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。
验证是否在数据收集规则中指定了正确的日志位置
数据收集规则包含如下所示的节。 logDirectories
元素指定要从代理计算机收集的日志文件的路径。 检查代理计算机以验证此设置是否正确。
"dataSources": [
{
"configuration": {
"logDirectories": ["C:\\scratch\\demo\\W3SVC1"]
},
"id": "myIisLogsDataSource",
"kind": "iisLog",
"streams": [{
"stream": "ONPREM_IIS_BLOB_V2"
}
],
"sendToChannels": ["gigl-dce-6a8e34db54bb4b6db22d99d86314eaee"]
}
]
此目录应与代理计算机上 IIS 日志的位置相对应。
验证 IIS 日志的格式是否为 W3C
打开 IIS 管理器并验证日志是否以 W3C 格式写入。
在代理计算机上打开 IIS 日志文件以验证日志的格式是否为 W3C。
注意
目前不支持 X-Forwarded-For 自定义字段。 如果这是关键字段,你可以将 IIS 日志作为自定义文本日志来收集。
后续步骤
了解有关以下方面的详细信息: