Difference between revisions of "Traffic accounting through proc"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(categorized; removed unneeded 'code' tags, use -H in vzlist; get rid of first-level headings)
(added see also, use source tag)
Line 1: Line 1:
 
Traffic Accounting through /proc/net/dev
 
Traffic Accounting through /proc/net/dev
 
{|border="0" align="right"
 
|-
 
|__TOC__
 
|}
 
  
 
== Introduction ==
 
== Introduction ==
Line 21: Line 16:
 
Then install this script:
 
Then install this script:
  
#!/bin/sh
+
<source lang="bash">
# Script Name:  vz_direct_traffic_log
+
#!/bin/sh
# Author:      "Brian Harrington, Alticon Inc" <bharrington@alticon.net>
+
# Script Name:  vz_direct_traffic_log
# Website:      htty://www.alticon.net
+
# Author:      "Brian Harrington, Alticon Inc" <bharrington@alticon.net>
 +
# Website:      htty://www.alticon.net
 +
 
 +
# Time to do the data collection.
 +
for veid in `/usr/sbin/vzlist -o veid -H | sed 's/ //g'`; do
 +
 
 +
              RRDFILE="/var/lib/rrd/$veid.rrd"
 +
 +
              if ! test -e $RRDFILE; then
 +
                      echo $RRDFILE does not exist, creating.
 +
                      # Place your preferred RRD Creation command here
 +
              fi
 +
 +
              # Parse out the inbound/outbound traffic and assign them to the corresponding variables
 +
              eval `/usr/sbin/vzctl exec $veid "grep venet0 /proc/net/dev"  |  \
 +
                      awk -F: '{print $2}' | awk '{printf"VEIN=%-15d\nVEOUT=%-15d\n", $1, $9}'`
 
   
 
   
# Time to do the data collection.
+
              # Send the data to the corresponding RRD time with (N)now as the update time
for veid in `/usr/sbin/vzlist -o veid -H | sed 's/ //g'`; do
+
              /usr/bin/rrdtool update $RRDFILE N:$VEIN:$VEOUT
 
+
done
                RRDFILE="/var/lib/rrd/$veid.rrd"
+
</source>
 
 
                if ! test -e $RRDFILE; then
 
                        echo $RRDFILE does not exist, creating.
 
                        # Place your preferred RRD Creation command here
 
                fi
 
 
 
                # Parse out the inbound/outbound traffic and assign them to the corresponding variables
 
                eval `/usr/sbin/vzctl exec $veid "grep venet0 /proc/net/dev"  |  \
 
                        awk -F: '{print $2}' | awk '{printf"VEIN=%-15d\nVEOUT=%-15d\n", $1, $9}'`
 
 
 
                # Send the data to the corresponding RRD time with (N)now as the update time
 
                /usr/bin/rrdtool update $RRDFILE N:$VEIN:$VEOUT
 
done
 
 
 
  
 
== Setup ==
 
== Setup ==
Line 54: Line 50:
  
 
  # rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600
 
  # rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600
 +
 +
== See also ==
 +
 +
* [[Traffic accounting with iptables]]
  
 
[[Category: Monitoring]]
 
[[Category: Monitoring]]
 
[[Category: Networking]]
 
[[Category: Networking]]

Revision as of 14:13, 24 January 2008

Traffic Accounting through /proc/net/dev

Introduction

Traffic accounting in OpenVZ can be done through data collection against /proc/net/dev in the individual VEs on a HN.

Prerequisites

  • OpenVZ
  • RRDTool
  • GNU AWK

Script

First create a directory to store your RRD files:

# mkdir /var/lib/rrd/

Then install this script:

#!/bin/sh
# Script Name:  vz_direct_traffic_log
# Author:       "Brian Harrington, Alticon Inc" <bharrington@alticon.net>
# Website:      htty://www.alticon.net

# Time to do the data collection.
for veid in `/usr/sbin/vzlist -o veid -H | sed 's/ //g'`; do

               RRDFILE="/var/lib/rrd/$veid.rrd"
 
               if ! test -e $RRDFILE; then
                       echo $RRDFILE does not exist, creating.
                       # Place your preferred RRD Creation command here
               fi
 
               # Parse out the inbound/outbound traffic and assign them to the corresponding variables
               eval `/usr/sbin/vzctl exec $veid "grep venet0 /proc/net/dev"  |  \
                       awk -F: '{print $2}' | awk '{printf"VEIN=%-15d\nVEOUT=%-15d\n", $1, $9}'`
 
               # Send the data to the corresponding RRD time with (N)now as the update time
               /usr/bin/rrdtool update $RRDFILE N:$VEIN:$VEOUT
done

Setup

Add this to cron to run every 5 minutes:

# cat "*/5 * * * * root /path/to/script/vz_direct_traffic_log " > \
  /etc/crontab && /etc/init.d/crontab restart

To check the output of this later run:

# rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600

See also