Skip to content

2tof/RDP-connection-monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

RDP-connection-monitor

RDP高级性能监测与日志记录使用指南

概述

本指南提供了使用增强版PowerShell脚本监测Microsoft远程桌面协议(RDP)连接状态、延迟、带宽使用情况和UDP状态的详细说明。该脚本模拟了RDP客户端左上角"天线"按钮的性能监测功能,帮助系统管理员全面监控RDP连接性能,并将监测数据记录到日志文件中,便于后续分析和审计。

功能特点

  • RDP连接状态监测:监测RDP连接和断开事件,包括用户名、源IP地址和时间戳
  • 网络延迟监测:测量RDP服务器的网络延迟,类似于RDP客户端的延迟指标
  • UDP状态检测:检测RDP是否使用UDP传输,提高性能监测的全面性
  • 网络带宽监测:实时监测网络接口的带宽使用情况,包括发送、接收和总流量
  • 可视化显示:使用PowerShell进度条直观显示带宽和延迟情况
  • 综合日志记录:将监测数据保存到CSV格式的日志文件,便于后续分析
  • 灵活配置:支持自定义监测间隔、样本数量、网络接口和目标服务器

系统要求

  • Windows 7/Windows Server 2008 R2或更高版本
  • PowerShell 3.0或更高版本
  • 管理员权限(用于访问事件日志、性能计数器和注册表)

安装步骤

  1. rdp_advanced_monitoring_script.ps1脚本文件保存到本地目录
  2. 确保PowerShell执行策略允许运行脚本:
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

使用方法

基本用法

以管理员身份打开PowerShell,然后运行以下命令:

.\rdp_advanced_monitoring_script.ps1

这将使用默认参数启动监测,每10秒采样一次,共进行6次采样。

高级用法

脚本支持多个参数来自定义监测行为:

.\rdp_advanced_monitoring_script.ps1 -MonitorInterval 5 -Continuous -LogFilePath "C:\RDPLogs" -NetworkInterface "*Wi-Fi*" -RDPServer "remote-server.example.com"

参数说明

  • -MonitorInterval:监测间隔(秒),默认为10秒
  • -LogFilePath:日志文件保存路径,默认为用户文档目录下的RDP_Monitoring_Logs文件夹
  • -Continuous:启用持续监测模式,直到手动停止(按Ctrl+C)
  • -SampleCount:在非持续模式下的采样次数,默认为6次
  • -NetworkInterface:要监测的网络接口描述,默认为"ethernet"(匹配所有以太网接口)
  • -RDPServer:RDP服务器主机名或IP地址,用于延迟测试,默认为本地计算机名
  • -RDPPort:RDP端口,默认为3389

日志文件说明

脚本生成三种类型的日志文件,均为CSV格式:

RDP状态日志 (RDP_Status_YYYY-MM-DD.csv)

包含以下字段:

  • Timestamp:事件发生时间
  • EventID:Windows事件ID
  • UserName:用户名
  • SourceIP:连接源IP地址(仅适用于连接事件)
  • ConnectionStatus:连接状态(Connected或Disconnected)

RDP带宽日志 (RDP_Bandwidth_YYYY-MM-DD.csv)

包含以下字段:

  • Timestamp:采样时间
  • NetworkInterface:网络接口名称
  • BytesSent:每秒发送字节数
  • BytesReceived:每秒接收字节数
  • BytesTotal:每秒总字节数
  • KbpsSent:每秒发送千比特数
  • KbpsReceived:每秒接收千比特数
  • KbpsTotal:每秒总千比特数

RDP性能日志 (RDP_Performance_YYYY-MM-DD.csv)

包含以下字段:

  • Timestamp:采样时间
  • Latency:网络延迟(毫秒)
  • UDPStatus:UDP状态(Disabled、Active、Enabled_Inactive或Unknown)
  • TCPConnections:TCP连接数
  • UDPConnections:UDP连接数

性能指标解读

延迟(Latency)

延迟指标表示客户端和服务器之间的网络响应时间,单位为毫秒(ms)。

  • 0-50 ms:极佳的网络响应时间,用户体验流畅
  • 50-100 ms:良好的网络响应时间,用户体验基本流畅
  • 100-200 ms:可接受的网络响应时间,可能会有轻微延迟感
  • 200-300 ms:较高的网络响应时间,用户可能会感到明显延迟
  • 300+ ms:高网络响应时间,用户体验可能受到显著影响

UDP状态(UDPStatus)

UDP状态指标表示RDP是否使用UDP传输,这通常能提供更好的性能。

  • Active:UDP已启用且活动,表示RDP正在使用UDP传输,这通常能提供最佳性能
  • Enabled_Inactive:UDP已启用但不活动,表示RDP配置允许UDP但当前未使用
  • Disabled:UDP已禁用,表示RDP被配置为仅使用TCP传输,可能影响性能
  • Unknown:无法确定UDP状态,可能是由于权限不足或其他错误

带宽使用(Bandwidth)

带宽指标表示网络接口的数据传输速率,单位为千比特每秒(Kbps)。

  • KbpsSent:从本地发送到远程的数据速率
  • KbpsReceived:从远程接收到本地的数据速率
  • KbpsTotal:总数据传输速率

