IIS 日志与监控

IIS · 第 7 篇 · 适用于 Windows Server 2019 / 2022 / 2025

📑 目录

  1. IIS 日志概述
  2. 配置日志
  3. 日志分析
  4. 性能监控
  5. 常见问题

1. IIS 日志概述

IIS 默认记录所有 HTTP 请求的详细信息,包括客户端 IP、请求时间、URL、状态码、响应大小等,是运维排查问题的重要依据。

日志存储位置

默认路径:%SystemDrive%\inetpub\logs\LogFiles\

每个站点有独立子目录,命名格式:W3SVC{SiteID}

日志格式

格式说明适用场景
W3C自定义字段,文本格式,默认格式通用、推荐
NCSA固定字段,Apache 兼容格式日志分析工具兼容
IISIIS 专用二进制格式性能最优

2. 配置日志

1

选择网站 → 双击"日志"

2

配置:

  • 格式:W3C(默认)
  • 目录:D:\IISLogs\MyWebSite(建议修改到非系统盘)
  • 计划:每天创建新文件
3

点击"选择字段",勾选需记录的字段:

  • ✅ date、time、s-ip、cs-method、cs-uri-stem、cs-uri-query
  • ✅ s-port、cs-username、c-ip、cs(User-Agent)、sc-status
  • ✅ sc-substatus、sc-win32-status、time-taken
4

应用 → 确认日志文件已在新目录生成

PowerShell - 日志配置
# 修改日志目录
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
    -Filter "system.applicationHost/sites/site[@name='MyWebSite']/logFile" `
    -Name "directory" -Value "D:\IISLogs\MyWebSite"

# 设置日志格式为 W3C
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
    -Filter "system.applicationHost/sites/site[@name='MyWebSite']/logFile" `
    -Name "logFormat" -Value "W3C"

# 设置日志轮转周期(每日)
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
    -Filter "system.applicationHost/sites/site[@name='MyWebSite']/logFile" `
    -Name "period" -Value "Daily"

3. 日志分析

PowerShell - 日志查询分析
# 导入 IIS 日志模块
Import-Module "WebAdministration"

# 统计最近 1 小时的 404 错误
$logPath = "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log"
$logs = Import-Csv -Path $logPath -Delimiter ' '
$logs | Where-Object { $_.'sc-status' -eq '404' } | Measure-Object

# 统计访问量 Top 10 IP
$logs | Group-Object 'c-ip' | Sort-Object Count -Descending | Select-Object -First 10 | Format-Table Name, Count

# 按状态码统计
$logs | Group-Object 'sc-status' | Sort-Object Count -Descending | Format-Table Name, Count

4. 性能监控

PowerShell - 性能计数器
# 获取 IIS 相关性能计数器
Get-Counter -Counter "\Web Service(*)\Total Method Requests/sec" -SampleInterval 1 -MaxSamples 5

# 当前连接数
Get-Counter -Counter "\Web Service(*)\Current Connections"

# 工作进程状态
Get-Process w3wp | Select-Object Id, ProcessName, CPU, WorkingSet

# 应用程序池状态
Get-IISAppPool | Select-Object Name, State, ManagedRuntimeVersion | Format-Table -AutoSize

5. 常见问题

Q1:日志文件占用过多磁盘空间

设置日志保留策略:使用任务计划定期清理超过 30 天的日志文件。或配置日志压缩与归档。

Q2:如何分析大规模日志

推荐使用 Log Parser 工具(微软官方),支持 SQL 语法查询日志,性能优异。也可导入 ELK Stack 或 Splunk 进行可视化分析。

Q3:日志时间与服务器时间不一致

W3C 格式默认使用 UTC 时间。可在日志配置中勾选"使用本地时间进行文件命名和滚动",或在分析时进行时区转换。