zbx前端源码分析 -- 主机可用性(Availability)图标

就是上图所示的部分,有人问为啥他的监控项不是主动模式,可这些图标却仍然一直是灰色。本文不讨论解决问题的办法,只分析这些图标显示的底层实现原理。

zbx版本:3.0.19

首先可以看到这个页面对应的是hosts.php文件,具体位置是zabbix-3.0.19\frontends\php\hosts.php

这个文件的内容比较繁杂,我们只要知道在1117行$hosts = API::Host()->get([]),通过调用API的host->get功能,得到主机列表,然后在1187行封装进data变量中,最后在1201行$hostView = new CView('configuration.host.list', $data);将$data变量传递给configuration.host.list做Web页面渲染就ok。

CView在本文不赘述,以后再分析。

configuration.host.list也是个php文件,具体位置是frontends\php\include\views\configuration.host.list.php

这个文件主要做Web页面渲染,简单说这个文件的内容就是先创建个Table,并设置Header。

你猜对了,Header就是渲染的红框处的这部分。

然后将hosts.php传递过来的$data['hosts']通过foreach循环解析,其中可用性图标的判断和输出,是通过282行getHostAvailabilityTable($host)实现的。

getHostAvailabilityTable函数所在的文件是frontends\php\include\html.inc.php,从588行开始,看注释就知道这个函数的作用了:Returns zbx, snmp, jmx, ipmi availability status icons and the discovered host lifetime indicator.

时间原因,本文的分析非常粗,后续有时间再补充完善。

你可能感兴趣的:(zbx前端源码分析 -- 主机可用性(Availability)图标)