Odpowiednie dane są zbierane za pomocą modułu account w /proc/net/ipt_account//net1 i net 2 i net 3 dla każdej z moich podsieci
skrypt który tworzy pliki z danymi : account_create
Kod: Zaznacz cały
#!/bin/bash
CONFIG_FILE=/etc/firewall/extra/account/config
source $CONFIG_FILE
create_database() {
$RRDTOOL create $RRDDIR/$1 \
DS:in:DERIVE:600:0:U \
DS:out:DERIVE:600:0:U \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797 \
RRA:MIN:0.5:1:600 \
RRA:MIN:0.5:6:700 \
RRA:MIN:0.5:24:775 \
RRA:MIN:0.5:288:797 \
RRA:LAST:0.5:1:600 \
RRA:LAST:0.5:6:700 \
RRA:LAST:0.5:24:775 \
RRA:LAST:0.5:288:797
}
u_int32_to_ip() {
ip1=$((($1 >> 24) & 0xff))
ip2=$((($1 >> 16) & 0xff))
ip3=$((($1 >> 8) & 0xff))
ip4=$(($1 & 0xff))
echo -n "${ip1}.${ip2}.${ip3}.${ip4}"
}
for x in $IP ; do
b1ip=`echo $x | cut -d'.' -f1`
b2ip=`echo $x | cut -d'.' -f2`
b3ip=`echo $x | cut -d'.' -f3`
e1ip=`echo $x | cut -d'.' -f1`
e2ip=`echo $x | cut -d'.' -f2`
e3ip=`echo $x | cut -d'.' -f3`
ip_begin=$(($b1ip << 24 | $b2ip << 16 | $b3ip << 8 | 0))
ip_end=$(($e1ip << 24 | $e2ip << 16 | $e3ip << 8 | 255))
for (( ip = ip_begin ; ip <= ip_end ; ip++ )) ; do
ip_text=$( u_int32_to_ip ${ip} )
create_database bits-${ip_text}.rrd
done
done
exit 0
Kod: Zaznacz cały
#!/bin/bash
CONFIG_FILE=/etc/firewall/extra/account/config
source $CONFIG_FILE
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# ip = 192.168.0.255 bytes_src = 0 packets_src = 0 bytes_dest = 0 packets_dest = 0 time = 543
ACN="1"
for x in $IP ; do
for i in $IPKI2 ; do
cat /proc/net/ipt_account/net${ACN} | grep -w $i | awk -v RRDUPDATE=$RRDUPDATE -v RRDDIR=$RRDDIR '{ system (RRDUPDATE " " RRDDIR "/bits-" $3 ".rrd" " N:" $6 ":" $12) }'
done
ACN=$[$ACN+1]
done
exit 0
Kod: Zaznacz cały
#!/bin/bash
CONFIG_MFILE=/etc/firewall/main.cfg
source $CONFIG_MFILE
IMGDIR="/srv/www/htdocs/account/images" # polozenie katalogu z grafikami statystyk dla www
RRDDIR="/var/account_db" # katalog, w ktorym beda zbierane dane (ok. 50MB na 1 podsiec)
IP="$STATIPTA" # pobranie IP ze zmiennej STATIPTA
#IP="192.168.101.0" # IP sieci (bez maski!), np.: 192.168.1.0
# ponizej juz nic nie musisz zmieniac
IPKI=`cat /etc/firewall/client.cfg | grep -v "^#" | sed -e '/^$/d' | awk '{ print $1 }'`
if [ -f /etc/firewall/clinat.cfg ] ; then
IPKI=`cat /etc/firewall/clinat.cfg | grep -v "#" | sed -e '/^$/d' | awk '{ print $1 }'`
fi
RRDTOOL=`which rrdtool`
RRDUPDATE=`which rrdupdate`
if [ ! -d $RRDDIR ]; then
mkdir $RRDDIR
fi
echo "$IPKI" > $RRDDIR/iplist
for x in $IP ; do
echo $x | cut -d'/' -f1 >> $RRDDIR/iplist
done
IPKI2=`cat $RRDDIR/iplist`
CZAS=`date '+%d-%m-%Y, godz.%H, min.%M'`
gdy daję rrdtool info bits-192.168.101.0.rrd
dostaje:
Kod: Zaznacz cały
filename = "/var/account_db/bits-192.168.101.0.rrd"
rrd_version = "0003"
step = 300
last_update = 1212587011
ds[in].type = "DERIVE"
ds[in].minimal_heartbeat = 600
ds[in].min = 0.0000000000e+00
ds[in].max = NaN
ds[in].last_ds = "55046493"
ds[in].value = 0.0000000000e+00
ds[in].unknown_sec = 211
ds[out].type = "DERIVE"
ds[out].minimal_heartbeat = 600
ds[out].min = 0.0000000000e+00
ds[out].max = NaN
ds[out].last_ds = "818831241"
ds[out].value = 0.0000000000e+00
ds[out].unknown_sec = 211
rra[0].cf = "AVERAGE"
rra[0].rows = 600
rra[0].pdp_per_row = 1
rra[0].xff = 5.0000000000e-01
rra[0].cdp_prep[0].value = NaN
rra[0].cdp_prep[0].unknown_datapoints = 0
rra[0].cdp_prep[1].value = NaN
rra[0].cdp_prep[1].unknown_datapoints = 0
rra[1].cf = "AVERAGE"
rra[1].rows = 700
rra[1].pdp_per_row = 6
rra[1].xff = 5.0000000000e-01
rra[1].cdp_prep[0].value = NaN
rra[1].cdp_prep[0].unknown_datapoints = 2
rra[1].cdp_prep[1].value = NaN
rra[1].cdp_prep[1].unknown_datapoints = 2
rra[2].cf = "AVERAGE"
rra[2].rows = 775
rra[2].pdp_per_row = 24
rra[2].xff = 5.0000000000e-01
rra[2].cdp_prep[0].value = NaN
rra[2].cdp_prep[0].unknown_datapoints = 20
rra[2].cdp_prep[1].value = NaN
rra[2].cdp_prep[1].unknown_datapoints = 20
rra[3].cf = "AVERAGE"
rra[3].rows = 797
rra[3].pdp_per_row = 288
rra[3].xff = 5.0000000000e-01
rra[3].cdp_prep[0].value = NaN
rra[3].cdp_prep[0].unknown_datapoints = 164
rra[3].cdp_prep[1].value = NaN
rra[3].cdp_prep[1].unknown_datapoints = 164
rra[4].cf = "MAX"
rra[4].rows = 600
rra[4].pdp_per_row = 1
rra[4].xff = 5.0000000000e-01
rra[4].cdp_prep[0].value = NaN
rra[4].cdp_prep[0].unknown_datapoints = 0
rra[4].cdp_prep[1].value = NaN
rra[4].cdp_prep[1].unknown_datapoints = 0
rra[5].cf = "MAX"
rra[5].rows = 700
rra[5].pdp_per_row = 6
rra[5].xff = 5.0000000000e-01
rra[5].cdp_prep[0].value = NaN
rra[5].cdp_prep[0].unknown_datapoints = 2
rra[5].cdp_prep[1].value = NaN
rra[5].cdp_prep[1].unknown_datapoints = 2
rra[6].cf = "MAX"
rra[6].rows = 775
rra[6].pdp_per_row = 24
rra[6].xff = 5.0000000000e-01
rra[6].cdp_prep[0].value = NaN
rra[6].cdp_prep[0].unknown_datapoints = 20
rra[6].cdp_prep[1].value = NaN
rra[6].cdp_prep[1].unknown_datapoints = 20
rra[7].cf = "MAX"
rra[7].rows = 797
rra[7].pdp_per_row = 288
rra[7].xff = 5.0000000000e-01
rra[7].cdp_prep[0].value = NaN
rra[7].cdp_prep[0].unknown_datapoints = 164
rra[7].cdp_prep[1].value = NaN
rra[7].cdp_prep[1].unknown_datapoints = 164
rra[8].cf = "MIN"
rra[8].rows = 600
rra[8].pdp_per_row = 1
rra[8].xff = 5.0000000000e-01
rra[8].cdp_prep[0].value = NaN
rra[8].cdp_prep[0].unknown_datapoints = 0
rra[8].cdp_prep[1].value = NaN
rra[8].cdp_prep[1].unknown_datapoints = 0
rra[9].cf = "MIN"
rra[9].rows = 700
rra[9].pdp_per_row = 6
rra[9].xff = 5.0000000000e-01
rra[9].cdp_prep[0].value = NaN
rra[9].cdp_prep[0].unknown_datapoints = 2
rra[9].cdp_prep[1].value = NaN
rra[9].cdp_prep[1].unknown_datapoints = 2
rra[10].cf = "MIN"
rra[10].rows = 775
rra[10].pdp_per_row = 24
rra[10].xff = 5.0000000000e-01
rra[10].cdp_prep[0].value = NaN
rra[10].cdp_prep[0].unknown_datapoints = 20
rra[10].cdp_prep[1].value = NaN
rra[10].cdp_prep[1].unknown_datapoints = 20
rra[11].cf = "MIN"
rra[11].rows = 797
rra[11].pdp_per_row = 288
rra[11].xff = 5.0000000000e-01
rra[11].cdp_prep[0].value = NaN
rra[11].cdp_prep[0].unknown_datapoints = 164
rra[11].cdp_prep[1].value = NaN
rra[11].cdp_prep[1].unknown_datapoints = 164
rra[12].cf = "LAST"
rra[12].rows = 600
rra[12].pdp_per_row = 1
rra[12].xff = 5.0000000000e-01
rra[12].cdp_prep[0].value = NaN
rra[12].cdp_prep[0].unknown_datapoints = 0
rra[12].cdp_prep[1].value = NaN
rra[12].cdp_prep[1].unknown_datapoints = 0
rra[13].cf = "LAST"
rra[13].rows = 700
rra[13].pdp_per_row = 6
rra[13].xff = 5.0000000000e-01
rra[13].cdp_prep[0].value = NaN
rra[13].cdp_prep[0].unknown_datapoints = 2
rra[13].cdp_prep[1].value = NaN
rra[13].cdp_prep[1].unknown_datapoints = 2
rra[14].cf = "LAST"
rra[14].rows = 775
rra[14].pdp_per_row = 24
rra[14].xff = 5.0000000000e-01
rra[14].cdp_prep[0].value = NaN
rra[14].cdp_prep[0].unknown_datapoints = 20
rra[14].cdp_prep[1].value = NaN
rra[14].cdp_prep[1].unknown_datapoints = 20
rra[15].cf = "LAST"
rra[15].rows = 797
rra[15].pdp_per_row = 288
rra[15].xff = 5.0000000000e-01
rra[15].cdp_prep[0].value = NaN
rra[15].cdp_prep[0].unknown_datapoints = 164
rra[15].cdp_prep[1].value = NaN
rra[15].cdp_prep[1].unknown_datapoints = 164