Мониторинг Apache в ZABBIX

Apache в ZABBIX

http://www.zabbix.com/

Apache является чуть ли не самым распространенным веб-сервером в мире, а потому мониторинг его производительности дело достаточно актуальное. Благо для Zabbix есть масса шаблонов в сети, позволяющих отслеживать производительность web-сервера Apache. Настройкой одного из них я и займусь в этой статье.

Отслеживать Apache будем на самом же сервере Zabbix. Все остальные настройки будут упомянуты в процессе.


Вводная статья по шаблонам мониторинга ZABBIX — Шаблоны ZABBIX.

Если вам интересна тематика ZABBIX, рекомендую обратиться к основной статье — Система мониторинга ZABBIX, в ней вы найдете дополнительную информацию.


Скрипт мониторинга Apache в ZABBIX

Создадим каталог для скриптов zabbix-агента с предустановленными правами. У меня он уже был, но я на всякий случай напишу команды, которые я использовал для его создания:
root@debian7:~# mkdir -m 750 /usr/local/etc/zabbix_agent_scripts
Меняем владельца каталога:
root@debian7:~# chown root:zabbix /usr/local/etc/zabbix_agent_scripts
Создадим файл со скриптом:
root@debian7:~# nano /usr/local/etc/zabbix_agent_scripts/apache-stats.sh

С содержанием:

#!/bin/bash
if [[ -z «$1» || -z «$2» || -z «$3″ ]]; then
exit 1
fi
##### PARAMETERS #####
RESERVED=»$1″
METRIC=»$2″
URL=»$3″
STATSURL=»${URL}?auto»
#
CACHE_TTL=»55″
CACHE_FILE=»/tmp/zabbix.apache2.`echo ${URL} | md5sum | cut -d» » -f1`.cache»
EXEC_TIMEOUT=»2″
NOW_TIME=`date ‘+%s’`
##### RUN #####
if [ -s «${CACHE_FILE}» ]; then
CACHE_TIME=`stat -c»%Y» «${CACHE_FILE}»`
else
CACHE_TIME=0
fi
DELTA_TIME=$((${NOW_TIME} — ${CACHE_TIME}))
#
if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
sleep $((${EXEC_TIMEOUT} — ${DELTA_TIME}))
elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
echo «» >> «${CACHE_FILE}» # !!!
DATACACHE=`curl -sS —insecure —max-time ${EXEC_TIMEOUT} «${STATSURL}» 2>&1`
echo «${DATACACHE}» > «${CACHE_FILE}» # !!!
echo «URL=${URL}» >> «${CACHE_FILE}» # !!!
chmod 640 «${CACHE_FILE}»
fi
#
if [ «${METRIC}» = «accesses» ]; then
cat «${CACHE_FILE}» | grep -i «accesses» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «kbytes» ]; then
cat «${CACHE_FILE}» | grep -i «kbytes» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «cpuload» ]; then
cat «${CACHE_FILE}» | grep -i «cpuload» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «uptime» ]; then
cat «${CACHE_FILE}» | grep -i «uptime» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «avgreq» ]; then
cat «${CACHE_FILE}» | grep -i «ReqPerSec» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «avgreqbytes» ]; then
cat «${CACHE_FILE}» | grep -i «BytesPerReq» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «avgbytes» ]; then
cat «${CACHE_FILE}» | grep -i «BytesPerSec» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «busyworkers» ]; then
cat «${CACHE_FILE}» | grep -i «BusyWorkers» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «idleworkers» ]; then
cat «${CACHE_FILE}» | grep -i «idleworkers» | cut -d’:’ -f2 | head -n1
fi
if [ «${METRIC}» = «totalslots» ]; then
cat «${CACHE_FILE}» | grep -i «Scoreboard» | cut -d’:’ -f2 | sed -e ‘s/ //g’ | wc -c | awk ‘{print $1-1}’
fi
#
exit 0