带宽使用情况取决于RDP会话的活动类型:

  • 文本和基本UI操作:通常低于100 Kbps
  • 普通图形界面操作:约100-500 Kbps
  • 视频播放或图形密集型应用:可能超过1000 Kbps(1 Mbps)

日志分析建议

使用Excel分析日志

  1. 打开Excel并导入CSV日志文件
  2. 使用数据透视表分析连接模式和性能趋势
  3. 创建图表可视化延迟和带宽变化

示例:创建延迟趋势图

  1. 导入RDP_Performance_YYYY-MM-DD.csv
  2. 选择Timestamp和Latency列
  3. 插入折线图,显示延迟随时间的变化

使用PowerShell分析日志

# 分析延迟统计
Import-Csv -Path "RDP_Performance_2025-06-02.csv" | 
    Measure-Object -Property Latency -Average -Maximum -Minimum | 
    Select-Object Average, Maximum, Minimum

# 分析UDP状态分布
Import-Csv -Path "RDP_Performance_2025-06-02.csv" | 
    Group-Object -Property UDPStatus | 
    Select-Object Name, Count, @{Name='Percentage';Expression={"{0:P2}" -f ($_.Count / $_.Group.Count)}}

# 分析带宽使用情况
Import-Csv -Path "RDP_Bandwidth_2025-06-02.csv" | 
    Measure-Object -Property KbpsTotal -Average -Maximum -Minimum | 
    Select-Object Average, Maximum, Minimum

设置为计划任务

要定期运行监测脚本,可以将其设置为Windows计划任务:

  1. 打开任务计划程序(taskschd.msc)
  2. 创建新任务,设置以管理员权限运行
  3. 添加触发器(例如,每天早上8点)
  4. 添加操作,程序/脚本设置为:
    powershell.exe
    
  5. 添加参数:
    -ExecutionPolicy Bypass -File "C:\Path\To\rdp_advanced_monitoring_script.ps1" -SampleCount 60 -MonitorInterval 60 -RDPServer "your-rdp-server.com"
    
    这将运行一小时的监测,每分钟采样一次

故障排除

常见问题

  1. 无法测量延迟

    • 确保目标RDP服务器可访问
    • 检查防火墙是否阻止ICMP或TCP连接
    • 尝试指定正确的RDP服务器地址:-RDPServer "correct-server-address"
  2. 无法检测UDP状态

    • 确保以管理员权限运行PowerShell
    • 检查是否有权限访问注册表
    • 在某些环境中,可能需要在域控制器上检查组策略设置
  3. 带宽数据不准确

    • 确认指定的网络接口正确:-NetworkInterface "正确的接口名称"
    • 使用Get-NetAdapter命令查看可用网络接口
    • 考虑其他应用程序可能同时使用网络带宽
  4. 脚本执行策略错误

    • 运行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

日志文件管理

如果长时间运行脚本,日志文件可能会变得很大。考虑实施日志轮换策略:

# 删除30天前的日志文件
Get-ChildItem -Path $LogFilePath -Filter "RDP_*.csv" | 
    Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | 
    Remove-Item -Force

自定义和扩展

添加电子邮件警报

可以扩展脚本,在检测到性能问题(如高延迟或UDP禁用)时发送电子邮件警报:

function Send-PerformanceAlert {
    param (
        [string]$Subject,
        [string]$Body
    )
    
    $smtpServer = "smtp.example.com"
    $smtpPort = 587
    $smtpUser = "user@example.com"
    $smtpPassword = ConvertTo-SecureString "YourPassword" -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential($smtpUser, $smtpPassword)
    
    Send-MailMessage -From "alerts@example.com" -To "admin@example.com" `
        -Subject $Subject -Body $Body -SmtpServer $smtpServer -Port $smtpPort `
        -UseSsl -Credential $credential
}

# 在监测循环中添加
if ($performanceData.Latency -gt 300) {
    Send-PerformanceAlert -Subject "RDP延迟警报" -Body "检测到高延迟: $($performanceData.Latency) ms"
}

集成到监控仪表板

可以修改脚本,将数据发送到监控系统(如Grafana、Zabbix等):

function Send-MetricsToMonitoringSystem {
    param (
        [string]$Metric,
        [double]$Value
    )
    
    $uri = "http://monitoring-server:8086/write?db=metrics"
    $body = "$Metric value=$Value"
    Invoke-RestMethod -Uri $uri -Method Post -Body $body
}

# 在监测循环中添加
if ($performanceData.Latency) {
    Send-MetricsToMonitoringSystem -Metric "rdp.latency" -Value $performanceData.Latency
}

安全注意事项

  • 脚本不存储敏感信息,但日志文件可能包含用户名和IP地址
  • 确保日志文件存储在安全位置,并实施适当的访问控制
  • 定期审查日志文件,检查异常活动
  • 考虑对日志文件进行加密或使用安全日志管理系统

结论

本PowerShell脚本提供了一种全面的方法来监测RDP连接状态、延迟、带宽使用情况和UDP状态,模拟了RDP客户端"天线"按钮的性能监测功能。通过定期运行此脚本并分析生成的日志,系统管理员可以更好地了解RDP性能特征,识别潜在的性能问题,并优化网络资源分配。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published