为了让我的生活变得更轻松,我想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列表:
使用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量到许多计算机的路由器,但也应该在一台机器上工作。