Мониторинг загрузки процессора, сети - collectd (графики rrdtool)

Категория: / DEV Блог / Сервер (FreeBSD)
Используем для наших злостных целей демон collectd.
К сожалению, его нет в портах, поэтому забираем его с сайта разработчиков http://collectd.org/.

Для начала необходимо поставить утилиту для хранения и обработки статистики

cd  /usr/ports/databases/rrdtool
make
make install


Мне нужны были показатели сетевых интерфейсов и загрузка проца, поэтому больше ничего ставить не пришлось.
Единственное libstatgrab не собирался без CFLAGS=-ldevstat.

Собираем collectd
Для просмотра возможных фукнций сборки - ./configure --help

./configure --disable-wireless --disable-vserver --disable-tape --disable-dns --disable-email --disable-iptables --disable-perl --with-libmysql=/usr/tmp/collectd-4.0.5 --with-libstatgrab=/usr/tmp/collectd-4.0.5 --with-rrdtool=/usr/local CFLAGS=-ldevstat
make
make install


Про --prefix забыл, оно поставилось в /opt.. :)

Демон запускается командой /opt/collectd/sbin/collectd и каждые 15 секунд пишет данные о состоянии системы в базу данных.
rrd файлы лежат в /opt/collectd/var/lib/collectd/rrd/YOURHOST

Для отрисовки графиков можно воспользоваться пакетом rrdraw.

К примеру генерация картинок нагрузки канала и CPU. Файл можно повесить на крон и показывать картинки на сайта в разделе статистика.

#!/bin/bash
 
apl_='#'
 
/usr/local/bin/rrdtool graph /vhosts/main/server/cpu.png \
 -e now \
 -s 'end - 5 hours' \
 -S 60 \
 --title 'CPU USAGE' \
 --vertical-label % \
 --imgformat PNG \
 --slope-mode   \
 --color SHADEA${apl_}FFFFFF \
 --color SHADEB${apl_}FFFFFF \
 --color BACK${apl_}FFFFFF \
 -w 680 \
 -h 150 \
 --interlaced \
 DEF:a=/opt/collectd/var/lib/collectd/rrd/j4ckHOST/cpu-0//cpu-idle.rrd:value:MAX \
 DEF:b=/opt/collectd/var/lib/collectd/rrd/j4ckHOST/cpu-0//cpu-system.rrd:value:MAX \
 DEF:c=/opt/collectd/var/lib/collectd/rrd/j4ckHOST/cpu-0//cpu-user.rrd:value:MAX \
 LINE1:a#C0C0C0:Idle \
 AREA:b#00FF00:System \
 AREA:c#0000FF:User
 
/usr/local/bin/rrdtool graph /vhosts/main/server/network.png \
 -e now \
 -s 'end - 5 hours' \
 -S 60 \
 --title 'NETWORK' \
 --vertical-label % \
 --imgformat PNG \
 --slope-mode   \
 --color SHADEA${apl_}FFFFFF \
 --color SHADEB${apl_}FFFFFF \
 --color BACK${apl_}FFFFFF \
 -w 680 \
 -h 150 \
 --interlaced \
 DEF:a=/opt/collectd/var/lib/collectd/rrd/j4ckHOST/interface//if_octets-rl0.rrd:tx:MAX \
 DEF:b=/opt/collectd/var/lib/collectd/rrd/j4ckHOST/interface//if_octets-rl0.rrd:rx:MAX \
 DEF:c=/opt/collectd/var/lib/collectd/rrd/j4ckHOST/interface//if_errors-rl0.rrd:tx:MAX \
 AREA:a#0000FF:Tx \
 AREA:b#00FF00:Rx \
 LINE1:c#FF0000:Errors




Скрипт для автозапуска демона в /usr/local/etc/rc.d/

#
# collectd_enable="YES"
#
 
colletcd_enable=${collectd_enable:-"NO"}
 
. /etc/rc.subr
 
name=collectd
rcvar=`set_rcvar`
 
command=/opt/collectd/sbin/collectd
 
load_rc_config ${name}
run_rc_command "$1"


Не забываем добавить collectd_enable="YES" в rc.conf.

Author: J4ck
Greetz!