Portál AbcLinuxu, 6. května 2025 06:18

Dotaz: Nagios, check_http, regexp a logika vyhodnocení statusu

26.2.2009 16:21 majales | skóre: 29 | blog: Majales
Nagios, check_http, regexp a logika vyhodnocení statusu
Přečteno: 385×
Odpovědět | Admin

Zdravím,

Chtěl jsem ze zeptat, zda někdo neví jak přemluvit check_http plugin Nagiosu aby bral v potaz nezbytnost ověření odpovědi pomoci regexpu a pokud tam daný patern nenajde tak zahlásil status failed nebo alespoň warning...

 

Současná situace je následující:

Následující check jsem si odladil v terminálu a pak jsem ho zapsal do konfigurace nagiosu...

/usr/lib/nagios/plugins/check_http -H jméno_stroje-u "/servlet/něco.něcojiného.ještěněco?Parametr1=hodnota1&parametr2=hodnota2" -v -r 'regexp_string' --post=tělopostu

 

Krásně to funguje ale pokud se stane že vypadne ta služba který zajištuje aby v odpovědi na POST byl správný 'regexp_string'  tak mi Nagios nic nenahlásí a stále má status této služby jako OK a pouze ve status information najdu hlášku "HTTP Critical - pattern not found". Pokud je vše v pořádku tak to hlásí "HTTP OK HTTP/1.1 200 OK -0.01 second response time"

Nevíte někdo jak to přemluvit? A nebo se to dá vyřešit jen modifikací check_http pluginu?

 

 

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.2.2009 17:42 NN
Rozbalit Rozbalit vše Re: Nagios, check_http, regexp a logika vyhodnocení statusu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Dobry den,

Bez  upravy kodu to nepujde, nasel jsem tam chybu:

-----------------------------------------

  else if ((errcode == REG_NOMATCH && invert_regex == 0) || (errcode == 0 && invert_regex == 1)) {
      if (invert_regex == 0)
        msg = strdup(_("pattern not found"));
      else
        msg = strdup(_("pattern found"));
      printf (("%s - %s%s|%s %s\n"),
        _("HTTP CRITICAL"),
        msg,
        (display_html ? "</A>" : ""),
        perfd_time (elapsed_time), perfd_size (pagesize));
      exit (STATE_CRITICAL);

-----------------------------------------

Ale pokud to vrati "pattern not found" tak to nevyhodi exit status,

ale jede to dal, takze to opravime asi takto:

  else if ((errcode == REG_NOMATCH && invert_regex == 0) || (errcode == 0 && invert_regex == 1)) {
      if (invert_regex == 0)
        msg = strdup(_("pattern not found"));

    printf (("%s - %s%s|%s %s\n"),
        _("HTTP CRITICAL"),
        msg,
        (display_html ? "</A>" : ""),
        perfd_time (elapsed_time), perfd_size (pagesize));
      exit (STATE_CRITICAL);

      else
        msg = strdup(_("pattern found"));
      printf (("%s - %s%s|%s %s\n"),
        _("HTTP CRITICAL"),
        msg,
        (display_html ? "</A>" : ""),
        perfd_time (elapsed_time), perfd_size (pagesize));
      exit (STATE_CRITICAL);

-----------------------------------------

Skuste to jinak se to da postnout jako bug.

NN

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.