【问题标题】:Windows network interface monitoringWindows 网络接口监控
【发布时间】:2015-05-15 21:47:07
【问题描述】:

我正在尝试通过执行 PowerShell 脚本通过 nagios 和 nsclient++ 获取接口性能指标。 powershell脚本的主要部分如下。

Function netstat {
  '{0:0}' -f (Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface |
    where{$_.Name -eq "vmxnet3 Ethernet Adapter"} |
    select BytesReceivedPersec,BytesSentPersec) / 1KB)
}

我希望输出以 MB/s 为单位,并将标头更改为 Tx MB/sRx MB/s。现在我得到以下输出。

PS C:\Users\Administrator> Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | where{$_.Name -eq "vmxnet3 Ethernet Adapter"} | select BytesReceivedPersec, BytesSentPersec

                 BytesReceivedPersec                   BytesSentPersec
                 -------------------                   ---------------
                         12720975895                         438054511

我也尝试过像这样使用 nsclient++ 的 check_wmi 模块。

check_nrpe -H 10.35.136.221 -c check_wmi -a 'query=select BytesReceivedPersec, BytesSentPersec from Win32_PerfRawData_Tcpip_NetworkInterface where name = "vmxnet3 Ethernet Adapter"'

我得到以下输出。

12719626616, 437766199

我怎样才能使上述检查结果的输出如下?

Rx MB/s : 12719626616 Tx MB/s : 437766199

【问题讨论】:

    标签: powershell nagios


    【解决方案1】:

    使用calculated properties 更改属性名称和/或值。改变这个:

    ... | select BytesReceivedPersec, BytesSentPersec
    

    进入这个:

    ... | select @{n='Rx MB/s';e={$_.BytesReceivedPersec / 1MB}},
                 @{n='Tx MB/s';e={$_.BytesSentPersec / 1MB}}
    

    编辑:如果你想要的只是一个格式化的输出字符串,你就不需要费心计算属性了。只需构建格式化的字符串:

    ... | % {
      'OK | Rx MB/s={0:0}; Tx MB/s={1:0}' -f ($_.BytesReceivedPersec / 1MB),
        ($_.BytesSentPersec / 1MB)
    }
    

    【讨论】:

    • 那行得通,谢谢你,Ansgar。但是,我担心这是否是获取接口网络统计信息的正确方法。我尝试在有问题的机器上复制文件,并正在监视任务管理器和此命令的输出。它们似乎反映的不是同一件事还是我错了?
    • @RajS 您可能想查询Win32_PerfFormattedData_Tcpip_NetworkInterface 类。
    • 函数 netstat { $nstat = Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface |其中{$_.Name -eq "vmxnet3 以太网适配器"} |选择@{n="Rx MB/s";e={$_.BytesReceivedPersec / 1MB}}, @{n="Tx MB/s";e={$_.BytesSentPersec / 1MB}} 'OK | {0:0}'-f ($nstat) }。我试图让这个函数的输出为'OK | Tx MB/s = ...,Rx MB/s = ...,但我得到以下输出。确定 |'@{Rx'=0 'MB/s'=0 'Tx'=0 'MB/s'=0}
    • 嗨 Ansgar,通过这种方法,我的 nagios 服务器仅每 10 分钟轮询一次 Windows 主机。是否可以获取过去 10 分钟的统计数据,所以当 nagios 每 10 分钟轮询一次时,它会获取整个间隔的数据?
    • @RajS 这是ServerFault 的问题,但是是的,有办法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多