Я ищу простую программу или скрипт, вы даете ему URL-адрес, и он делает следующее:
проверяет, сколько времени требуется для загрузки страницы, и сообщает это число
сообщает код ошибки или другой номер, когда сайт не отвечает
завершается после этого либо: не удается подключиться, успешно загружает страницу, либо через предварительно определенное количество секунд, указанное пользователем
Моя цель - интегрировать эту функциональность как внешнюю программу в Zabbix. Я выполнил поиск в Google, но не смог его найти.
Вы можете делать все, что хотите, с помощью комбинации time
и wget
команды - например:
time wget -q http://www.google.com/
time
напечатает время (в секундах / долях секунды), которое потребовалось для завершения wget
команда, и код возврата всего беспорядка будет любым wget
код возврата был бы (0 = успех, ненулевое значение указывает на различные сбои).
Это может быть дополнительно обернуто в соответствующий скрипт, чтобы определить, была ли страница успешно получена, и произвести вывод, подходящий Zabbix для получения и использования.
Я использую следующий сценарий, вероятно, с основными идеями, которые я позаимствовал из других источников. Он использует статистику curl:
estadistica () {
local site=$1
echo $site
echo ${site} | sed -n 's/./-/gp'
curl -w '
Lookup time:\t%{time_namelookup} s
Connect time:\t%{time_connect} s
Pretransfer time:\t%{time_pretransfer} s
Starttransfer time:\t%{time_starttransfer} s
Size download:\t%{size_download} bytes
Speed download:\t%{speed_download} bytes/s
Total time:\t%{time_total} s
' -o /dev/null -s $site
echo
}
for i in ${@}; do
estadistica $i
done
Допустим, это называется webstats; вот как это работает:
~/src$ bash webstats http://serverfault.com/questions/295194/simple-program-or-script-to-check-load-time-of-web-page http://www.google.com
http://serverfault.com/questions/295194/simple-program-or-script-to-check-load-time-of-web-page
-----------------------------------------------------------------------------------------------
Lookup time: 0,009 s
Connect time: 0,139 s
Pretransfer time: 0,139 s
Starttransfer time: 0,284 s
Size download: 37298 bytes
Speed download: 57153,000 bytes/s
Total time: 0,653 s
http://www.google.com
---------------------
Lookup time: 0,084 s
Connect time: 0,147 s
Pretransfer time: 0,147 s
Starttransfer time: 0,218 s
Size download: 218 bytes
Speed download: 1000,000 bytes/s
Total time: 0,218 s
Если что-то пойдет не так, вы можете это узнать (и, следовательно, сообщить zabbix), потому что полученные данные не логичны:
~/src$ bash webstats http://thisdoesntexist
http://thisdoesntexist
----------------------
Lookup time: 0,000 s
Connect time: 0,000 s
Pretransfer time: 0,000 s
Starttransfer time: 0,000 s
Size download: 0 bytes
Speed download: 0,000 bytes/s
Total time: 0,000 s
EDITED: параметр тайм-аута curl:
Просто чтобы ответить на ваш комментарий, у curl есть опция тайм-аута; со страницы руководства:
--connect-timeout <seconds>
Maximum time in seconds that you allow the connection to the
server to take. This only limits the connection phase, once
curl has connected this option is of no more use. See also the
-m/--max-time option.
http://phantomjs.org/ даст вам больше реального времени, потому что он загружает все ресурсы страницы и выполняет JS. Синтаксис довольно прост (простой JavaScript)
Я использую curl вместо wget, потому что wget генерирует слишком много файлов. Пример:
$ curl -o /dev/null -s -w %{time_total}\\n http://google.com
0.084
Далее вам нужно сделать - поместить это во внешний скрипт в вашем ${datadir}/zabbix/externalscripts
и назовите его с типом элемента "внешние проверки"
Это: http://tools.pingdom.com/
В качестве альтернативы было бы очень легко написать простой сценарий, чтобы сделать это самостоятельно и вывести его в определенном формате.
Я думаю, что опция firefox firebug и скорость страницы - хороший вариант