Difference between revisions of "Traffic accounting through proc"
m |
(categorized; removed unneeded 'code' tags, use -H in vzlist; get rid of first-level headings) |
||
Line 6: | Line 6: | ||
|} | |} | ||
− | =Introduction= | + | == Introduction == |
− | Traffic accounting in OpenVZ can be done through data collection against /proc/net/dev in the individual VEs on a HN. | + | Traffic accounting in OpenVZ can be done through data collection against <code>/proc/net/dev</code> in the individual VEs on a HN. |
− | =Prerequisites= | + | == Prerequisites == |
− | + | * OpenVZ | |
− | + | * RRDTool | |
− | + | * GNU AWK | |
− | + | == Script == | |
− | =Script= | ||
First create a directory to store your RRD files: | First create a directory to store your RRD files: | ||
− | |||
# mkdir /var/lib/rrd/ | # mkdir /var/lib/rrd/ | ||
− | |||
− | + | Then install this script: | |
− | |||
#!/bin/sh | #!/bin/sh | ||
# Script Name: vz_direct_traffic_log | # Script Name: vz_direct_traffic_log | ||
Line 31: | Line 27: | ||
# Time to do the data collection. | # Time to do the data collection. | ||
− | for veid in `/usr/sbin/vzlist -o veid | + | for veid in `/usr/sbin/vzlist -o veid -H | sed 's/ //g'`; do |
RRDFILE="/var/lib/rrd/$veid.rrd" | RRDFILE="/var/lib/rrd/$veid.rrd" | ||
Line 44: | Line 40: | ||
awk -F: '{print $2}' | awk '{printf"VEIN=%-15d\nVEOUT=%-15d\n", $1, $9}'` | 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 | + | # Send the data to the corresponding RRD time with (N)now as the update time |
/usr/bin/rrdtool update $RRDFILE N:$VEIN:$VEOUT | /usr/bin/rrdtool update $RRDFILE N:$VEIN:$VEOUT | ||
done | done | ||
− | |||
− | =Setup= | + | == Setup == |
Add this to cron to run every 5 minutes: | Add this to cron to run every 5 minutes: | ||
− | + | # cat "*/5 * * * * root /path/to/script/vz_direct_traffic_log " > \ | |
− | # cat "*/5 * * * * root /path/to/script/vz_direct_traffic_log " > /etc/crontab && /etc/init.d/crontab restart | + | /etc/crontab && /etc/init.d/crontab restart |
− | |||
− | |||
To check the output of this later run: | To check the output of this later run: | ||
Line 62: | Line 55: | ||
# rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600 | # rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600 | ||
− | + | [[Category: Monitoring]] | |
+ | [[Category: Networking]] |
Revision as of 21:44, 19 November 2007
Traffic Accounting through /proc/net/dev
Contents |
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