Editing Traffic accounting through proc
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
Traffic Accounting through /proc/net/dev | 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. | |
− | |||
− | |||
− | == Script | + | =Prerequisites= |
+ | * OpenVZ | ||
+ | * RRDTool | ||
+ | * Gnu AWK | ||
+ | |||
+ | |||
+ | =Script= | ||
First create a directory to store your RRD files: | First create a directory to store your RRD files: | ||
+ | <code> | ||
# mkdir /var/lib/rrd/ | # mkdir /var/lib/rrd/ | ||
+ | </code> | ||
− | + | The install this script: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | # Time to do the data collection. | + | <code> |
− | for veid in | + | #!/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: | To check the output of this later run: | ||
# rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600 | # rrdtool fetch /var/lib/rrd/<veid>.rrd AVERAGE -s -3600 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |