Zmena dat ve grafech v ipaccoutingu
Zahálka Martin Ing.
zahalka.m na gealvz.cz
Úterý Listopad 30 06:31:03 CET 2004
Ippaccountin mi data pocita dobre, ale do grafu mi na osu Y vykresluje jednou tolik dat! Pomuze mi nekdo upravit ten script na y=y/2
Diky
#!/bin/bash
#
# IP Accounting v 1.1
# Tento program slouzi ke statistice sitoveho provozu pro jednotliva IP
# Created by standus - standus na standus.com
active_iface="eth1 eth2 eth3 eth4"
dir_data_txt="/var/www/html/ipaccounting"
dir_data_rdd="/var/www/html/ipaccounting/rrd"
rdd_active="on"
txt_active="on"
testing_active="on"
# Testovani pravidel a chainu v IPTABLES
if [ $testing_active == "on" ]; then
if [ "`iptables -t mangle -L POSTROUTING | grep "DATA_IN"`" == "" ]; then
echo "Pridavam chain DATA_IN"
iptables -t mangle -N DATA_IN
iptables -t mangle -A POSTROUTING -j DATA_IN
fi
if [ "`iptables -t mangle -L PREROUTING | grep "DATA_OUT"`" == "" ]; then
echo "Pridavam chain DATA_OUT"
iptables -t mangle -N DATA_OUT
iptables -t mangle -A PREROUTING -j DATA_OUT
fi
for iface in $active_iface; do
for ip in `cat /proc/net/arp | grep "$iface" | awk '{print $1}'`; do
echo "Testuji ip: $ip"
if [ "`iptables -t mangle -L DATA_IN -v -x -n | grep " $ip " | awk '{print $2}'`" == "" ]; then
echo "Pridavam pravidlo DATA_IN pro ip: $ip"
iptables -t mangle -A DATA_IN -d $ip -j RETURN
fi
if [ "`iptables -t mangle -L DATA_OUT -v -x -n | grep " $ip " | awk '{print $2}'`" == "" ]; then
echo "Pridavam pravidlo DATA_OUT pro ip: $ip"
iptables -t mangle -A DATA_OUT -s $ip -j RETURN
fi
done
done
fi
# Nacteni dat z IPTABLES
counter_file=`cat $dir_data_txt/data.txt`
data=`iptables -t mangle -L DATA_OUT -v -x -n -Z | sed -e 's/ /-/g' | grep "RETURN"`
for i in $data; do
ip=`echo $i | sed -e 's/-/ /g' | awk '{print $7}'`
out=`echo $i | sed -e 's/-/ /g' | awk '{print $2}'`
out_old=`echo -ne "$counter_file" | grep "$ip-" | sed -e 's/-/ /g' | awk '{print $2}'`
out_new=$(($out_old + $out))
new_file_out="$new_file_out$ip-$out_new\n"
out_aver=$(($out / 120))
new_rdd_out="$new_rdd_out$ip-$out_aver\n"
echo -ne "$ip\tOUT\tstare: $out_old \tnove: $out \tsoucet: $out_new\trate: $out_aver\n"
done
data=`iptables -t mangle -L DATA_IN -v -x -n -Z | sed -e 's/ /-/g' | grep "RETURN"`
for i in $data; do
ip=`echo $i | sed -e 's/-/ /g' | awk '{print $8}'`
in=`echo $i | sed -e 's/-/ /g' | awk '{print $2}'`
in_old=`echo -ne "$counter_file" | grep "$ip-" | sed -e 's/-/ /g' | awk '{print $3}'`
in_new=$(($in_old + $in))
new_file_in="$new_file_in$ip-$in_new\n"
in_aver=$(($in / 120))
new_rdd_in="$new_rdd_in$ip-$in_aver\n"
echo -ne "$ip\tIN\tstare: $in_old \tnove: $in \tsoucet: $in_new\trate: $in_aver\n"
done
# Zapsani hodnot do txt souboru (pocitadlo prenesenych dat)
if [ $txt_active == "on" ]; then
for i in `echo -ne $new_file_out`; do
ip=`echo $i | sed -e 's/-/ /g' | awk '{print $1}'`
out=`echo $i | sed -e 's/-/ /g' | awk '{print $2}'`
in=`echo -ne "$new_file_in" | grep "$ip-" | sed -e 's/-/ /g' | awk '{print $2}'`
counter_data="$counter_data$ip-$out-$in\n"
done
echo -ne $counter_data > $dir_data_txt/data.txt
fi
# Zapsani hodnot do rrd databaze (grafy prenosu)
if [ $rdd_active == "on" ]; then
for i in `echo -ne $new_rdd_out`; do
ip=`echo $i | sed -e 's/-/ /g' | awk '{print $1}'`
out=`echo $i | sed -e 's/-/ /g' | awk '{print $2}'`
in=`echo -ne "$new_rdd_in" | grep "$ip-" | sed -e 's/-/ /g' | awk '{print $2}'`
if [ ! -e "$dir_data_rdd/host-$ip.rrd" ]; then
rrdtool create "$dir_data_rdd/host-$ip.rrd" --step 120 DS:in:GAUGE:600:0:U DS:out:GAUGE:600:0:U RRA:AVERAGE:0.5:1:3600 RRA:AVERAGE:0.5:6:3600 RRA:AVERAGE:0.5:42:3600;
fi
rrdtool update "$dir_data_rdd/host-$ip.rrd" -t in:out N:$in:$out
done
fi
----------------------------------------------------------------
Ing. Martin Zahálka
LVZ, a.s.
Vesecká 1
463 12 Liberec
email: zahalka.m na gealvz.cz
tel.: +420 485 225 359
mobil: +420 602 790 944
web: http://www.gealvz.cz
Další informace o konferenci Linux