1. Agent2 的插件种类
Agent2支持两种插件,一种是内置插件(Built-in plugins),一种是可加载插件(loadable plugins)。
内置插件是和Agent2的源代码放在一起的,编译时就一起编译出来了。 在/etc/zabbix/zabbix_agent2.d/plugins.d/ 下面放着所有插件的配置文件,可以看到当前系统都有哪些插件。
那么它的问题就是每次写新的插件或对既存插件做修改后,都需要重新编译整个Agent2。
相对的,可加载模块是ZBX6之后才支持的。它可以单独编译,兼顾了效率和灵活性。
可加载模块可以/必须实现 Exporter (except the ContextProvider parameter)、Runner、Configurator 这三种接口其中之一,不支持Watcher和Collector接口。
默认情况下,这两种插件都是不活动的,只有当被监控的插件提供指标时才会激活。
关于内置插件,ZBX的官方博客、还有网上的一些文章说的都比较清楚了( 比如源代码里提供了两个例子:Zabbix Agent 2 Plugins project overview - ZABBIX GIT)。本文主要对可加载模块做一下说明,抛砖引玉。
2. 开发一个可加载模块
代码是用Go写的、编译的,所以以下过程需要有最基础的go相关知识。</