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

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

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

Часть 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

18 комментариев “Мониторинг состояния nginx посредством Zabbix”

Комментирование закрыто.