RRD: статистика загруженности сетевого интерфейса: различия между версиями

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
 
(не показано 8 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{ToDo|Описания}}


==Создание базы==
==Создание базы==


<source lang=bash>
<source lang=bash>
rrdtool create net.eth0.traf.rrd --step 5\
rrdtool create net.eth0.traf.rrd --step 10 \
DS:rx:COUNTER:10:U:U \
DS:rx:COUNTER:20:U:U \
DS:tx:COUNTER:10:U:U \
DS:tx:COUNTER:20:U:U \
RRA:AVERAGE:0.5:1:1200 \
RRA:AVERAGE:0.5:1:1200 \
RRA:AVERAGE:0.5:8:3000 \
RRA:AVERAGE:0.5:8:3000 \
Строка 27: Строка 28:
         \e[32mUsage: \e[31m$0 \e[33mRRDBFILE \e[36mIFACENAME
         \e[32mUsage: \e[31m$0 \e[33mRRDBFILE \e[36mIFACENAME


         \e[32mExample: \e[31m$0 \e[33m/home/$USER/mynet.rrd \e[36eth0
         \e[32mExample: \e[31m$0 \e[33m/home/$USER/mynet.rrd \e[36meth0
         \e[0m"
         \e[0m"
         exit 2
         exit 2
Строка 44: Строка 45:
shift
shift


rrdtool update "${dbfile}" $(/sbin/ifconfig "${1}" |
/usr/bin/rrdtool update "${dbfile}" $(/usr/bin/gawk '/'$1': /{print systime()":"$2":"$10}' /proc/net/dev)
sed -n -r -e "/RX bytes/s/.*RX bytes:([0-9]+).*TX bytes:([0-9]+).*/$(date +%s):\1:\2/pg")
</source>
</source>


Строка 51: Строка 51:


<source lang=bash>
<source lang=bash>
#!/bin/bash


imgpath='/home/stats/graphs/'
imgpath='/home/stats/graphs/'
Строка 60: Строка 61:
         size='--width 900 --height 450'
         size='--width 900 --height 450'
fi
fi
nice -n 19 rrdtool graph "${2}" --imgformat PNG \
nice -n 19 /usr/bin/rrdtool graph "${2}" --imgformat PNG \
DEF:mrx="${1}":rx:MAX \
DEF:mrx="${1}":rx:MAX \
DEF:arx="${1}":rx:AVERAGE \
DEF:arx="${1}":rx:AVERAGE \
DEF:mtx="${1}":tx:MAX \
DEF:mtx="${1}":tx:MAX \
DEF:atx="${1}":tx:AVERAGE \
DEF:atx="${1}":tx:AVERAGE \
CDEF:cdefa=mrx,1,* \
VDEF:vdefa=mrx,TOTAL \
CDEF:cdefb=mtx,1,* \
VDEF:vdefb=mtx,TOTAL \
LINE1:mrx#ff0000aa:'' \
LINE1:mrx#ff0000aa:'' \
LINE1:arx#dd0000aa:'Принято' \
LINE1:arx#dd0000aa:'Принято\t' \
GPRINT:cdefa:LAST:"Текущий\: %8.2lf %s/sec" \
GPRINT:cdefa:MAX:"Пик\: %8.2lf %s/sec" \
GPRINT:vdefa:"Всего\: %8.2lf %s\n" \
LINE1:mtx#0000ffaa:'' \
LINE1:mtx#0000ffaa:'' \
LINE1:atx#0000ddaa:'Передано' \
LINE1:atx#0000ddaa:'Передано\t' \
GPRINT:cdefb:LAST:"Текущий\: %8.2lf %s/sec" \
GPRINT:cdefb:MAX:"Пик\: %8.2lf %s/sec" \
GPRINT:vdefb:"Всего\: %8.2lf %s\n" \
AREA:arx#ff000055 \
AREA:arx#ff000055 \
AREA:atx#0000ff55 \
AREA:atx#0000ff55 \
Строка 82: Строка 93:
img="${1##*/}";img="${img%.rrd}"
img="${1##*/}";img="${img%.rrd}"


mkgraph "${1}" "${imgpath}""${img}".h.png         'normal' "Трафик интерфейса ${2}, час" -75min
mkgraph "${1}" "${imgpath}""${img}".h.png               'normal' "Трафик интерфейса ${2}, час" -75min
mkgraph "${1}" "${imgpath}""${img}".h.large.png   'large'       "Трафик интерфейса ${2}, час" -75min
mkgraph "${1}" "${imgpath}""${img}".h.large.png         'large' "Трафик интерфейса ${2}, час" -75min


mkgraph "${1}" "${imgpath}""${img}".d.png         'normal' "Трафик интерфейса ${2}, день" -27h
mkgraph "${1}" "${imgpath}""${img}".d.png               'normal' "Трафик интерфейса ${2}, день" -27h
mkgraph "${1}" "${imgpath}""${img}".d.large.png   'large'       "Трафик интерфейса ${2}, день" -27h
mkgraph "${1}" "${imgpath}""${img}".d.large.png         'large' "Трафик интерфейса ${2}, день" -27h


mkgraph "${1}" "${imgpath}""${img}".m.png         'normal' "Трафик интерфейса ${2}, месяц" -33d
mkgraph "${1}" "${imgpath}""${img}".m.png               'normal' "Трафик интерфейса ${2}, месяц" -33d
mkgraph "${1}" "${imgpath}""${img}".m.large.png   'large'       "Трафик интерфейса ${2}, месяц" -33d
mkgraph "${1}" "${imgpath}""${img}".m.large.png         'large' "Трафик интерфейса ${2}, месяц" -33d


mkgraph "${1}" "${imgpath}""${img}".y.png         'normal' "Трафик интерфейса ${2}, год" -15mon
mkgraph "${1}" "${imgpath}""${img}".y.png               'normal' "Трафик интерфейса ${2}, год" -15mon
mkgraph "${1}" "${imgpath}""${img}".y.large.png   'large'       "Трафик интерфейса ${2}, год" -15mon
mkgraph "${1}" "${imgpath}""${img}".y.large.png         'large' "Трафик интерфейса ${2}, год" -15mon
</source>
</source>


[[Категория: Round Robin Database]]
[[Категория: Round Robin Database]]

Текущая версия на 20:05, 14 сентября 2010

ToDo: Описания

Создание базы

rrdtool create net.eth0.traf.rrd --step 10 \
DS:rx:COUNTER:20:U:U \
DS:tx:COUNTER:20:U:U \
RRA:AVERAGE:0.5:1:1200 \
RRA:AVERAGE:0.5:8:3000 \
RRA:AVERAGE:0.5:64:10000 \
RRA:AVERAGE:0.5:512:16000 \
RRA:MAX:0.5:1:1200 \
RRA:MAX:0.5:8:3000 \
RRA:MAX:0.5:64:10000 \
RRA:MAX:0.5:512:16000

Добавление данных

#!/bin/bash

dbfile="$1"
if [ -z "${1}" ]; then
        echo -e "
        \e[32mUsage: \e[31m$0 \e[33mRRDBFILE \e[36mIFACENAME

        \e[32mExample: \e[31m$0 \e[33m/home/$USER/mynet.rrd \e[36meth0
        \e[0m"
        exit 2
fi
if [ ! -e "${dbfile}" ]; then
        echo -e "\e[31mError: Database \e[33m\"${dbfile}\" \e[31mnot exist\e[0m"
        exit 1
fi

# Переделать под проверку существования интерфейса
#if [ ! -e /bin/upsc ]; then
#       echo -e "\e[31mError: \e[35m/bin/upsc:\e[31m no such file\e[0m"
#       exit 3
#fi

shift

/usr/bin/rrdtool update "${dbfile}" $(/usr/bin/gawk '/'$1': /{print systime()":"$2":"$10}' /proc/net/dev)

Создание графика

#!/bin/bash

imgpath='/home/stats/graphs/'

mkgraph() {
if [ "$3" == 'normal' ];then
        size='--width 400 --height 200'
elif [ "$3" == 'large' ]; then
        size='--width 900 --height 450'
fi
nice -n 19 /usr/bin/rrdtool graph "${2}" --imgformat PNG \
DEF:mrx="${1}":rx:MAX \
DEF:arx="${1}":rx:AVERAGE \
DEF:mtx="${1}":tx:MAX \
DEF:atx="${1}":tx:AVERAGE \
CDEF:cdefa=mrx,1,* \
VDEF:vdefa=mrx,TOTAL \
CDEF:cdefb=mtx,1,* \
VDEF:vdefb=mtx,TOTAL \
LINE1:mrx#ff0000aa:'' \
LINE1:arx#dd0000aa:'Принято\t' \
GPRINT:cdefa:LAST:"Текущий\: %8.2lf %s/sec" \
GPRINT:cdefa:MAX:"Пик\: %8.2lf %s/sec" \
GPRINT:vdefa:"Всего\: %8.2lf %s\n" \
LINE1:mtx#0000ffaa:'' \
LINE1:atx#0000ddaa:'Передано\t' \
GPRINT:cdefb:LAST:"Текущий\: %8.2lf %s/sec" \
GPRINT:cdefb:MAX:"Пик\: %8.2lf %s/sec" \
GPRINT:vdefb:"Всего\: %8.2lf %s\n" \
AREA:arx#ff000055 \
AREA:atx#0000ff55 \
--lower-limit 0 \
${size} \
--title "${4}" \
-s ${5} \
--watermark="${HOSTNAME}" \
--lazy \
--slope-mode
}

img="${1##*/}";img="${img%.rrd}"

mkgraph "${1}" "${imgpath}""${img}".h.png               'normal' "Трафик интерфейса ${2}, час" -75min
mkgraph "${1}" "${imgpath}""${img}".h.large.png         'large'  "Трафик интерфейса ${2}, час" -75min

mkgraph "${1}" "${imgpath}""${img}".d.png               'normal' "Трафик интерфейса ${2}, день" -27h
mkgraph "${1}" "${imgpath}""${img}".d.large.png         'large'  "Трафик интерфейса ${2}, день" -27h

mkgraph "${1}" "${imgpath}""${img}".m.png               'normal' "Трафик интерфейса ${2}, месяц" -33d
mkgraph "${1}" "${imgpath}""${img}".m.large.png         'large'  "Трафик интерфейса ${2}, месяц" -33d

mkgraph "${1}" "${imgpath}""${img}".y.png               'normal' "Трафик интерфейса ${2}, год" -15mon
mkgraph "${1}" "${imgpath}""${img}".y.large.png         'large'  "Трафик интерфейса ${2}, год" -15mon