Nagios Memantau Teks di Situs Web

10

Saya bertanya-tanya apakah saya bisa mendapatkan bantuan dengan memonitor teks pada situs web. IE Jika saya ingin memonitor google.com untuk teks "Privasi", saya pikir saya akan menggunakan perintah berikut:

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

Tapi itu tidak berhasil. Saya mendapatkan "OK" tidak peduli apa yang saya kutip. Saya jelas menggunakan perintah yang salah atau opsi yang salah. Tolong bantu.

IOTAMAN
sumber

Jawaban:

7

Coba tinggalkan taruh -u. -u memberi path (halaman) untuk mengambil, defaultnya adalah "/", tidak mengambil seluruh URL. Ini adalah output saya ketika saya meninggalkannya.

$ ./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

Jika Anda ingin mendapatkan halaman tertentu, gunakan -u seperti ini

$ ./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
kuda pucat
sumber
Saya masih memiliki masalah dengan situs web saya yang sebenarnya yang saya coba pantau, inilah yang saya dapatkan ./check_http -H mysite.myschool.edu -u "/ cp / home / displaylogin" -s "dsklajfdl" HTTP OK - HTTP / 1.1 302 Ditemukan - 0,003 waktu respons kedua | waktu = 0,003486s ;;; 0,000000 size = 104B ;;; 0
IOTAMAN
Atau contoh lain adalah ./check_http -H mysite.myschool.edu -u "/index.html" -s "dsklajfdl" HTTP OK - HTTP / 1.1 302 Ditemukan - waktu respons 0,003 kedua | waktu = 0,003466s ;;; ukuran 0,000000; = 94B ;;; 0
IOTAMAN
Ya, tampaknya jika pengalihan (301 atau 302) adalah respons yang diabaikan oleh string pencarian, yang mungkin benar. Jawabannya adalah menemukan url persisnya yang sedang Anda arahkan. Anda harus dapat melakukannya dengan membuka halaman di browser. Jika itu tidak berhasil, cobalah mengaksesnya melalui telnet untuk melihat apa nilai header Lokasi:.
palehorse
1

Opsi lain adalah menggunakan check_curl dari monitoringexchange.org. Pada kenyataannya, ini adalah masalah yang terlalu rumit untuk apa yang Anda coba lakukan, tetapi saya telah menemukan itu memperluas fungsi ketika Anda membutuhkannya untuk mem-parsing data dari situs web dan memasukkan input

Isi check_curl non-variabel khusus saya di bawah:

 #!/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

seperti roti
sumber
0

Kami menulis skrip perl khusus menggunakan LWP dan HTML :: Tree untuk mencari string tertentu. Kami juga hanya md5sum beberapa halaman di mana konten tidak berubah.

David Pashley
sumber
1
Saya sendiri senang dengan check_http tetapi jika Anda menyarankan metode ini sebagai solusi, mungkin berikan skrip perl?
Mahal
0

Jika saya mendapatkan masalah seperti ini dengan plugin check_http, saya biasanya meletakkan URL yang saya cari di teks dan kemudian memeriksa hasilnya.

Jika Anda menginginkan sesuatu yang sedikit lebih dari check_http, seperti masuk ke situs web atau memeriksa lebih dari satu string, lihat di WebInject - ini adalah plugin yang bagus.

gareth_bowles
sumber
0

Anda harus menentukan -eopsi agar -sopsi memiliki efek yang diinginkan:

$ ./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
sumber
0

Berikut adalah beberapa cek yang saya gunakan.

Yang pertama mencari teks CCServerServicedan melaporkan kesalahan jika tidak melihatnya:

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
}

Yang kedua memeriksa teks errordan melaporkan kesalahan jika melihatnya:

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
sumber