Мониторинг загрузки веб-сервера lighttpd

()

Многие системные администраторы выбирают веб-сервер lighttpd за его простоту и удобство, однако очень часто встаёт вопрос мониторинга нагрузки на веб-сервер. Ниже будет показано как настроить мониторинг lighttpd с помощью модуля rrdtool.

Итак, уточняем начальные условия: сервер под управлением Ubuntu Server 8.10 с запущенным на нём lighttpd. Нужно организовать мониторинг нагрузки этого веб-сервера.

Первым делом установим пакет rrdtool:

apt-get install rrdtool

Далее действовать будем практически в полном соответствии с официальной инструкцией, опубликованной на странице проекта lighttpd, разве что будем делать поправки под особенности Debian-based дистрибутивов. Заодно отдельно настроим ведение лога скриптом-построителем графика.

Включаем модуль rrdtool:

lighty-enable-mod rrdtool

Далее открываем в редакторе файл /etc/lighttpd/conf-enabled/10-rrdtool.conf и приводим его к следующему виду:

# Собственно подключение модуля rrdtool
server.modules += ( "mod_rrdtool" )

# Путь к бинарному файлу rrdtool
rrdtool.binary   = "/usr/bin/rrdtool"

# Путь к файлу, где будет храниться информация для rrdtool
# Файл существовать не должен. Он будет создан при первом запуске веб-сервера
# Соответственно права на директорию, где будет этот файл, должны позволить пользователю,
# от которого работает lighttpd, (в данном случае это www-data) создать этот файл.
rrdtool.db-name   = "/var/www/lighttpd.rrd"

После этого перезапускаем веб-сервер:

invoke-rc.d lighttpd force-reload

И убеждаемся что файл создался:

ls -lh /var/www/lighttpd.rrd

Далее создадим директорию, в которую будем складывать графики загрузки сервера:

mkdir -p /var/www/lighttpd-stat/html

Следующим шагом создадим скрипт, с помощью которого будем генерировать графики. Он так же практически полностью скопирован с официальной инструкцией, за исключением одного: вывод сообщений в stdout заменён записью в лог. Вот листинг обновлённого скрипта:

#!/bin/sh

# Путь к rrdtool
RRDTOOL=/usr/bin/rrdtool
# Директория где будут графики
OUTDIR=/var/www/lighttpd-stat/html
# Путь к файлу с данным
INFILE=/var/www/lighttpd.rrd
# Размер графика (без учёта полей)
WIDTH=400
HEIGHT=100
# Лог для сообщений от rrdtool
LOGFILE=/var/log/lighttpd-stat.log

# Префикс имени файла
OUTPRE=lighttpd-traffic

# Описываем графики
DISP="-v bytes --title TrafficWebserver \
        DEF:binraw=$INFILE:InOctets:AVERAGE \
        DEF:binmaxraw=$INFILE:InOctets:MAX \
        DEF:binminraw=$INFILE:InOctets:MIN \
        DEF:bout=$INFILE:OutOctets:AVERAGE \
        DEF:boutmax=$INFILE:OutOctets:MAX \
        DEF:boutmin=$INFILE:OutOctets:MIN \
        CDEF:bin=binraw,-1,* \
        CDEF:binmax=binmaxraw,-1,* \
        CDEF:binmin=binminraw,-1,* \
        CDEF:binminmax=binmaxraw,binminraw,- \
        CDEF:boutminmax=boutmax,boutmin,- \
        AREA:binmin#ffffff: \
        STACK:binmax#f00000: \
        LINE1:binmin#a0a0a0: \
        LINE1:binmax#a0a0a0: \
        LINE2:bin#efb71d:incoming \
        GPRINT:bin:MIN:%.2lf \
        GPRINT:bin:AVERAGE:%.2lf \
        GPRINT:bin:MAX:%.2lf \
        AREA:boutmin#ffffff: \
        STACK:boutminmax#00f000: \
        LINE1:boutmin#a0a0a0: \
        LINE1:boutmax#a0a0a0: \
        LINE2:bout#a0a735:outgoing \
        GPRINT:bout:MIN:%.2lf \
        GPRINT:bout:AVERAGE:%.2lf \
        GPRINT:bout:MAX:%.2lf"

# Генерируем графики
$RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT >> $LOGFILE
$RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT >> $LOGFILE
$RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT >> $LOGFILE

# Префис имени файла
OUTPRE=lighttpd-requests

# Описываем графики
DISP="-v req --title RequestsperSecond -u 1 \
        DEF:req=$INFILE:Requests:AVERAGE \
        DEF:reqmax=$INFILE:Requests:MAX \
        DEF:reqmin=$INFILE:Requests:MIN \
        CDEF:reqminmax=reqmax,reqmin,- \
        AREA:reqmin#ffffff: \
        STACK:reqminmax#00f000: \
        LINE1:reqmin#a0a0a0: \
        LINE1:reqmax#a0a0a0: \
        LINE2:req#00a735:requests"

# Генерируем графики
$RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT >> $LOGFILE
$RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT >> $LOGFILE
$RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT >> $LOGFILE

Этот скрипт нужно сохранить под именем /usr/local/bin/lighttpd_rrdtool.sh и сделать его исполняемым:

chmod +x /usr/local/bin/lighttpd_rrdtool.sh

После нужно добавить в файл /etc/crontab запись для периодического запуска этого скрипта:

# Generate lighttpd stat graph
*/10	*	*	*	*	root	/usr/local/bin/lighttpd_rrdtool.sh

Через некоторое время в заданной директории начнут появляться графики. Для удобного просмотра полезно создать индексный файл. Для этого достаточно самых минимальных знаний HTML. Автор создал у себя файл следующего содержания:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
        <title>Lighttpd traffic & requests</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <meta http-equiv="content-style-type" content="text/css">
        <meta http-equiv="refresh" content="600">
</head>

<body>
    <h2 align=center>Lighttpd Traffic</h2>
    <table align=center border=0 cellspacing=0 cellpadding=5>
	<tr><td><img src="lighttpd-traffic-hour.png"   alt="graph1"></td></tr>
        <tr><td><img src="lighttpd-traffic-day.png"    alt="graph2"></td></tr>
        <tr><td><img src="lighttpd-traffic-month.png"  alt="graph3"></td></tr>
    </table>
    <h2 align=center>Lighttpd Requests</h2>
    <table align=center border=0 cellspacing=0 cellpadding=5>
        <tr><td><img src="lighttpd-requests-hour.png"  alt="graph4"></td></tr>
        <tr><td><img src="lighttpd-requests-day.png"   alt="graph5"></td></tr>
        <tr><td><img src="lighttpd-requests-month.png" alt="graph6"></td></tr>
    </table>
  </body>
</html>

На это всё. Приятной работы!

Ключевые слова: lighttpd, мониторинг, rrdtool, mod_rrdtool.

Комментарии:

Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE