LINUX.ORG.RU
ФорумAdmin

nagios - некорректное отображение статуса

 ,


0

2

Всем привет, Есть у меня сервис, который мониторит специфический урл, и при наличии определенной строки должен выдавать статус ОК (exit 0), при отсутствии - Critical (exit 2). Но проблема в том, что статус постоянно ОК, даже если Status Information от ошибки Critical. При проверке из консоли echo $? возвращает 2 (и 0 соответственно если условия верные). Вот сам скрипт:

#!/bin/bash

TF=/tmp/check_string
# Check for host name, www.comp.net must be checked from other.comp.net
if [ $HOSTNAME = "other.comp.net" ]
    then
        HHOST='www.comp.net'
    else
        HHOST=$HOSTNAME
fi

# Check specified URL 2 times and write results into temp file
for i in 1 2
        do
            curl -L -s -o $TF $HHOST/$1 >/dev/null
            sleep 5
        done

# Здесь строки, которые должны присутствовать в выдаче
RES=`grep -i "\"vasilii\": \"pupkin\"" $TF | sed 's/://g'`


# ass написано специально чтобы сгенерировать ошибку
if [ "$RES" == "\"ass\" \"pupkin\"" ]
    then
        echo "OK! String found on $HHOST"
        exit 0
    else
        echo "Error! String not found! Developers!!!"
        exit 2
fi
Вот выше в коде проверка не проходит, скрипт выводит сообщение Erro!.. и выходит со статусом 2, но в нагиосе у него все равно ОК, как такое может быть? Может кто-то подсказать мне, что я делаю не так и где моя ошибка?

Спасибо.


Ответ на: комментарий от victorb

Да, со Status Information все верно.

$HOSTNAME - это стандартная переменная баша. Для проверки добавлял ее в выхлоп скрипта - все отрабатывалось корректно.

Sirko ()
Последнее исправление: Sirko (всего исправлений: 1)
Ответ на: комментарий от Sirko

я к тому что скрипт запущенный из консоли и нагиосом могут иметь разные переменные;

А если сверху в скрипте написать

#!/bin/bash
echo test
exit 2
тоже ок будет?

victorb ★★ ()
Ответ на: комментарий от victorb

Попробовал и так - то же самое... Текст правильный (о ошибке), код - ОК.

Sirko ()
Ответ на: комментарий от victorb

Хм... Написал в самом начале

echo test
exit 2

Статус ОК... А чего так?

Кстати, забыл написать - скрипт работает через nrpe, может это как то влиять?

Спасибо.

Sirko ()
Ответ на: комментарий от Bers666

Ты не поверишь....

В общем, это был первоначальный вариант, с которого я начинал. Результат тот же. Потом решил наваять свой велосипед, но как видишь результат стабилен )

P.S. Да, если в начале скрипта написать exit 2 то статус все равно ОК, так что причина не в этом, а в том что какого то хрена не передается exit code 2.

Sirko ()
Последнее исправление: Sirko (всего исправлений: 1)
Ответ на: комментарий от Sirko

а попробуй нагиосовский плугин
/usr/lib/nagios/plugins/check_dummy 2
он должен вернуть CRITICAL в этом случае.
если нет, то конфиг nrpe в студию.

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

Попробовал, результаты интересные..

Сделал следующим образом:

command[check_dummy]=/usr/lib/nagios/plugins/check_dummy 2 "echos for $?"

В результате статус CRITICAL, но в сообщении написано следующее:

CRITICAL: echos for 0$
Тоесть, я правильно понял что в конце возвратился код возврата (во завернул) 0?

Или все нормально а мне нужно поспать?

Спасибо.

Sirko ()
Ответ на: комментарий от Sirko

гм, $? возвращенное плагином, стало 0$. Неважно, главное, что статус правильный.

Bers666 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.