Nagios Мониторинг текста на сайте

10

Мне было интересно, могу ли я получить некоторую помощь с мониторингом текста на веб-сайте. IE Если бы я хотел отслеживать на google.com текст «Конфиденциальность», я подумал, что буду использовать следующую команду:

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

Но это не работает. Я получаю «ОК» независимо от того, что я помещаю в кавычки. Я явно использую либо неправильную команду, либо неправильную опцию. Пожалуйста помоги.

IOTAMAN
источник

Ответы:

7

Попробуйте оставить поставить -u. -u дает путь (страницу) для извлечения, по умолчанию "/", он не занимает весь URL. Вот мой вывод, когда я его опускаю.

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

Если вы хотите получить определенную страницу, используйте -u вот так

$ ./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
бледная лошадь
источник
У меня все еще есть проблема с моим реальным веб-сайтом, который я пытаюсь контролировать, вот что я получаю ./check_http -H mysite.myschool.edu -u "/ cp / home / displaylogin" -s "dsklajfdl" HTTP OK - HTTP / 1,1 302 Найдено - 0,003 секунды, время отклика | время = 0,003486 с ;;; 0,000000 размер =
104B ;;;
Или другой пример ./check_http -H mysite.myschool.edu -u "/index.html" -s "dsklajfdl" HTTP OK - HTTP / 1.1 302 Найдено - 0,003 секунды, время ответа | время = 0,003466 с ;; размер 0,000000; = 94B ;;; 0
IOTAMAN
Да, кажется, что если перенаправление (301 или 302) является ответом, то проверка игнорирует строку поиска, что, вероятно, является правильным. Ответ заключается в том, чтобы найти точный URL, на который вы перенаправлены. Вы должны быть в состоянии сделать это, перейдя на страницу в браузере. Если это не сработает, попробуйте получить к нему доступ через telnet, чтобы увидеть значение заголовка Locaction :.
бледная лошадь
1

Другим вариантом является использование check_curl с monitorexchange.org. На самом деле это слишком сложная вещь для того, что вы пытаетесь сделать, но я обнаружил, что она расширяет функциональность, когда вам это нужно для анализа данных с веб-сайтов и вставки входных данных.

Содержимое моего настроенного неизменяемого check_curl ниже:

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

breadly
источник
0

Мы написали собственный скрипт на Perl, используя LWP и HTML :: Tree для поиска определенных строк. Мы также просто md5sum некоторые страницы, где содержание не меняется.

Дэвид Пашли
источник
1
Я сам доволен check_http, но если вы предлагаете этот метод в качестве решения, возможно, предложите скрипт perl?
Дорогой
0

Если у меня возникает такая проблема с плагином check_http, я обычно вижу URL, в котором ищу текст, а затем проверяю вывод.

Если вам нужно нечто большее, чем check_http, например, вход на веб-сайт или проверка нескольких строк, взгляните на WebInject - это хороший плагин.

gareth_bowles
источник
0

Вам нужно указать -eопцию, чтобы -sопция имела желаемый эффект:

$ ./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
Адриан Фрювирт
источник
0

Вот несколько проверок, которые я использую.

Первый ищет текст CCServerServiceи сообщает об ошибке, если не видит его:

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
}

Второй проверяет текст errorи сообщает об ошибке, если видит его:

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
}
Кит Стоукс
источник