logging带宽使用?

为了让我的生活变得更轻松,我想logging下我的服务器上使用的所有带宽一天,然后以某种方式导出它。 输出它并不重要,因为我可以自己parsing这些东西,但是我需要软件来准确logging进出eth0的stream量。

如果有人知道这样的软件,我将不胜感激,如果你能提供一个链接。 我已经Googlesearch这样的东西,但没有find合适的东西。

干杯。

我的build议是vnStat :

vnStat是用于Linux和BSD的基于控制台的networkingstream量监视器,用于保存所选接口的networkingstream量日志。

它像广告一样工作,似乎是一个很好的匹配您的需求。

为了便于parsing,你可能想看看vnstat文档中的--xml--dumpdb开关:

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

function列表:

  • 快速简单的安装和运行
  • 收集的统计数据在系统重新启动后仍然存在
  • 可以同时监控多个接口
  • 几个输出选项
  • 总结,每小时,每天,每月,每周,前10天
  • 可选的PNG图像输出(使用libgd)
  • 月份可以configuration为按照计费周期
  • 轻巧,资源占用最less
  • 不pipestream量如何,CPU使用率都很低
  • 可以使用没有根权限

使用kibana使用logstash时,这很容易设置

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

 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中,string被parsing为单个值Kibana使得stream量在派生直方图中可见(这显示了从1值到下一个值的差异)

这给我们一个很好的使用带宽的整体图。 除此之外,我们还logging服务器的CPU,磁盘和内存使用情况。

注意:我们将整个日志行从/ proc / net / devparsing到单独的值,以防万一我们想监视丢失的包或错误

你可以使用munin :

示例图:

替代文字http://munin.ping.uio.no/ping.uio.no/bimbo.ping.uio.no-if_eth0-day.png 替代文字http://munin.ping.uio.no/ping.uio 。无/ bimbo.ping.uio.no-if_eth0-month.png

Live Munin例子

既然你说eth0 ,我必须假设你必须运行一些Linux发行版。 如果是这样,请为您的问题添加一个linux标签。

如果您正在为Linux寻找一个很好的networkingstream量logging器,请考虑ulogd 。 它可以将关于IP数据包的非常详细的数据logging到纯文本文件和数据库中。 您可以通过在iptables规则中使用-j ULOG来控制您需要logging的内容。

你有没有考虑过使用SNMP在你的系统上logging这个(以及许多其他的东西)? 许多监控系统应该能够得到你的信息,如果你已经有一个,你可以使用它,而不需要部署另一个解决scheme。

你可以尝试ntop或带宽 。 取决于你正在运行什么types的服务。

这两个最经常部署在转发stream量到许多计算机的路由器,但也应该在一台机器上工作。