RRD: сбор статистики по загруженности системы: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) |
Rain (обсуждение | вклад) |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
==Создание базы== | ==Создание базы== | ||
База создается с именем '''/home/ | База создается с именем '''/home/stats/sysload.$HOSTNAME.rrd''', интервал добавления данных - '''10 секунд''', 3 поля для информации по загрузке за 5, 10 и 15 минут, замеры с 4-мя ступенями разрешения: | ||
* С разрешением в 10 секунд интервал в 100 минут (больше часа) | * С разрешением в 10 секунд интервал в 100 минут (больше часа) | ||
Строка 8: | Строка 8: | ||
* С разрешением в 3 часа интервал в 1,3 года (год и 3 месяца) | * С разрешением в 3 часа интервал в 1,3 года (год и 3 месяца) | ||
---- | |||
<source lang=bash> | <source lang=bash> | ||
rrdtool create /home/ | rrdtool create /home/stats/sysload.$HOSTNAME.rrd --step 10 \ | ||
DS:load5:GAUGE:20:U:U \ | DS:load5:GAUGE:20:U:U: \ | ||
DS:load10:GAUGE:20:U:U \ | DS:load10:GAUGE:20:U:U \ | ||
DS:load15:GAUGE:20:U:U \ | DS:load15:GAUGE:20:U:U \ | ||
Строка 20: | Строка 21: | ||
==Добавление данных== | ==Добавление данных== | ||
Для предыдущей базы '''выполнять каждые 10 секунд'''. В качестве параметра передается путь к заполняемой базе. | |||
---- | |||
<source lang=bash> | <source lang=bash> | ||
Строка 29: | Строка 34: | ||
\e[32mUsage: \e[31m$0 \e[33mRRDBFILE | \e[32mUsage: \e[31m$0 \e[33mRRDBFILE | ||
\e[32mExample: \e[31m$0 \e[33m/home/$USER/ | \e[32mExample: \e[31m$0 \e[33m/home/$USER/sysload.rrd | ||
\e[0m" | \e[0m" | ||
exit 2 | exit 2 | ||
Строка 42: | Строка 47: | ||
fi | fi | ||
rrdtool update "${dbfile}" $( | rrdtool update "${dbfile}" $(gawk '{print systime()":"$1":"$2":"$3}' /proc/loadavg) | ||
</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 rrdtool graph "${2}" --imgformat PNG \ | |||
DEF:load5=${1}:load5:AVERAGE \ | |||
DEF:load10=${1}:load10:AVERAGE \ | |||
DEF:load15=${1}:load15:AVERAGE \ | |||
LINE1:load5#ea4619:'5 минут' \ | |||
LINE1:load10#ea6c19:'10 минут' \ | |||
LINE1:load15#eacc00:'15 минут' \ | |||
AREA:load5#a00000ff \ | |||
AREA:load10#dd0000dd \ | |||
AREA:load15#eacc0077 \ | |||
${size} \ | |||
--title "${4}" \ | |||
-s ${5} \ | |||
--upper-limit 3 \ | |||
--watermark="${HOSTNAME}" \ | |||
--slope-mode \ | |||
--lazy | |||
} | |||
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> | </source> | ||
[[Category:Round Robin Database]][[Category:Скрипт]] | [[Category:Round Robin Database]][[Category:Скрипт]] |
Текущая версия на 07:59, 12 сентября 2013
Создание базы
База создается с именем /home/stats/sysload.$HOSTNAME.rrd, интервал добавления данных - 10 секунд, 3 поля для информации по загрузке за 5, 10 и 15 минут, замеры с 4-мя ступенями разрешения:
- С разрешением в 10 секунд интервал в 100 минут (больше часа)
- С разрешением в 1,5 минуты интервал в 33 часа (больше суток)
- C разрешением в 10 минут интервал в 37 дней (больше месяца)
- С разрешением в 3 часа интервал в 1,3 года (год и 3 месяца)
rrdtool create /home/stats/sysload.$HOSTNAME.rrd --step 10 \
DS:load5:GAUGE:20:U:U: \
DS:load10:GAUGE:20:U:U \
DS:load15:GAUGE:20:U:U \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:8:1500 \
RRA:AVERAGE:0.5:64:5000 \
RRA:AVERAGE:0.5:512:8000
Добавление данных
Для предыдущей базы выполнять каждые 10 секунд. В качестве параметра передается путь к заполняемой базе.
#!/bin/bash
dbfile="$1"
if [ -z "${1}" ]; then
echo -e "
\e[32mUsage: \e[31m$0 \e[33mRRDBFILE
\e[32mExample: \e[31m$0 \e[33m/home/$USER/sysload.rrd
\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 [ ! -r /proc/loadavg ]; then
echo -e "\e[31mError: \e[35m/proc/loadavg:\e[31mcan't get info\e[0m"
exit 3
fi
rrdtool update "${dbfile}" $(gawk '{print systime()":"$1":"$2":"$3}' /proc/loadavg)
Создание графика
Первым параметром передается путь к базе, вторым - заголовок графика.
#!/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 rrdtool graph "${2}" --imgformat PNG \
DEF:load5=${1}:load5:AVERAGE \
DEF:load10=${1}:load10:AVERAGE \
DEF:load15=${1}:load15:AVERAGE \
LINE1:load5#ea4619:'5 минут' \
LINE1:load10#ea6c19:'10 минут' \
LINE1:load15#eacc00:'15 минут' \
AREA:load5#a00000ff \
AREA:load10#dd0000dd \
AREA:load15#eacc0077 \
${size} \
--title "${4}" \
-s ${5} \
--upper-limit 3 \
--watermark="${HOSTNAME}" \
--slope-mode \
--lazy
}
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