为了让我的生活更轻松,我想记录一天内服务器上使用的所有带宽,然后以某种方式将其导出。导出方式并不重要,因为我可以自己解析那些东西,但我需要软件能够准确记录进出 eth0 的流量。
如果有人知道这样的软件,请提供一个链接,我将不胜感激。我已经在 Google 上搜索过这类软件,但没有找到合适的。
干杯。
答案1
我的建议是统计网:
vnStat 是一个基于控制台的 Linux 和 BSD 网络流量监视器,可记录所选接口的网络流量
它的效果与广告宣传的一样,而且似乎很符合您的需求。
为了便于解析,你可能想看--xml
一下--dumpdb
vnstat 文档:
--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 在您的系统上记录这些信息(以及许多其他信息)?许多监控系统应该能够为您提供这些信息,如果您已经有一个监控系统,那么您可能可以使用它而无需部署其他解决方案。