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

Esta sección describe las interfaces de plugin disponibles.

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

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

*Exporter* es la interfaz más simple que realiza una consulta y devuelve un valor (valores), nada o un error.
Acepta una clave de métrica preanalizada, parámetros y contexto.
El acceso a todas las demás interfaces de plugin es exclusivo y no se puede llamar a ningún método si un plugin ya está realizando una tarea.
Además, existe un límite de 100 llamadas *Export()* concurrentes como máximo por plugin, que puede reducirse según los requisitos de cada plugin.

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

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

La interfaz *Configurator* proporciona parámetros de configuración del plugin a partir de los archivos de configuración del agente Zabbix 2.

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

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

La interfaz *Runner* proporciona los medios para realizar la inicialización cuando un plugin se inicia (activa) y la desinicialización cuando un plugin se detiene (desactiva).
Por ejemplo, un plugin puede iniciar/detener alguna *goroutine* en segundo plano implementando la interfaz Runner.

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

[comment]: # ({6dfbcf2d-05d228df})
### Diagrama de conexión

Zabbix agent 2 se conecta bidireccionalmente a los plugins mediante sockets UNIX en Linux y Named Pipes en Windows. 

El diagrama de conexión siguiente ilustra el proceso de comunicación entre Zabbix agent 2 y un plugin cargable, así como el proceso de recopilación de métricas.

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

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

