zabbix import

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


— третий по полярности веб-сервер, если верить данным 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


18 мыслей про “Мониторинг состояния nginx посредством Zabbix

  • MooOSE

    Спасибо, получилось. Но нигде не было указано, в какой конфиг вписать location, я вписал в один из «sites_available», и еще пришлось установить пакет zabbix-sender. Может кому-то поможет.

  • p2n

    Блин. Тэг неправильно указал и полную чушь в результате запостил…

    #!/bin/bash

    HOST=`/bin/hostname`
    SERVER='zabbix.yourdomain.com'
    CURL=/usr/bin/curl

    read -a stat <</dev/null 2>&1
    }

    echo "1"
    exit 0

  • p2n

    Раз используется bash, то предложу вариант покороче и без sed’ов/grep’ов/cut’ов:
    [code]
    #!/bin/bash

    HOST=`/bin/hostname`
    SERVER=’zabbix.yourdomain.com’
    CURL=/usr/bin/curl
    TMPF=»/tmp/zabbix_ng_».`/bin/date +%H%M`

    read -a stat << ${TMPF}

    ~/zabbix/bin/zabbix_sender —zabbix-server ${SERVER} -s ${HOST} \
    —port ‘10051’ -i ${TMPF} > /dev/null 2>&1

    rm ${TMPF}
    }

    echo «1»
    exit 0
    [/code]

    • Rascal От автора

      Видимо у вас какое-то правило отрабатывает раньше чем секция с nginx_status, переместите ее в конфиге как можно ближе к началу server {}, или создайте виртуальный хост без проксирования.

      • aceton

        Переместил. Не помогло. Попробую отписать вопрос на оф сайте, там кто-то уже тоже интересовался этим. Спасибо.

        • aceton

          Проблема решилась переделыванием конфига. В чем проблема так и не понял.
          Поясните еще пожалуйста, куда и как шаблон Template_NginxServer.xml цеплять?

      • Rascal От автора

        Добавил скрин импорта xml в Zabbix, после этого как обычный шаблон навешивается на любой хост через ту же вкладку «Configuration».

  • GTAlex

    у меня почему то секция /nginx_status не отрабатывает 🙁
    (ограничения по ip естестенно убрал)

    • Rascal От автора
       [email protected]:~$ nginx -V 

      В выводе есть —with-http_stub_status_module?

      • aceton

        Аналогично. В выводе —with-http_stub_status_module есть.

        • Rascal От автора

          А если открыть в браузере url указанный для stub_status что увидим?

          • aceton

            Извините, не понял, а где мы указываем url для stub_status?
            my.site.ru/nginx_status показывает, что страница не найдена.
            my.site.ru/ само собой отображает заглавную сайта.
            На все хосты сервера работает кеширование nginx.

          • Rascal От автора

            my.site.ru/nginx_status показывает, что страница не найдена.

            Средствами nginx или бекэнда?

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