Назад | Перейти на главную страницу

Как проверить содержимое URI, содержащего хэш, с помощью check_http от Nagios?

Попытка

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).