Мониторинг состояния nginx посредством Zabbix

— третий по полярности веб-сервер, если верить данным Netcraft. Так, по их данным за май 2010 года, число сайтов, обслуживаемых , превышает 12,98 миллионов.

В этой записи я собираюсь рассказать про nginx с модулем stub_status с помощью . Предполагается что -сервер уже настроен и на интересующем нас хосте стоит -агент.

Часть 1. Настройка nginx

Для того чтобы nginx отдавал свое состояние нужно добавить ему в конфиг строки:

 location = /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } 

Разрешаем просмотр состояния только с локальной машины, так как zabbix-агент установлен на самом сервере. Перезачитываем конфиг:

 /etc/init.d/nginx reload 

Часть 2. Скрипт

Первоисточник данного скрипта взят на официальном форуме Zabbix и немного обработан напильником. Итак, сохраним как ~/zabbix/scripts/nginx_status.sh:

 #!/bin/bash HOST=`/bin/hostname` SERVER='zabbix.yourdomain.com' CURL=/usr/bin/curl TMPF="/tmp/zabbix_ng_".`/bin/date +%H%M` $CURL -s "http://${HOST}/nginx_status" > ${TMPF} active=`cat $TMPF | grep "Active connections" | cut -d':' -f2` accepts=`cat $TMPF | sed -n '3p' | cut -d" " -f2` handled=`cat $TMPF | sed -n '3p' | cut -d" " -f3` requests=`cat $TMPF | sed -n '3p' | cut -d" " -f4` reading=`cat $TMPF | grep "Reading" | cut -d':' -f2 | cut -d' ' -f2` writing=`cat $TMPF | grep "Writing" | cut -d':' -f3 | cut -d' ' -f2` waiting=`cat $TMPF | grep "Waiting" | cut -d':' -f4 | cut -d' ' -f2` echo "${HOST} nginx.active $active" > ${TMPF} echo "${HOST} nginx.accepts $accepts" >> ${TMPF} echo "${HOST} nginx.handled $handled" >> ${TMPF} echo "${HOST} nginx.requests $requests" >> ${TMPF} echo "${HOST} nginx.reading $reading" >> ${TMPF} echo "${HOST} nginx.writing $writing" >> ${TMPF} echo "${HOST} nginx.waiting $waiting" >> ${TMPF} ~/zabbix/bin/zabbix_sender --zabbix-server ${SERVER} -s ${HOST} \ --port '10051' -i ${TMPF} > /dev/null 2>&1 rm ${TMPF} echo "1" exit 0 

Часть 3. Настройка агента

В Конфиг агента добавляем строку:

 UserParameter=nginx.all,~/zabbix/scripts/nginx_status.sh 

После чего перезапускаем:

 /etc/init.d/zabbix-agent restart 

Часть 4. Шаблон

Готовый шаблон с графиками:

Образцы графиков:
nginx requests

nginx connections

UPD. Импортировать шаблон тут:
zabbix import