Изменим владельца скрипта:
root@debian7:~# chown root:zabbix /usr/local/etc/zabbix_agent_scripts/apache-stats.sh
Установим права:
root@debian7:~# chmod 550 /usr/local/etc/zabbix_agent_scripts/apache-stats.sh

Настройка Apache

Подгружаем модуль, необходимый для мониторинга:
root@debian7:~# a2enmod info
To activate the new configuration, you need to run:
service apache2 restart

Раз просят перезапуститься, так и делаем:
root@debian7:~# service apache2 restart
[ ok ] Restarting web server: apache2 … waiting …

Отредактируем конфигурационный файл apache:
root@debian7:~# nano /etc/apache2/apache2.conf
В самый конец файла добавим:
ExtendedStatus on

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .your_domain.com
</Location>

Где «.your_domain.com» — адрес zabbix-сервера.

Перезагрузим сервер:
root@debian7:~# /etc/init.d/apache2 force-reload
[ ok ] Reloading web server config: apache2.

Для проверки работы зайдем по следующей ссылке: http://your-domain-or-ip/server-status
В первый раз у меня выдало сообщение:
zabbix apache monitoring 01

Как видно, ошибка с правами доступа, ведь проверял я это не с локального сервера. Исправим:
root@debian7:~# nano /etc/apache2/apache2.conf
В самом конце, где мы дописывали ряд строк, изменяем:
Allow from .your_domain.com additional-ip-or-domain
Вместо «additional-ip-or-domain» вставьте один или несколько необходимых адресов через пробел.

Перезапускаем apache и снова переходим по ссылке (см. выше):
zabbix apache monitoring 02

Установим curl:
root@debian7:~# apt-get install curl

Проверим отдаются ли данные с самого сервера:
root@debian7:~# curl http://your-server-ip/server-status
Не должно приходить никаких ошибок.
Настройка zabbix-агента

Создаем файл с пользовательскими параметрами:
root@debian7:~# nano /usr/local/etc/zabbix_agent_configs/apache2.conf
В конце файла вставляем следующий текст:
UserParameter=apache2[*],/usr/local/etc/zabbix_agent_scripts/apache-stats.sh «none» «$1» «$2»
В файле конфигурации агента zabbix должны быть произведены следующие настройки:
root@debian7:~# nano /usr/local/etc/zabbix_agentd.conf
Нам нужен параметр «Include«, задаем ему следующее значение:
Include=/usr/local/etc/zabbix_agent_configs

Перезапускаем агента:
root@debian7:~# service zabbix-agent restart

Проверяем:
root@debian7:~# zabbix_get -s 127.0.0.1 -k «apache2[accesses,http://your-server-ip/server-status]»
10885

Загружаем готовый шаблон:
Шаблон для мониторинга Apache2 (Agent)
Дальше необходимо добавить шаблон мониторинга на наш zabbix-сервер через web-интерфейс. Для этого проходим в Настройка>Шаблоны, нажимаем справа вверху «Импорт» и добавляем шаблон. Подцепляем шаблон к нужным узлам мониторинга — Узлы сети > выбираем нужный узел > вкладка «Шаблоны» > соединяем с новым шаблоном > нажимаем «Добавить» > нажимаем «Обновить».

Помимо загрузки необходимо добавить макрос, чтобы в каждый элемент данных этот макрос подставлял необходимую адресную строку. Определить работу макроса можно в рамках шаблона или или узла сети. В нашем случае подойдет второй вариант. Нажимаем на нужный узел сети, переходим на вкладку «Макросы» и устанавливаем следующие настройки:
zabbix apache monitoring 03Нажимаем кнопку «Добавить» и «Обновить».

Через некоторое время проверим прием данных:
zabbix apache monitoring 04

Настройка завершена.


Использованные источники:

Enabling and using apache’s mod_status on Debian

Monitoring Apache with mod_status

Мониторинг параметров Apache2 в Zabbix

Шаблоны Zabbix

1 Пользовательские макросы

comments powered by HyperComments