
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
В первый раз у меня выдало сообщение:
Как видно, ошибка с правами доступа, ведь проверял я это не с локального сервера. Исправим:
root@debian7:~# nano /etc/apache2/apache2.conf
В самом конце, где мы дописывали ряд строк, изменяем:
Allow from .your_domain.com additional-ip-or-domain
Вместо «additional-ip-or-domain» вставьте один или несколько необходимых адресов через пробел.
Перезапускаем apache и снова переходим по ссылке (см. выше):
Установим 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-интерфейс. Для этого проходим в Настройка>Шаблоны, нажимаем справа вверху «Импорт» и добавляем шаблон. Подцепляем шаблон к нужным узлам мониторинга — Узлы сети > выбираем нужный узел > вкладка «Шаблоны» > соединяем с новым шаблоном > нажимаем «Добавить» > нажимаем «Обновить».
Помимо загрузки необходимо добавить макрос, чтобы в каждый элемент данных этот макрос подставлял необходимую адресную строку. Определить работу макроса можно в рамках шаблона или или узла сети. В нашем случае подойдет второй вариант. Нажимаем на нужный узел сети, переходим на вкладку «Макросы» и устанавливаем следующие настройки:
Нажимаем кнопку «Добавить» и «Обновить».
Через некоторое время проверим прием данных:
Настройка завершена.
Использованные источники:
Enabling and using apache’s mod_status on Debian
Monitoring Apache with mod_status
Мониторинг параметров Apache2 в Zabbix
comments powered by HyperComments