Esta es una traducción de la página de documentación original en español. Ayúdanos a mejorarla.

14 Complementos

Descripción general

Los complementos brindan una opción para ampliar las capacidades de monitoreo de Zabbix. Los complementos están escritos en el lenguaje de programación Go y son compatibles únicamente con el agente 2 de Zabbix.

Los complementos proporcionan una alternativa a los módulos cargables (escritos en C), y otros métodos para ampliar la funcionalidad de Zabbix, como parámetros de usuario (métricas del agente), comprobaciones externas (monitoreo sin agente), y system.run[] métrica de agente elemento Zabbix.

Las siguientes características son específicas de Zabbix Agent 2 y sus complementos:

  • soporte de intervalos programados y flexibles tanto para controles pasivos como para activos;
  • gestión de colas de tareas con respecto a la programación y la simultaneidad de tareas;
  • tiempos de espera a nivel de complemento;
  • verificación de compatibilidad de Zabbix Agent 2 y su complemento al inicio.

Desde Zabbix 6.0.0, los complementos no tienen que integrarse directamente en el agente 2 y se pueden agregar como complementos cargables, lo que facilita el proceso de creación de complementos adicionales para recopilar nuevas métricas de monitoreo.

Esta página enumera los complementos nativos y cargables de Zabbix y describe los principios de configuración de los complementos desde la perspectiva del usuario. Para obtener instrucciones sobre cómo escribir sus propios complementos, consulte las [Pautas de desarrollo de complementos] (https://www.zabbix.com/documentation/guidelines/en/plugins). Para obtener más información sobre el proceso de comunicación entre el agente 2 de Zabbix y un complemento cargable, así como el proceso de recopilación de métricas, consulte el diagrama de conexión.

Configuración de complementos

Esta sección proporciona principios comunes de configuración de complementos y las mejores practicas

Todos los complementos se configuran usando el parámetro Plugins.*, que puede ser parte del archivo de configuración del agente 2 de Zabbix o del archivo de configuración del propio complemento. Si un complemento usa un archivo de configuración separado, la ruta a este archivo debe ser especificada en el parámetro Include del archivo de configuración del agente 2 de Zabbix.

Cada parámetro de complemento debe tener la siguiente estructura:

Plugins.<Nombre del complemento>.<Parámetro>=<Valor>

Además, existen dos grupos específicos de parámetros:

  • Plugins.<Nombre del complemento>.Default.<Parámetro>=<Valor> utilizado para definir valores de parámetros predeterminados.

  • Plugins.<Nombre del complemento>.<SessionName>.<Parameter>=<Value> se utiliza para definir conjuntos separados de parámetros para diferentes objetivos de monitoreo a través de sesiones con nombre.

Todos los nombres de parámetros deben cumplir los siguientes requisitos:

  • se recomienda poner en mayúscula los nombres de sus complementos;
  • el parámetro debe estar en mayúscula;
  • los caracteres especiales no están permitidos;
  • el anidamiento no está limitado por un nivel máximo;
  • el número de parámetros no está limitado.
Sesiones con nombre

Las sesiones con nombre representan un nivel adicional de parámetros del complemento y se pueden utilizar para especificar conjuntos separados de parámetros de autenticación para cada una de las instancias que se están monitoreando. Cada parámetro de sesión con nombre debe tener la siguiente estructura:

Plugins.<Nombre del complemento>.Sessions.<Nombre de la sesión>.<Parámetro>=<Valor>

Se puede utilizar un nombre de sesión como parámetro clave de métrica connString en lugar de especificando una URI, nombre de usuario y/o contraseña por separado.

En las claves de métricas, el primer parámetro puede ser un connString o una URI. si el primer parámetro clave no coincide con ningún nombre de sesión, será tratado como una URI. Tenga en cuenta que no se admite la inserción de credenciales en un URI; en su lugar, utilice parámetros de sesión con nombre.

La lista de parámetros de sesión con nombre disponibles depende del complemento.

En versiones de Zabbix anteriores a 6.0.17, cuando se proporciona una cadena de conexión (nombre de sesión) en los parámetros clave, los parámetros clave de la métrica para el nombre de usuario y la contraseña deben estar vacíos. Los valores se tomarán de los parámetros de la sesión. Si no se especifica un parámetro de autenticación para la sesión nombrada, se utilizará un valor predeterminado codificado.

Desde Zabbix 6.0.17, es posible anular los parámetros de la sesión especificando nuevos valores en los parámetros clave de la métrica (ver ejemplo).

Desde Zabbix 6.0.18, si no se define un parámetro para la sesión nombrada, el agente 2 de Zabbix utilizará el valor definido en el parámetro predeterminado del complemento.

Prioridad del parámetro

Desde la versión 6.0.18, los complementos del agente 2 Zabbix buscan valores de parámetros relacionados con la conexión en el siguiente orden:

  1. El primer parámetro clave de la métrica se compara con los nombres de las sesiones. Si no se encuentra ninguna coincidencia, se trata como un valor real; en este caso, se omitirá el paso 3. Si se encuentra una coincidencia, el valor del parámetro (normalmente, un URI) debe definirse en la sesión nombrada.
  2. Otros parámetros se tomarán de la clave de la métrica, si están definidos.
  3. Si un parámetro clave de métrica (por ejemplo, contraseña) está vacío, el complemento buscará el parámetro de sesión con nombre correspondiente.
  4. Si tampoco se especifica el parámetro de sesión, se utilizará el valor definido en el parámetro predeterminado correspondiente.
  5. Si todo lo demás falla, el complemento utilizará el valor predeterminado codificado.
Ejemplo 1

Monitoreo de dos instancias “MySQL1” y “MySQL2”.

Parámetros de configuración:

Plugins.Mysql.Sessions.MySQL1.Uri=tcp://127.0.0.1:3306
       Plugins.Mysql.Sessions.MySQL1.User=mysql1_user
       Plugins.Mysql.Sessions.MySQL1.Password=contraseña_única
       Plugins.Mysql.Sessions.MySQL2.Uri=tcp://192.0.2.0:3306
       Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
       Plugins.Mysql.Sessions.MySQL2.Password=contraseña_diferente

Como resultado de esta configuración, cada nombre de sesión puede usarse como una cadena de conexión en una clave de métrica, por ejemplo, mysql.ping[MySQL1] o mysql .ping[MySQL2].

Ejemplo 2

Proporcionar algunos de los parámetros en la clave de la métrica (compatible desde Zabbix 6.0.17).

Parámetros de configuración:

Plugins.PostgreSQL.Sessions.Session1.Uri=tcp://192.0.2.234:5432
       Plugins.PostgreSQL.Sessions.Session1.User=antiguo_nombre de usuario
       Plugins.PostgreSQL.Sessions.Session1.Password=contraseña_sesión

Clave de métrica: pgsql.ping[session1,nuevo_nombre de usuario,,postgres]

Como resultado de esta configuración, el agente se conectará a PostgreSQL utilizando los siguientes parámetros:

  • URI del parámetro de sesión: 192.0.2.234:5432
  • Nombre de usuario de la clave de la métrica: nuevo_nombre de usuario
  • Contraseña del parámetro de sesión (ya que se omite en la clave de la métrica): contraseña_sesión
  • Nombre de la base de datos de la clave de la métrica: postgres
Ejemplo 3

Recopilar una métrica utilizando parámetros de configuración predeterminados.

Parámetros de configuración:

Plugins.PostgreSQL.Default.Uri=tcp://192.0.2.234:5432
       Plugins.PostgreSQL.Default.User=zabbix
       Plugins.PostgreSQL.Default.Password=contraseña

Clave de métrica: pgsql.ping[,,,postgres]

Como resultado de esta configuración, el agente se conectará a PostgreSQL usando los parámetros:

  • URI predeterminado: 192.0.2.234:5432
  • Nombre de usuario predeterminado: zabbix
  • Contraseña predeterminada: contraseña
  • Nombre de la base de datos de la clave de la métrica: postgres
Valores predeterminados

Desde Zabbix 6.0.18, puede establecer valores predeterminados para los parámetros relacionados con la conexión (URI, nombre de usuario, contraseña, etc.) en el archivo de configuración. con el formato:

Plugins.<PluginName>.Default.<Parameter>=<Value>

Por ejemplo, Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017, etc.

Si no se proporciona un valor para dicho parámetro en una clave de la métrica o en los parámetros de sesión nombrada, el complemento utilizará el valor predeterminado. Si un parámetro predeterminado tampoco está definido, se utilizarán valores predeterminados codificados.

Si una clave de métrica no tiene ningún parámetro, el agente 2 de Zabbix intentará recopilar la métrica utilizando los valores definidos en la sección de parámetros predeterminados.

Conexiones

Algunos complementos admiten la recopilación de métricas de múltiples instancias simultáneamente. Tanto las instancias locales como las remotas pueden ser monitoreadas. Se admiten conexiones de TCP y de socket Unix.

Se recomienda configurar complementos para mantener las conexiones a las instancias en estado abierto. Los beneficios son la reducción de la congestión de la red, la latencia, y uso de CPU y memoria debido a la menor cantidad de conexiones. La biblioteca del cliente se encarga de esto.

Período de tiempo durante el cual deben permanecer las conexiones no utilizadas abiertas puede ser determinado por el parámetro Plugins.<PluginName>.KeepAlive.
Ejemplo: Plugins.Memcached.KeepAlive

Complementos

Todas las métricas admitidas por el Agente 2 Zabbix se recopilan mediante complementos.

Built-in

The following plugins for Zabbix agent 2 are available out-of-the-box. Click on the plugin name to go to the plugin repository with additional information.

Plugin name Description Supported item keys Comments
Agent Metrics of the Zabbix agent being used. agent.hostname, agent.ping, agent.version Supported keys have the same parameters as Zabbix agent keys.
Ceph Ceph monitoring. ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump,
ceph.ping, ceph.pool.discovery, ceph.status
CPU System CPU monitoring (number of CPUs/CPU cores, discovered CPUs, utilization percentage). system.cpu.discovery, system.cpu.num, system.cpu.util Supported keys have the same parameters as Zabbix agent keys.
Docker Monitoring of Docker containers. docker.container_info, docker.container_stats, docker.containers, docker.containers.discovery,
docker.data_usage, docker.images, docker.images.discovery, docker.info, docker.ping
See also:
Configuration parameters
File File metrics collection. vfs.file.cksum, vfs.file.contents, vfs.file.exists, vfs.file.md5sum,
vfs.file.regexp, vfs.file.regmatch, vfs.file.size, vfs.file.time
Supported keys have the same parameters as Zabbix agent keys.
Kernel Kernel monitoring. kernel.maxfiles, kernel.maxproc Supported keys have the same parameters as Zabbix agent keys.
Log Log file monitoring. log, log.count, logrt, logrt.count Supported keys have the same parameters as Zabbix agent keys.

See also:
Plugin configuration parameters (Unix/Windows)
Memcached Memcached server monitoring. memcached.ping, memchached.stats
Modbus Reads Modbus data. modbus.get Supported keys have the same parameters as Zabbix agent keys.
MQTT Receives published values of MQTT topics. mqtt.get
MySQL Monitoring of MySQL and its forks. mysql.db.discovery, mysql.db.size, mysql.get_status_variables,
mysql.ping, mysql.replication.discovery, mysql.replication.get_slave_status, mysql.version
To configure encrypted connection to the database, use named sessions and specify the TLS parameters for the named session in the agent configuration file. Currently, TLS parameters cannot be passed as item key parameters.
NetIf Monitoring of network interfaces. net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total Supported keys have the same parameters as Zabbix agent keys.
Oracle Oracle Database monitoring. oracle.diskgroups.stats, oracle.diskgroups.discovery, oracle.archive.info, oracle.archive.discovery,
oracle.cdb.info, oracle.custom.query, oracle.datafiles.stats, oracle.db.discovery,
oracle.fra.stats, oracle.instance.info, oracle.pdb.info, oracle.pdb.discovery,
oracle.pga.stats, oracle.ping, oracle.proc.stats, oracle.redolog.info,
oracle.sga.stats, oracle.sessions.stats, oracle.sys.metrics, oracle.sys.params,
oracle.ts.stats, oracle.ts.discovery, oracle.user.info
Install the Oracle Instant Client before using the plugin.
Proc Process CPU utilization percentage. proc.cpu.util Supported key has the same parameters as Zabbix agent key.
Redis Redis server monitoring. redis.config, redis.info, redis.ping, redis.slowlog.count
Smart S.M.A.R.T. monitoring. smart.attribute.discovery, smart.disk.discovery, smart.disk.get Sudo/root access rights to smartctl are required for the user executing Zabbix agent 2. The minimum required smartctl version is 7.1.

Supported keys can be used with Zabbix agent 2 only on Linux/Windows, both as a passive and active check.
See also:
Configuration parameters
Swap Swap space size in bytes/percentage. system.swap.size Supported key has the same parameters as Zabbix agent key.
SystemRun Runs specified command. system.run Supported key has the same parameters as Zabbix agent key.

See also:
Plugin configuration parameters (Unix/Windows)
Systemd Monitoring of systemd services. systemd.unit.discovery, systemd.unit.get, systemd.unit.info
TCP TCP connection availability check. net.tcp.port Supported key has the same parameters as Zabbix agent key.
UDP Monitoring of the UDP services availability and performance. net.udp.service, net.udp.service.perf Supported keys have the same parameters as Zabbix agent keys.
Uname Retrieval of information about the system. system.hostname, system.sw.arch, system.uname Supported keys have the same parameters as Zabbix agent keys.
Uptime System uptime metrics collection. system.uptime Supported key has the same parameters as Zabbix agent key.
VFSDev VFS metrics collection. vfs.dev.discovery, vfs.dev.read, vfs.dev.write Supported keys have the same parameters as Zabbix agent keys.
WebCertificate Monitoring of TLS/SSL website certificates. web.certificate.get
WebPage Web page monitoring. web.page.get, web.page.perf, web.page.regexp Supported keys have the same parameters as Zabbix agent keys.
ZabbixAsync Asynchronous metrics collection. net.tcp.listen, net.udp.listen, sensor, system.boottime, system.cpu.intr, system.cpu.load,
system.cpu.switches, system.hw.cpu, system.hw.macaddr, system.localtime, system.sw.os,
system.swap.in, system.swap.out, vfs.fs.discovery
Supported keys have the same parameters as Zabbix agent keys.
ZabbixStats Zabbix server/proxy internal metrics or number of delayed items in a queue. zabbix.stats Supported keys have the same parameters as Zabbix agent keys.
ZabbixSync Synchronous metrics collection. net.dns, net.dns.record, net.tcp.service, net.tcp.service.perf, proc.mem,
proc.num, system.hw.chassis, system.hw.devices, system.sw.packages,
system.users.num, vfs.dir.count, vfs.dir.size, vfs.fs.get, vfs.fs.inode,
vfs.fs.size, vm.memory.size.
Supported keys have the same parameters as Zabbix agent keys.
Loadable

Loadable plugins, when launched with:
- -V --version - print plugin version and license information;
- -h --help - print help information.

Click on the plugin name to go to the plugin repository with additional information.

Plugin name Description Supported item keys Comments
MongoDB Monitoring of MongoDB servers and clusters (document-based, distributed database). mongodb.collection.stats, mongodb.collections.discovery, mongodb.collections.usage, mongodb.connpool.stats,
mongodb.db.stats, mongodb.db.discovery, mongodb.jumbo_chunks.count, mongodb.oplog.stats,
mongodb.ping, mongodb.rs.config, mongodb.rs.status, mongodb.server.status,
mongodb.sh.discovery
PostgreSQL Monitoring of PostgreSQL and its forks. pgsql.autovacuum.count, pgsql.archive, pgsql.bgwriter, pgsql.cache.hit, pgsql.connections,
pgsql.custom.query, pgsql.dbstat, pgsql.dbstat.sum, pgsql.db.age, pgsql.db.bloating_tables,
pgsql.db.discovery, pgsql.db.size, pgsql.locks, pgsql.oldest.xid, pgsql.ping, pgsql.queries,
pgsql.replication.count, pgsql.replication.process, pgsql.replication.process.discovery, pgsql.replication.recovery_role, pgsql.replication.status,
pgsql.replication_lag.b, pgsql.replication_lag.sec, pgsql.uptime, pgsql.wal.stat
This plugin is loadable since Zabbix 6.0.10 (built-in previously).

To configure encrypted connections to the database, use named sessions and specify the TLS parameters for the named session in the agent configuration file. Currently, TLS parameters cannot be passed as item key parameters.

See also: Building loadable plugins.

Notas al pie

1 - Desde Zabbix 6.0.13, los complementos cargables comenzaron a usar el mismo sistema de versiones que el propio Zabbix. Como resultado, la versión del complemento MongoDB ha cambiado de 1.2.0 a 6.0.13 y la versión del complemento PostgreSQL ha cambiado de 1.2.1 a 6.0.13.