Попытка
check_http -H www.example.com -f follow -p 8080 -u /hello/#/world -s "content"
Результат
HTTP WARNING: HTTP/1.1 404 Not Found - X bytes in 0.00X second response time |time=0.00XYZ
Анализ
Хотя было прочитано несколько источников [1,2,3,4 ] и Wget, т.е. wget www.example.com:8080/hello/#/world
возвращает ОК, неясно, check_http
не работает.
Возможно #
вызывает проблему. В соответствии с эта документация то #
является якорем, что означает, что если var x
который x
является #/world
, но это не помогает решить проблему.
Скачивание www.example.com
используя wget, а затем проверьте world
button указывает, что эта кнопка связана с источником javascript. Этот вывод тоже не помог решить проблему.
Попытка два
check_http -H www.example.com -f follow -p 8080 -u /hello/\#/world -v
Результат второй
GET /hello/#/world HTTP/1.1
User-Agent: check_http/vX (nagios-plugins X)
Connection: close
Host: www.example.com:8080
http://www.example.com:8080/hello/#/world is X characters
STATUS: HTTP/1.1 404 Not Found
**** HEADER ****
Server: Apache-Coyote/X
Content-Type: text/html;charset=utf-8
Content-Length: X
Date: Thu, Day Month Year Time GMT
Connection: close
**** CONTENT ****
<html><head><title>ApplicationServer - Error report</title><style></style> </head><body><h1>HTTP Status 404 - /hello/#/world</h1><p><b>type</b> Status report</p><p><b>message</b> <u>/hello/#/world</u></p><p><b>description</b> <u>The requested resource (/hello/#/world) is not available.</u></p><h3>ApplicationServer</h3></body></html>
HTTP WARNING: HTTP/1.1 404 Not Found - X bytes in 0.00X second response time |time=0.00Xs;;;0.000000 size=XB;;;0
Анализ второй
Функциональный
Если хотите посмотреть http://www.example.com:8080/hello/#/world, нужно перейти к http://www.example.com:8080/hello и нажмите на world
кнопка. После нажатия кнопки содержимое можно просмотреть и проверить с помощью firebug.
Технический
URL загружается с помощью Wget. Страница содержит несколько источников JavaScript, которые представляют кнопки, например:
<script src="button.js"></script>
<script src="world.js"></script>
Существует расхождение между функциональным и техническим обзором. Контент, который можно просматривать и проверять с помощью Firebug, не отображается на странице, загруженной с помощью Wget.
В check_http
плагин будет видеть только то, что вам показывает wget / curl, поэтому он не может проверить, что вы хотите, чтобы он проверял.
Если вам нужна проверка, которая действительно может запускать клиентский javascript, вам нужно изучить что-то вроде WebInject с участием check_webinject, Селен с участием check_selenium (как обсуждалось в эта почта), или, может быть Сахи и Сакули.
В #
стоит на якоре, это правильно. Они должны интерпретироваться клиентом, а не сервером. Якорь является частью сайта, поэтому нужно загрузить весь сайт и искать в нем якорь.
Вместо этого вам следует использовать следующую проверку:
check_http -H www.example.com -f follow -p 8080 -u /hello/
Позже вы могли добавить -s world
для поиска «мира» в содержимом HTML (если он есть и не добавлен через другой уровень JavaScript).