RRD: статистика загруженности сетевого интерфейса: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) |
Rain (обсуждение | вклад) |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{ToDo|Описания}} | |||
==Создание базы== | ==Создание базы== | ||
<source lang=bash> | <source lang=bash> | ||
rrdtool create net.eth0.traf.rrd --step | rrdtool create net.eth0.traf.rrd --step 10 \ | ||
DS:rx:COUNTER: | DS:rx:COUNTER:20:U:U \ | ||
DS:tx:COUNTER: | 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 \ | ||
Строка 18: | Строка 19: | ||
==Добавление данных== | ==Добавление данных== | ||
{{ | <source lang=bash> | ||
#!/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) | |||
</source> | |||
==Создание графика== | ==Создание графика== | ||
{{ | <source lang=bash> | ||
#!/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 | |||
</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