IIS带宽监控

IIS带宽监控

我有一个公共的 MS CRM 2011 安装,我的一个远程用户报告使用了来自他们的 Outlook 客户端的大约 10gig 的数据。

是否可以实时查看 IIS 中的连接用户以及他们消耗了多少数据?(专用服务器上没有其他用户)

我无法访问外部防火墙,因此所有监控都必须从本地 IIS 服务器中移除。我认为 Perfmon 可以做到这一点,但我想看看是否还有其他方法可以做到这一点。

答案1

约翰,

您可以使用 Server 2008+ 中的资源监视器实时查看单个连接。在 Server 2008 R2 中(可能与 Server 2008 中相同),网络选项卡中有两个您感兴趣的表:网络活动表和 TCP 连接表。

网络活动表将为您提供本地应用程序、PID、远程地址以及每秒发送和接收的字节数。TCP 连接将告诉您本地地址、本地端口、远程地址、远程端口、数据包丢失、延迟和本地应用程序/服务。

您可以查阅 IIS 日志,准确了解哪些 URL 被访问(不是实时的,但非常接近)。如果您将 IIS 配置为记录该信息,您还可以使用 Log Parser 查看发送和接收的数据量。 互联网信息服务提供了大量有关使用 Log Parser 排除 IIS 故障的不同方法的信息。以下查询示例显示了用户(IP/用户代理)的总带宽:

SELECT TOP 30
c-ip as Client, 
SUBSTR(cs(User-Agent), 0, 70) as Agent, 
Sum(sc-bytes) AS TotalBytes, 
Count(*) as Hits 
FROM {filename} 
group by c-ip, cs(User-Agent) 
ORDER BY TotalBytes desc

找到了这个查询。以及更多示例,这里

答案2

PowerShell:安装 IIS Log Parser v2.2。我在 D 盘中创建了一个名为 LogParser 的新目录,并将 2 个文件(logparser.dll 和 logparser.exe)复制到该目录中。现在让我们看看 Powershell 代码如何将 LogParser v2.2 与 Powershell 结合使用。

Import-Module WebAdministration
Websites = Get-Website *
Foreach ($i in $Websites)
{
$Name = $i.Name
$ID = $i.ID
$PhysicalPath = $i.PhysicalPath
$Date = (Get-Date).AddDays(-1).ToString("yyMMdd") + '.log'
$Bandwidth = &'D:\tools\LogParser\LogParser.exe' "Select Div(Sum(sc-bytes),1048576) As Bandwidth From '$PhysicalPath\W3SVC$ID\u_ex$Date'" -q:ON
$Value = "$Name : $Bandwidth"
Add-Content -Path Bandwidth.txt -Value $Value
}

相关内容