2
edits
Changes
New page: Traffic Accounting through /proc/net/dev {|border="0" align="right" |- |__TOC__ |} =Introduction= Traffic accounting in OpenVZ can be done through data collection against /proc/net/dev i...
Traffic Accounting through /proc/net/dev
{|border="0" align="right"
|-
|__TOC__
|}
=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:
<code>
# mkdir /var/lib/rrd/
</code>
The install this script:
<code>
#!/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 | grep -v VEID | 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
</code>
=Setup=
Add this to cron to run every 5 minutes:
<code>
# cat "*/5 * * * * root /path/to/script/vz_direct_traffic_log " > /etc/crontab && /etc/init.d/crontab restart
</code>
To check the output of this later run:
# rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600
{|border="0" align="right"
|-
|__TOC__
|}
=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:
<code>
# mkdir /var/lib/rrd/
</code>
The install this script:
<code>
#!/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 | grep -v VEID | 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
</code>
=Setup=
Add this to cron to run every 5 minutes:
<code>
# cat "*/5 * * * * root /path/to/script/vz_direct_traffic_log " > /etc/crontab && /etc/init.d/crontab restart
</code>
To check the output of this later run:
# rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600