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

Простая программа или скрипт для проверки времени загрузки веб-страницы

Я ищу простую программу или скрипт, вы даете ему 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 и скорость страницы - хороший вариант