首页 技术与阅读 生活 关于我

Zabbix源码分析 -- Zabbix前端创建Host分析

前端操作介绍

创建Host步骤:选择Configuration -> Hosts,点击Create host。

Zabbix Frontends Create Host

点击完Create host后,出现创建Host的界面,在此界面需要填写Host、Templates、IPMI、Macros、Host inventory的信息。

Zabbix Frontends Create Host 1

辅助文件

API.php

我们可以调用API.php中定义的相关函数,得到对应的类,再使用此类中的方法来处理请求(A map of classes that should handle the corresponding API objects requests)。

Manager.php

我们可以通过调用Manager.php得到数据库管理对象,利用数据库管理对象可以创建可被存储的实例(A class for creating a storing instances of DB objects managers)。

DB.php中提供了可以向数据库中做增删改查的函数。

主流程

Hosts.php

Hosts.php先从前端获取数据,做一些初始化工作,然后调用API::Host->create($host)来创建Host。

CHost.php

在Hosts.php中通过调用API::Host->create($host)来创建Host,通过API.php的映射,最终会调用CHost.php中定义的CHost->create($host)来创建Host。

CHost->create($host)中,先调用DB::insert('hosts_groups', $groupsToAdd)往hosts_groups表中插入数据;然后通过$result = API::Host()->massAdd($options)往相应表中插入数据,关于这个函数会在下面做进一步讲解;最后调用DB::insert('host_inventory', array($hostInventory), false)往host_inventory中插入数据。

CHost->massAdd(array $data)先使用$this->isWritable($hostIds)来检查权限;接下来再通过API::HostInterface()->massAdd()向interface表中插入数据;最后调用parent::massAdd($data)往数据库相应表中插入数据,这里的parent是指CHost类的父类,即CHostGeneral。

CHostGeneral.php中讲到类CHostGeneral有三个作用:add hosts to groups, link templates to hosts, add new macros to hosts.

add hosts to groups通过调用API::HostGroup()->massAdd()实现; link templates to hosts通过调用$this->link()实现; add new macros to hosts通过调用API::UserMacro()->create($hostMacrosToAdd)来实现。

CHostGenreal->link的作用如前所属就是link templates to hosts,它调用了很多类中的方法来实现,从这里到本文结束都是在讲CHostGeneral->link中调用的各方法的实现,因其太多不一一解释,仅列出源码,我们要记住一点的就是它们总的来说是在实现"link templates to hosts"这个目标。

CHostGeneral->link()方法

CHostBase.php

CApplicationManager.php

CDiscoveryRule.php

CItemPrototype.php

CHostPrototype.php

CItem.php

CHttpTestManager.php

CTrigger.php

CTriggerPrototype.php

CGraph.php

CTrigger.php

comments powered by Disqus

技术与阅读

生活

关于我