[comment]: # ({579805a5-3e219327})
# 插件接口

本节介绍可用的插件接口。

[comment]: # ({/579805a5-3e219327})

[comment]: # ({e3b2749e-bd74c36c})

### plugin.Exporter

*Exporter* 是最简单的接口，它执行轮询并返回一个值（值）、不返回任何值或错误。
它接受预解析的项目键、参数和上下文。
对所有其他插件接口的访问都是独占的，如果插件已在执行任务，则无法调用任何方法。
此外，每个插件最多可同时调用 100 次 *Export()*，可根据每个插件的要求减少。

[comment]: # ({/e3b2749e-bd74c36c})

[comment]: # ({68794123-a9e7836a})

### plugin.Configurator

*Configurator* 接口提供来自 Zabbix agent 2 配置文件的插件配置参数。

[comment]: # ({/68794123-a9e7836a})

[comment]: # ({6c39575d-d6cfe5ec})

### plugin.Runner

*Runner* 接口提供了在插件启动（激活）时执行初始化以及在插件停止（停用）时取消初始化的方法。
例如，插件可以通过实现 Runner 接口来启动/停止某些后台 *goroutine*。

[comment]: # ({/6c39575d-d6cfe5ec})

[comment]: # ({6dfbcf2d-05d228df})
### 连接示意图

Zabbix agent 2 在 Linux 上使用 UNIX 套接字、在 Windows 上使用命名管道与插件进行双向连接。 

下方的连接示意图展示了 Zabbix agent 2 与可加载插件之间的通信过程以及指标采集过程。

![](../../assets/en/devel/plugin/connection_diagram.png)

[comment]: # ({/6dfbcf2d-05d228df})

