最近项目进行二期开发,要新增一些功能作为自己公司的产品开发。主要开发采集器,采集软件指标。
首先从理论上理解这个采集器:利用zabbix进行监控,zabbix监控分为主动和被动,
被动:server向agent发出请求,请求获取监控项的数据,agent响应请求。
主动:agent请求server获取主动监控项列表,并主动将监控项内需要检测的数据提交给server/proxy。
参见:http://blog.csdn.net/u010738184/article/details/49820221
zabbix请求传递数据都是使用json。
采集器原理:采集器用脚本实现,通过执行采集器脚本,来实现对软件指标的采集,并将指标以socket的形式传递给zabbix server。
将功能封装起来即可。
大致开发流程:
1、扫描采集器包crawler ,初始化软件包和采集器的相关信息(扫描包路径,名称,平台,采集器的定义文件(item,trigger,graphs)...将信息存入static变量)
2、激活采集器包(初始化各项数据)
软件包是否init-->crawler是否init-->将采集器包的信息存入数据库
采集器 item ,trigger ,graphs (在初始化服务角色时初始化自定义图表)信息。
3、禁用采集器包 (删除数据库中与采集器相关数据)
4、安装软件采集器(生成采集器实例)
与软件安装类似:http://blog.csdn.net/u010738184/article/details/49153697
传递参数:主机id,服务角色id,采集器包id(在指定主机下安装指定服务角色的指定采集器,)
其中要创建item,trigger。(通过HttpClent请求,发送json数据,来创建item(在zabbix数据库中创建的))
开发采集器,主要是为了监控软件指标。