Tekst monitorujący Nagios na stronie internetowej

10

Zastanawiałem się, czy mogę uzyskać pomoc w monitorowaniu tekstu na stronie internetowej. IE Gdybym chciał monitorować google.com pod kątem tekstu „Prywatność”, pomyślałem, że użyję następującego polecenia:

check_http -H google.com -u http://www.google.com -s "Privacy"

Ale to nie działa. Dostaję „OK” bez względu na to, co wpisuję w cudzysłów. Oczywiście używam niewłaściwego polecenia lub niewłaściwej opcji. Proszę pomóż.

IOTAMAN
źródło

Odpowiedzi:

7

Spróbuj wyjść, wstaw -u. -u podaje ścieżkę (stronę) do pobrania, domyślnie jest to „/”, nie przyjmuje całego adresu URL. Oto mój wynik, gdy go pomijam.

$ ./check_http -H www.google.com -s "Privacy"
HTTP OK HTTP/1.0 200 OK - 0.041 second response time |time=0.040579s;;;0.000000 size=5257B;;;0
$ ./check_http -H www.google.com -s "Privacyblahdibla"
HTTP CRITICAL - string not found|time=0.048169s;;;0.000000 size=5257B;;;0

Jeśli chcesz uzyskać konkretną stronę, użyj -u w ten sposób

$ ./check_http -H www.google.com -u "/ig" -s "Privacy"
HTTP OK HTTP/1.0 200 OK - 0.166 second response time |time=0.165896s;;;0.000000 size=87843B;;;0
Blady koń
źródło
Nadal mam problem z moją rzeczywistą witryną, którą próbuję monitorować, oto, co otrzymuję ./check_http -H mysite.myschool.edu -u "/ cp / home / displaylogin" -s "dsklajfdl" HTTP OK - HTTP / 1,1 302 Znaleziono - 0,003 sekundowy czas odpowiedzi | czas = 0,003486s ;;; 0,000000 rozmiar = 104B ;;; 0
IOTAMAN
Lub innym przykładem jest ./check_http -H mysite.myschool.edu -u "/index.html" -s "dsklajfdl" HTTP OK - HTTP / 1.1 302 Znaleziono - 0,003 sekundy czas odpowiedzi | czas = 0,003466s ;;; 0,000000 rozmiar = 94B ;;; 0
IOTAMAN
Tak, wygląda na to, że jeśli przekierowanie (301 lub 302) jest odpowiedzią, to sprawdzenie ignoruje szukany ciąg, co prawdopodobnie jest poprawne. Odpowiedzią jest znalezienie dokładnego adresu URL, na który następuje przekierowanie. Powinieneś być w stanie to zrobić, przechodząc do strony w przeglądarce. Jeśli to nie zadziała, spróbuj uzyskać dostęp do niego przez telnet, aby zobaczyć, jaka jest wartość nagłówka Locaction:.
palehorse
1

Inną opcją jest użycie check_curl z monitoringexchange.org. W rzeczywistości jest to zbyt skomplikowane zadanie dla tego, co próbujesz zrobić, ale odkryłem, że rozszerza ono funkcjonalność, gdy jest to potrzebne do analizowania danych ze stron internetowych i wstawiania danych wejściowych

Treść mojego dostosowanego niezmiennego cur_curl poniżej:

 #!/bin/bash
 PROG=/usr/local/bin/curl
 FILE=/tmp/check_curl
 HALT=PRIVACY

 $PROG -k -s http://www.google.com > $FILE

 STATUS=`grep Error $FILE | awk '{ print $0 }'`

 grep -w $HALT $FILE > /dev/null
 if [ $? -eq 0 ]
    then
      WORKING=`grep Privacy $FILE | awk '{ print $5 }'`
      echo "Works, Returns data of $WORKING"
      rm $FILE
 else echo "Doesn't return $WORKING"| $STATUS"
      exit 2
  fi

chlebowy
źródło
0

Napisaliśmy niestandardowy skrypt perla, używając LWP i HTML :: Tree do wyszukiwania określonych ciągów. Po prostu md5 sumujemy też niektóre strony, na których treść się nie zmienia.

David Pashley
źródło
1
Ja sam jestem zadowolony z check_http, ale jeśli sugerujesz tę metodę jako rozwiązanie, być może podaj skrypt perla?
Drogi
0

Jeśli mam taki problem z wtyczką check_http, zwykle zapominam o adresie URL, w którym szukam tekstu, a następnie sprawdzam wynik.

Jeśli chcesz czegoś, co robi coś więcej niż check_http, takiego jak logowanie do strony internetowej lub sprawdzanie więcej niż jednego ciągu, spójrz na WebInject - to ładna wtyczka.

gareth_bowles
źródło
0

Trzeba podać -eopcję dla -sopcji uzyskania pożądanego efektu:

$ ./check_http -H "www.eurocarparts.com" -u / -s "no such string"
OK - HTTP/1.1 302 Found - 0.476 second response time |time=0.475776s;;;0.000000 size=17701B;;;0

$ ./check_http -H "www.eurocarparts.com" -u / -s "no such string" -e 302
CRITICAL - string not found|time=1.633004s;;;0.000000 size=17701B;;;0

$ ./check_http -H "www.eurocarparts.com" -u / -s "0870" -e 302
HTTP OK HTTP/1.1 302 Found - 4.032 second response time |time=4.032120s;;;0.000000 size=17701B;;;0
Adrian Frühwirth
źródło
0

Oto kilka czeków, których używam.

Pierwszy szuka tekstu CCServerServicei zgłasza błąd, jeśli go nie widzi:

define command {
    command_name  check_cc_v5
    command_line  /usr/local/nagios/libexec/check_http -H $HOSTADDRESS$ -p 8080 -u /CCServer/CCServer --regex=CCServerService -w 3 -c 5 -t 10
}

Drugi sprawdza tekst errori zgłasza błąd, jeśli go zobaczy:

define command {
    command_name  check_wb_pps
    command_line  /usr/local/nagios/libexec/check_http -S -H $HOSTADDRESS$ -u /onlinestore/booking.php --regex=error --invert-regex -w 30 -c 60 -t 90
}
Keith Stokes
źródło