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 25: | Line 25: | ||
# Time to do the data collection. | # Time to do the data collection. | ||
− | for veid in | + | for veid in `/usr/sbin/vzlist -o veid -H | sed 's/ //g'` |
do | do | ||
RRDFILE="/var/lib/rrd/$veid.rrd" | RRDFILE="/var/lib/rrd/$veid.rrd" | ||
Line 42: | Line 42: | ||
# Parse out the inbound/outbound traffic and assign them to the corresponding variables | # Parse out the inbound/outbound traffic and assign them to the corresponding variables | ||
eval `/usr/sbin/vzctl exec $veid "grep venet0 /proc/net/dev" | \ | eval `/usr/sbin/vzctl exec $veid "grep venet0 /proc/net/dev" | \ | ||
− | awk -F: '{print $2}' | awk '{printf"CTIN=% | + | awk -F: '{print $2}' | awk '{printf"CTIN=%-15d\nCTOUT=%-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 | ||
Line 50: | Line 50: | ||
− | the following script uses previously generated | + | the following script uses previously generated RRD's, you'll get nice PNG pictures and index.html file with them: |
<source lang="bash"> | <source lang="bash"> | ||
Line 60: | Line 60: | ||
rrd_path=/var/lib/rrd | rrd_path=/var/lib/rrd | ||
www_path=/var/www/html/traf | www_path=/var/www/html/traf | ||
− | |||
− | |||
− | |||
cd $rrd_path | cd $rrd_path | ||
for RRD in *.rrd | for RRD in *.rrd | ||
do | do | ||
− | CTID= | + | CTID=`echo $RRD|awk -F\. '{print $1}'` |
− | # list of intervals, 1d = last day, 1w = last week and so | + | # list of intervals, 1d = last day, 1w = last week and so.. |
for INT in 1h 1d 1w 1m 1y | for INT in 1h 1d 1w 1m 1y | ||
do | do | ||
− | /usr/bin/rrdtool graph $ | + | /usr/bin/rrdtool graph $www_path/${CTID}-${INT}.png \ |
--start now-$INT --end now \ | --start now-$INT --end now \ | ||
-w 1000 -h 500 \ | -w 1000 -h 500 \ | ||
Line 78: | Line 75: | ||
DEF:in=$RRD:IN:AVERAGE AREA:in#aea:'IN' LINE1:in#0e0 \ | DEF:in=$RRD:IN:AVERAGE AREA:in#aea:'IN' LINE1:in#0e0 \ | ||
DEF:out=$RRD:OUT:AVERAGE AREA:out#eaa:'OUT' LINE1:out#e00 | DEF:out=$RRD:OUT:AVERAGE AREA:out#eaa:'OUT' LINE1:out#e00 | ||
− | echo "<p><img src=\"${CTID}-${INT}.png\"><br/><br/></p>" >> $ | + | echo "<p><img src=\"${CTID}-${INT}.png\"><br/><br/></p>" >> $www_path/index.html |
done | done | ||
done | done | ||
Line 84: | Line 81: | ||
== Setup == | == Setup == | ||
− | Add this to cron to run | + | Add this to cron to run every vz_direct_traffic_log every 5 min and vz_direct_traffic_render every 30 min: |
+ | |||
+ | # echo -e "*/5 * * * * root /path/to/script/vz_direct_traffic_log\n*/30 * * * * root /path/to/script/vz_direct_traffic_render " >> \ | ||
+ | /etc/crontab && /etc/init.d/crontab restart | ||
+ | |||
+ | |||
+ | Better use the cron system of OpenVZ | ||
− | # | + | # echo -e "*/5 * * * * root /path/to/script/vz_direct_traffic_log\n*/30 * * * * root /path/to/script/vz_direct_traffic_render " >> \ |
− | + | /etc/vz/cron/vz-traffic.sh && /etc/init.d/vz update-cron | |
− | |||
− | |||
To check the output of this later run: | To check the output of this later run: |