Changes

Jump to: navigation, search

Traffic accounting through proc

1,517 bytes added, 21:46, 12 January 2013
removed /etc/init.d/vz update-cron part (not implemented anymore)
# Author: "Brian Harrington, Alticon Inc" <bharrington@alticon.net>
# Website: htty://www.alticon.net
# Editor: "Denis Titov, ISP Okeanika" <denis@okeanika.net.ua>
# Time to do the data collection.
for veid in `$(/usr/sbin/vzlist -o veid -H | sed 's)do RRDFILE="/ var/lib/g'`rrd/$veid.rrd" if ! test -e $RRDFILE; dothen echo $RRDFILE does not exist, creating.
RRDFILE=" # Place your preferred RRD Creation command here # or use this one, following command will create new RRD file with 300 sec step (for 5 min cron) /varusr/lib/rrdbin/rrdtool create $veid.rrd"RRDFILE --step 300 \ DS:IN:COUNTER:1000:0:U \ if ! test -e $RRDFILE; then DS:OUT:COUNTER:1000:0:U \ echo $RRDFILE does not exist, creating RRA:AVERAGE:0.5:1:600000 \ # Place your preferred RRD Creation command here RRA:AVERAGE:0.5:100:60000 \ # TODO RRA:AVERAGE:0.5:1000: please provide an example6000 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"CTIN=%-15ds\nCTOUT=%-15ds\n", $1, $9}'` # Send the data to the corresponding RRD time with (N)now as the update time /usr/bin/rrdtool update $RRDFILE N:$CTIN:$CTOUT
done
</source>
== Setup ==
Add this to cron to run every 5 minutes:
the following script uses previously generated RRDs, you'll get nice PNG pictures and index.html file with them: <source lang="bash">#!/bin/sh# Script Name: vz_direct_traffic_render# echo Author: "Denis Titov, ISP Okeanika"*<denis@okeanika.net.ua># Website: http:/5 * * * * root /pathwww.okeanika.net.ua rrd_path=/tovar/scriptlib/vz_direct_traffic_log " >> \rrd www_path=/etcvar/crontab && www/etchtml/inittraf # Clear out the old index, otherwise you end up with a repeating index.dThis would also be a good place to put a header.rm ${www_path}/index.html cd $rrd_pathfor RRD in *.rrddo CTID=$(echo $RRD | sed 's/.rrd$//crontab restart')
# 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:out#e00
echo "<p><img src=\"${CTID}-${INT}.png\"><br/><br/></p>" >> ${www_path}/index.html
done
done
</source>
Better use the == Setup ==Add this to cron system of OpenVZto run <code>vz_direct_traffic_log</code> every 5 minutes and <code>vz_direct_traffic_render</code> every 30 minutes:
# echo "cat << EOF >> /etc/crontab */5 * * * * root /path/to/script/vz_direct_traffic_log " >> \ */etc30 * * * * root /vzpath/cronto/vz-traffic.sh && script/etc/init.d/vz update-cronvz_direct_traffic_render EOF
To check the output of this later run:
Anonymous user

Navigation menu