我想创build一个在Linux服务器上运行的脚本,该脚本应该读取安装在其他服务器上的NIC的带宽使用情况,然后将它们存储在memcached中。
所以我需要一个读取同一局域网上其他服务器的带宽使用的命令,并且命令应该尽可能快。
谢谢,
没有可以只读取其他服务器参数的神奇命令。 除非你设置和使用SNMP。 请注意,您无法读取速率,因此您只能读取迄今发送/接收的stream量。
mrtg可能只是你想要达到的路线。 它会进行带宽速率的计算并将其存储在RRD中。 然后,您可以“即时”查询RRD。
我将创build一个使用SSH远程运行ifconfig命令的shell脚本,并parsing输出以获取RX bytes:和TX bytes:值(标准grep / sed / awk)。 我将这些值传递给一个PHP / Python / Perl / Ruby脚本(无论您的偏好是什么),将它们存储到memcached中。 或者,您可以使用该语言编写整个脚本。 我将设置SSH以使用公钥/私钥来避免在脚本中使用密码。
MikeyB提到的另一个select是在服务器上设置一个更完整的监控应用程序,它可以直接loggingnetworking带宽的使用情况。
在你的服务器上安装munin-node并configuration一个munin服务器将使你通过每台机器的接口获得graphics输出。 数据的分辨率是固定在五分钟的时间间隔。 如上所述,当前带宽分辨率的数据不可用。 它需要通过抽样计数器随着时间推移。 利用率来源于(实际增量)/(利率*期间)。
Munin将收集一系列其他信息,这些信息在追查瓶颈和其他问题时非常有用。 它也可以configuration为在值超出configuration的限制之外时发出警报。
编辑:如果你想要最新的值,你可以写一个脚本,将从rrd文件中提取最新的样本。 这将是最新的5分钟样本。
不幸的是,带宽使用不直接跟踪。 如果您需要相对即时的读数,则需要查询计数器,等待一段时间,然后再次查询计数器。 然后你可以计算带宽使用率。 您可以使用munin-node查询计数器。 获取计数器的命令是fetch ip_eth0 。 configuration数据包含充分利用的基准数据。 你等待的时间越短,你在样本中得到的错误就越高。
大约12年前,我正在为ISP开发一个项目,并且我在Perl + SMNP中编写了一个脚本,它将每分钟读取从几十个访问服务器发送/接收的字节数,将其存储在数据库中,然后进行各种统计计算这个数据。 现在有RRDtool软件包(MRTG是前身)。 但总的想法仍然是 – 你可以通过SNMP从任何设备读取接收/发送的字节数。 如果你正在从网卡读取这个数据,可能有其他的select,但我认为原理是一样的。
我使用bash脚本中的两个程序,只需几行,除了MRTG的5分钟平均值(这对于历史带宽使用率而不是“实时”使用率),我给出了30秒的带宽平均值。
bwm-ng和ifstat都很容易编写脚本。 首先让你输出到HTML和CSV。