Проверка сайтов в Zenoss с использованием зенпака ZenWebTx
В Zenoss существует возможность мониторинга веб-сайтов, которая предоставляется зенпаком ZenPacks.zenoss.ZenWebTx.
Данный зенпак вносит следующие изменения:
- скриптовый язык twill
- monitoring template, предоставляющий специальный интерфейс для управления twill
- модули twill, подробнее описанные в конце статьи
Также имееется community-аналог этого зенпака, в котором отсутствуют элементы веб-интерфейса и модули twill.
Давайте посмотрим, каким образом это происходит, на примере сайта www.bureausolomatina.ru
- для начала добавим в zenoss новое устройство с именем и заголовком www.bureauolomatina.ru и классом устройства /Web. Моделировать устройство не нужно.
- далее bind templates -> ZenWebTx Example (/Devices)
- в добавленном template уже есть один источник данных и два data points. Заходим в свойства (View and edit details) источника данных и в поле twill commands удаляем все, чтобы избежать ошибок, связанных с отсутствием ожидаемой формы, которой на нашем сайте нет.
- теперь добавим свой источник данных Check_links, для которого в поле initial URL указываем http://${dev/getId} а в twill commands пишем следующий скрипт:
extend_with check_links extend_with twilltiming startTimer all_links check_links .*.bureausolomatina.ru/ printTimer all_links
скрипт выполняет следующие действия: импортирует 2 модуля twill (подробнее в конце), устанавливает таймер, проверяет все ссылки на нашем сайте (переход на который осуществляется автоматически до начала выполнения нашего скрипта - вспомните поле initial URL), которые соответствуют указанному регулярному выражению (т.е. все внутренние ссылки) и в конце останавливает таймер. - ну а дальше все просто: для нашего источника данных добавляем новый data point c именем таймера, а затем добавляем новый график, в котором рисуем этот data point.
Теперь у нас есть новый график, в котором видно время обхода всех внутренних ссылок на главной странице сайта. Опционально можно добавить новый threshold и также рисовать его на графике.
P.S.: модули twill, добавляемые зенпаком:
twilltiming
добавляет возможность замерять время выполнения команд. если создать data point c тем же именем, что и таймер, то можно рисовать его график и добавлять threshold.
- формат:
startTimer myTimerName
<commands>
printTimer myTimerName
twillextract
позволяет извлекать числовые значения со страниц для дальнейшего использования в качестве data point
- формат:
extract <dataName> <regularExpression>
- пример:
go http://www.zenoss.com
extract copyright "(?P<firstYear>[0-9]*)-(?P<secondYear>[0-9]*) Zenoss, Inc."
twillxpathextract
позволяет извлекать числовые значения из XML-документов.
- формат:
xpathextract <dataName> <xpath>
где <dataName> - имя data point
<xpath> - путь к числовому значению
ignorescripts
вырезает все теги <script> со страницы. несмотря на то, что twill игнорирует скрипты, возможна такая ситуация, когда строки в javascript могут быть интерпретированы как HTML-теги. чтобы избежать такой ситуации, добавляйте строку extend_with ignorescripts в начало каждого скрипта.
P.P.S.: команды twill, а также примеры их использования можно посмотреть на официальном сайте http://twill.idyll.org