vnstat can be used to monitor network bandwidth usage easily.

1. Install vnstat via mac ports.

sudo port install vnstat

2. Assuming the default interface to be monitored is en0, open the vnstat.conf file under /opt/local/etc/vnstat.conf and update the parts:

# default interface
Interface "en0"

# location of the database directory
DatabaseDir "/opt/local/var/db/vnstat"

3. Run the below command which will start monitoring en0.

sudo vnstat -u -i en0

4. Now to run this as a service so that it starts up automatically at boot, we can create a user daemon. In case of GNU/Linux, such scripts are present in /etc/init.d where as in OS X it's in /Library/LaunchDaemons.

sudo vim /Library/LaunchDaemons/local.vnstat.plist

Use the file content for local.vnstat.plist file as given below.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.vnstat</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/local/bin/vnstat</string>
        <string>-u</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

5. Change owner and group to root and wheel respectively.

sudo chown root:wheel /Library/LaunchDaemons/local.vnstat.plist

6. Use launchctl to start the daemon.

sudo launchctl load /Library/LaunchDaemons/local.vnstat.plist

To stop the daemon use unload.

sudo launchctl unload /Library/LaunchDaemons/local.vnstat.plist

Check the usage with:

vnstat #lists complete usage
vnstat -d #lists daily usage

The 'estimated' data given is a prediction that vnstat calculates in real time looking at the usage, hours etc.

To check whether the daemon is running use:

sudo launchctl list | grep vnstat