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

Веб-шаги Zabbix для одностраничного приложения Angular

Мне нужно отслеживать одностраничное приложение, созданное с использованием AngularJS, которое внутренне использует ui-view для динамического создания контента в зависимости от состояния приложения.

В самом базовом состоянии приложение отображает страницу приветствия - но значительно - только после того, как AngularJS загрузится и установит соответствующий вид. Пока это не произойдет, в DOM нет соответствующего контента, только заполнители для элементов, которые в конечном итоге будут заменены ui-view.

Ответ, возвращаемый запросом Zabbix GET, содержит только заполнители, а не контент, который мне нужно проверить, поэтому, даже если приложение работает должным образом, Zabbix не видит контент.

Я предполагаю, что Zabbix не обрабатывает Javascript и не строит представление DOM. Я установил строку UA для фактического браузера, на случай, если это каким-то образом заставит его обрабатывать JS, но безрезультатно.

Возможно ли это с помощью Zabbix?

Нет, и это невозможно с любой другой системой мониторинга, о которой я знаю. Они просто загружают URL-адрес и проверяют его на наличие определенных заголовков или содержимого. Они не поддерживают JavaScript.

Это один из многих недостатков создания одностраничного приложения исключительно на JavaScript с помощью чего-то вроде AngularJS. По этой же причине ваша страница не имеет высокого рейтинга и не показывает желаемые результаты в Google.

В вашем приложении есть различные способы справиться с этим, все из которых включают рендеринг содержимого на стороне сервера. Вам нужно выбрать такой метод и реализовать его. (Конечно, это не касается пользователи, отключившие JavaScript(число после Сноудена постоянно растет, и единственное, что вы можете сделать там, это выбросить все, что вы написали, и попробовать еще раз).

Это невозможно из коробки. Zabbix использует только стандартную библиотеку curl, которая не поддерживает javascript. Вам нужно будет интегрировать Zabbix с некоторым ПО, которое может использовать javascript, например: Selenium, HtmlUnit, crawljax, PhantomJS, ...

Zabbix не поддерживает это изначально. Вы можете интегрировать некоторые инструменты контроля качества - например, Селен отобразит страницу с помощью движков браузера.

Однако для этого потребуется настроить Selenium и интегрировать его с Zabbix. Элементы Zabbix trapper может быть хорошим способом интеграции.