[comment]: # ({579805a5-3e219327})
# Interfaces de plugin

Esta seção descreve as interfaces de plugin disponíveis.

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

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

*Exporter* é a interface mais simples que executa uma coleta e retorna um valor (valores), nada ou erro.
Ela aceita uma chave de item pré-analisada, parâmetros e contexto.
O acesso a todas as outras interfaces de plugin é exclusivo e nenhum método pode ser chamado se um plugin já estiver executando uma tarefa.
Além disso, há um limite de 100 chamadas *Export()* concorrentes por plugin, que pode ser reduzido de acordo com os requisitos de cada plugin.

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

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

A interface *Configurator* fornece parâmetros de configuração do plugin a partir dos arquivos de configuração do Zabbix agent 2.

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

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

A interface *Runner* fornece os meios para realizar a inicialização quando um plugin é iniciado (ativado) e a desinicialização quando um plugin é interrompido (desativado).
Por exemplo, um plugin pode iniciar/parar alguma *goroutine* em segundo plano implementando a interface Runner.

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

[comment]: # ({6dfbcf2d-05d228df})
### Diagrama de conexão

O Zabbix agent 2 se conecta bidirecionalmente aos plugins usando sockets UNIX no Linux e Named Pipes no Windows. 

O diagrama de conexão abaixo ilustra o processo de comunicação entre o Zabbix agent 2 e um plugin carregável, bem como o processo de coleta de métricas.

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

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

