Angular 单页应用程序的 Zabbix web 步骤

Angular 单页应用程序的 Zabbix web 步骤

我需要监控使用 AngularJS 构建的单页应用程序,它内部使用 ui-view 根据应用程序状态动态构建内容。

在最基本的状态下,应用程序仅在 AngularJS 引导并设置适当的视图后才会显示欢迎页面(但意义重大)。在此之前,DOM 没有相关内容,只有最终将被 ui-view 替换的元素的占位符。

Zabbix GET 请求返回的响应仅包含占位符,而不包含我需要检查的内容,因此即使应用程序按预期运行,Zabbix 也看不到内容。

我假设 Zabbix 没有处理 Javascript 并构建 DOM 表示。我已将 UA 字符串设置为实际浏览器的字符串,以防万一这会以某种方式强制它处理 JS,但无济于事。

使用 Zabbix 可以实现这个吗?

答案1

不,据我所知,其他任何监控系统都无法做到这一点。它们只是下载 URL 并检查其中的特定标头或内容。它们不支持 JavaScript。

这是使用 AngularJS 等纯 JavaScript 构建单页应用的众多缺点之一。这也是您的网页在 Google 中排名不佳或显示不理想结果的原因。

在你的申请中,有多种方法可以解决这个问题,所有这些方法都涉及在服务器端呈现内容。您需要选择这种方法并实现它。(当然,这并不考虑禁用 JavaScript 的用户,斯诺登事件后,这一数字不断增长,你唯一能做的就是扔掉你写的一切,然后重试。)

答案2

开箱即用是不可能的。Zabbix 仅使用标准 curl 库,不支持 javascript。您需要将 Zabbix 与一些能够使用 javascript 的 SW 集成,例如:Selenium、HtmlUnit、crawljax、PhantomJS、...

答案3

Zabbix 本身不支持该功能。您可以集成一些 QA 工具 - 例如,将使用浏览器引擎呈现页面。

但这需要设置 Selenium 并将其与 Zabbix 集成。Zabbix 诱捕器项目可能是实现整合的好方法。

相关内容