Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

Traffic accounting through proc

106 bytes removed, 21:46, 12 January 2013
removed /etc/init.d/vz update-cron part (not implemented anymore)
# 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"
# 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"CTIN=%-15ds\nCTOUT=%-15ds\n", $1, $9}'`
# Send the data to the corresponding RRD time with (N)now as the update time
the following script uses previously generated RRD'sRRDs, you'll get nice PNG pictures and index.html file with them:
<source lang="bash">
rrd_path=/var/lib/rrd
www_path=/var/www/html/traf
 
# Clear out the old index, otherwise you end up with a repeating index. This would also be a good place to put a header.
rm ${www_path}/index.html
cd $rrd_path
for RRD in *.rrd
do
CTID=`$(echo $RRD|awk -F\sed 's/. '{print rrd$1}//'`)
# list of intervals, 1d = last day, 1w = last week and so..on
for INT in 1h 1d 1w 1m 1y
do
/usr/bin/rrdtool graph ${www_path}/${CTID}-${INT}.png \
--start now-$INT --end now \
-w 1000 -h 500 \
--title "CTID $CTID - Interval $INT" \
DEF:in=$RRD:IN:AVERAGE AREA:in#aea:'IN' LINE1:in#0e0 \
DEF:out=$RRD:OUT:AVERAGE AREA:out#eaa:'OUT' LINE1:inout#e00 echo "<p><img src=\"${CTID}-${INT}.png\"><br/><br/></p>" >> ${www_path}/index.html
done
done
== Setup ==
Add this to cron to run every <code>vz_direct_traffic_log </code> every 5 min minutes and <code>vz_direct_traffic_render </code> every 30 minminutes # 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 "cat << EOF >> /etc/crontab */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 EOF
To check the output of this later run:
Anonymous user