×

扫描二维码登录本站

QQ登录

只需一步,快速开始

标签: 第三方
来源自 “ttlsa”

zabbix从2.2版本开始增加了使用动态库来扩展zabbix功能。loadable modules实际上和我们前面提到的用户自定义key是一样的功能,不同的是,他用加载lib库的方式,并且zabbix不需要fork一个新的进程,性能更好。目前类似的功能包含user parameters 、 external checks 、 system.run[] ,如果这些脚本逻辑过于复杂、耗时太长会出现比较严重的问题。

工作中,我们可以使用c开发一些适用于我们自己生产环境的模块。当然你也可以将它分享给出来,而不需要公布你的源代码,如果你对自己写的代码不自信的话。当agentd、server、proxy启动的时候同时将模块加载进来,退出的时候也会释放。

zabbix模块APIzabbix代码中有提供api所需的头文件.h,目前模块有两类接口需要实现,一类是必须实现的,一类是可选的。
必须实现的接口两个接口: zbx_module_api_version()、zbx_module_init()


92-1.png



Zabbix实施


用于返回API版本,必须实现,默认返回常量ZBX_MODULE_API_VERSION_ONE(数值1)



92-2.png

模块必要的一些初始化,初始化成功返回ZBX_MODULE_OK,否则返回ZBX_MODULE_FAIL。开源监控软件
可选接口可选接口有zbx_module_item_list()、 zbx_module_item_timeout()、 zbx_module_uninit()


92-3.png



返回模块内定义的item列表,包含key,如:agent.ping、agent.version,每个item都使用结构体ZBX_METRIC


92-4.png
超时时间设置,秒为单位





释放资源,如:文件描述等
定义item结构体


92-5.png


key:item key名称,例如agent.ping、mysql.version等
flags:CF_HAVEPARAMS 或者0
function:将要调用的函数
test_param:参数列表
示例

92-6.png



在定义function需要接收两个参数AGENT_REQUEST 、AGENT_RESULT ,如下



92-7.png


编译模块编译准备
zabbix提供了一份用于测试的模块源码,在zabbix源码目录下
92-9.png



请一定记住所有的源代码最好放到modules目录下来编译,因为他需要一些接口都在源码中。例如include/module.h、include/sysinc.h、 include/config.h,前面两个.h文件解压就存在,而config.h需要在源码根目录下执行./configure(不能带参数,否则会报错)。
开始编译



92-10.png


加载模块拷贝so文件到zabbix目录下
# cp dummy.so /usr/local/zabbix-2.4.3/lib/ 92-11.png

修改配置文件
LoadModulePath=/usr/local/zabbix-2.4.3/lib/ # 可自定义LoadModule=dummy.so # 可以加载多个

92-12.png


测试模块重启zabbix_agentd
# killall zabbix_agentd
# /usr/local/zabbix-2.4.3/sbin/zabbix_agentd
测试key

92-13.png




可以看到定义好的三个key都成功了。学好linux c开发自己的zabbix模块吧。

想做Nagios,iTop各种交流的,可以进入开源监控工具Nagios交流  QQ群号 :476809427
92-8.png




上一篇:zabbix监控惠普打印机哪些方面
下一篇:zabbix telnet监控类型有哪些?
monicazhang

写了 2297 篇文章,拥有财富 12859,被 21 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

最新100贴|论坛版块|ITIL先锋论坛 |粤ICP备11099876号|网站地图
Powered by Discuz! X3.4 Licensed  © 2001-2017 Comsenz Inc.
返回顶部