Проверка сайтов в Zenoss с использованием зенпака ZenWebTx

В Zenoss существует возможность мониторинга веб-сайтов, которая предоставляется зенпаком ZenPacks.zenoss.ZenWebTx.

Данный зенпак вносит следующие изменения:

  • скриптовый язык twill
  • monitoring template, предоставляющий специальный интерфейс для управления twill
  • модули twill, подробнее описанные в конце статьи

Также имееется community-аналог этого зенпака, в котором отсутствуют элементы веб-интерфейса и модули twill.

Давайте посмотрим, каким образом это происходит, на примере сайта www.bureausolomatina.ru

  1. для начала добавим в zenoss новое устройство с именем и заголовком www.bureauolomatina.ru и классом устройства /Web. Моделировать устройство не нужно.
  2. далее bind templates -> ZenWebTx Example (/Devices)
  3. в добавленном template уже есть один источник данных и два data points. Заходим в свойства (View and edit details) источника данных и в поле twill commands удаляем все, чтобы избежать ошибок, связанных с отсутствием ожидаемой формы, которой на нашем сайте нет.
  4. теперь добавим свой источник данных 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), которые соответствуют указанному регулярному выражению (т.е. все внутренние ссылки) и в конце останавливает таймер.
  5. ну а дальше все просто: для нашего источника данных добавляем новый 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

1774