记录带宽使用情况?

记录带宽使用情况?

为了让我的生活更轻松,我想记录一天内服务器上使用的所有带宽,然后以某种方式将其导出。导出方式并不重要,因为我可以自己解析那些东西,但我需要软件能够准确记录进出 eth0 的流量。

如果有人知道这样的软件,请提供一个链接,我将不胜感激。我已经在 Google 上搜索过这类软件,但没有找到合适的。

干杯。

答案1

我的建议是统计网

vnStat 是一个基于控制台的 Linux 和 BSD 网络流量监视器,可记录所选接口的网络流量

它的效果与广告宣传的一样,而且似乎很符合您的需求。

为了便于解析,你可能想看--xml一下--dumpdbvnstat 文档

  • --xml:以 xml 格式显示所选接口或所有接口的数据库内容。输出中的所有流量值均以 KiB 为单位。
  • --dumpdb:此输出不会以格式化的输出显示数据库,而是以一种易于用大多数脚本语言解析的格式转储整个数据库。

功能列表:

  • 安装和运行快速简便
  • 收集的统计数据在系统重启后仍然有效
  • 可以同时监控多个接口
  • 多种输出选项
  • 摘要、每小时、每天、每月、每周、前 10 天
  • 可选的 png 图像输出(使用 libgd)
  • 可以配置月份以遵循结算期
  • 轻量,最少的资源使用
  • 无论流量多少,CPU 使用率都同样低
  • 无需root权限即可使用

答案2

当使用带有 kibana 的 logstash 时,设置起来很容易

我们所做的是使用以下 bash 脚本将总流量记录到日志文件中。

LOGPATH="systemstatus.log"



timestamp() {
  date +"%Y-%m-%dT%T.%N"
}


while ( sleep 60 ) ; do
#clear log file 
truncate -s 0 $LOGPATH

#log timstamp and type of log line
echo -n "$(timestamp) linux::systemstatus::network " >> $LOGPATH
#remove tabs and spaces from grep result
grep "eth" /proc/net/dev |head -n1|sed -e 's/^[ \t]*//'| sed -n 's/  \+/ /gp' >> $LOGPATH

Done

nxlog将日志导出到logstash和kibana。

在 logstash 中,字符串被解析为单独的值 Kibana 使流量在派生直方图中可见(这显示了从一个值到下一个值的差异)

这为我们提供了带宽使用情况的总体图表。除此之外,我们还记录了服务器的 CPU、磁盘和内存使用情况。

注意:我们将 /proc/net/dev 中的整个日志行解析为单独的值,以防我们想要监控丢失的数据包或错误

答案3

答案4

您是否考虑过使用 SNMP 在您的系统上记录这些信息(以及许多其他信息)?许多监控系统应该能够为您提供这些信息,如果您已经有一个监控系统,那么您可能可以使用它而无需部署其他解决方案。

相关内容