Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

In an attempt to make my life easier I want to log all bandwidth used on my server for a day, and then somehow export it. It doesn't matter much how it exports it because I can parse that stuff myself, but I need software to be able to accurately log traffic going in and out of eth0.

If anyone knows of such software, I'd be grateful if you could provide a link. I have already Googled for such things yet found nothing suitable.

Cheers.

share|improve this question
add comment

5 Answers

up vote 6 down vote accepted

My recommendation is vnStat:

vnStat is a console-based network traffic monitor for Linux and BSD that keeps a log of network traffic for the selected interface(s)

It works as advertised and seems like a good match for your needs.

To facilitate parsing you'd probably like to take a look at the --xml and --dumpdb switch in the vnstat documentation:

  • --xml : Show database content for selected interface or all interfaces in xml format. All traffic values in the output are in KiB.
  • --dumpdb : Instead of showing the database with a formatted output, this output will dump the whole database in a format that should be easy to parse with most script languages.

Feature list:

  • quick and simple to install and get running
  • gathered statistics persists through system reboots
  • can monitor multiple interfaces at the same time
  • several output options
  • summary, hourly, daily, monthly, weekly, top 10 days
  • optional png image output (using libgd)
  • months can be configured to follow billing period
  • light, minimal resource usage
  • same low cpu usage regardless of traffic
  • can be used without root permissions
share|improve this answer
add comment

You could use munin:

Example graphs:

alt text alt text

Live Munin Example

share|improve this answer
add comment

Since you said eth0, I have to assume you must be running some Linux distribution. If so, please add a linux tag to your question.

If you're looking for a nice network traffic logger for Linux, consider ulogd. It can log very detailed data about IP packets into plain-text files and databases. You can control what you need to be logged by using -j ULOG in iptables rules.

share|improve this answer
add comment

Have you considered using SNMP to log this (and many, many other things) on your system? Lots of monitoring system should be able to get you the information, and if you already have one in place, you can probably use it without needing to deploy another solution.

share|improve this answer
add comment

you can try ntop or bandwidthd. depends on what type of services are you running.

those two are most often deployed on routers forwarding traffic to many computers, but should work on one machine as well.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.