This is a translation of the original English documentation page. Help us make it better.

2 プラグイン

Overview

Plugins provide an option to extend the monitoring capabilities of Zabbix. Plugins are written in Go programming language and are supported by Zabbix agent 2 only. Plugins provide an alternative to loadable modules (written in C), and other methods for extending Zabbix functionality.

The following features are specific to agent 2 and its plugins:

  • support of scheduled and flexible intervals for both passive and active checks;
  • task queue management with respect to schedule and task concurrency;
  • plugin-level timeouts;
  • compatibility check of Zabbix agent 2 and its plugins on start up.

Since Zabbix 6.0.0, plugins don't have to be integrated into the agent 2 directly and can be added as loadable plugins, thus making the creation process of additional plugins for gathering new monitoring metrics easier.

This page lists Zabbix native and loadable plugins, and describes plugin configuration principles from the user perspective. For instructions about writing your own plugins, please see Plugin development guidelines. Metrics collection process provides a detailed description of the entire metrics collection process including the methods applied and the connection diagram.

Configuring plugins

This section provides common plugin configuration principles and best practices.

All plugins are configured using Plugins.* parameter, which can either be part of the Zabbix agent 2 configuration file or a plugin's own configuration file. If a plugin uses a separate configuration file, path to this file should be specified in the Include parameter of Zabbix agent 2 configuration file.

Each plugin parameter should have the following structure:

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

Parameter names should adhere to the following requirements:

  • it is recommended to capitalize the names of your plugins;
  • the parameter should be capitalized;
  • special characters are not allowed;
  • nesting isn’t limited by a maximum level;
  • the number of parameters is not limited.
デフォルト値

接続関連のパラメータ(URI、ユーザー名、パスワードなど)のデフォルト値は、設定ファイルで以下の形式で設定できます。

Plugins.<プラグイン名>.Default.<パラメータ>=<値>

例:Plugins.Mysql.Default.Username=zabbixPlugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 など

これらのパラメータの値がアイテムキーまたは名前付きセッションパラメータに指定されていない場合、プラグインはデフォルト値を使用します。デフォルトパラメータも定義されていない場合は、ハードコードされたデフォルト値が使用されます。

アイテムキーにパラメータが指定されていない場合、Zabbixエージェント2はデフォルトパラメータセクションで定義された値を使用してメトリックの収集を試みます。

Named sessions

Named sessions represent an additional level of plugin parameters and can be used to define separate sets of authentication parameters for each of the instances being monitored. Each named session parameter should have the following structure:

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

A session name can be used as a connString item key parameter instead of specifying a URI, username, and password separately. In item keys, the first parameter can be either a connString or a Uri. If the first key parameter matches a session name specified in the configuration file, the check will be executed using named session parameters. If the first key parameter doesn't match any session name, it will be treated as a Uri.

Note, that:

  • when providing a connString (session name) in key parameters, key parameters for username and password must be empty;
  • passing embedded URI credentials is not supported, consider using named sessions instead;
  • in case an authentication parameter is not specified for the named session, a hardcoded default value will be used.

The list of available named session parameters depends on the plugin, see individual plugin configuration files for details.

Example: Monitoring of two instances “MySQL1” and “MySQL2” can be configured in the following way:

Plugins.Mysql.Sessions.MySQL1.Uri=tcp://127.0.0.1:3306
       Plugins.Mysql.Sessions.MySQL1.User=<UsernameForMySQL1>
       Plugins.Mysql.Sessions.MySQL1.Password=<PasswordForMySQL1>    
       Plugins.Mysql.Sessions.MySQL2.Uri=tcp://127.0.0.1:3307   
       Plugins.Mysql.Sessions.MySQL2.User=<UsernameForMySQL2>
       Plugins.Mysql.Sessions.MySQL2.Password=<PasswordForMySQL2>

Now, these names may be used as connStrings in keys instead of URIs:

mysql.ping[MySQL1]
       mysql.ping[MySQL2]
パラメータの優先順位

Zabbix エージェント 2 プラグインは、接続関連のパラメータ値を以下の順序で検索します。

  1. 最初のアイテムキーパラメータをセッション名と比較します。一致するものが見つからない場合は、実際の値として扱われます。この場合、ステップ 3 はスキップされます。一致するものが見つかった場合、パラメータ値(通常は URI)は、名前付きセッションで定義されている必要があります。
  2. その他のパラメータは、アイテムキーが定義されている場合はそこから取得されます。
  3. アイテムキーパラメータ(例:パスワード)が空の場合、プラグインは対応する名前付きセッションパラメータを探します。
  4. セッションパラメータも指定されていない場合は、対応する デフォルトパラメータ で定義されている値が使用されます。
  5. これらすべてが失敗した場合、プラグインはハードコードされたデフォルト値を使用します。
Example 1

Monitoring of two instances “MySQL1” and “MySQL2”.

Configuration parameters:

Plugins.Mysql.Sessions.MySQL1.Uri=tcp://127.0.0.1:3306
       Plugins.Mysql.Sessions.MySQL1.User=mysql1_user
       Plugins.Mysql.Sessions.MySQL1.Password=unique_password
       Plugins.Mysql.Sessions.MySQL2.Uri=tcp://192.0.2.0:3306
       Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
       Plugins.Mysql.Sessions.MySQL2.Password=different_password

Item keys: mysql.ping[MySQL1], mysql.ping[MySQL2]

Example 2

Providing some of the parameters in the item key (supported since Zabbix 6.4.2).

Configuration parameters:

Plugins.Postgres.Sessions.Session1.Uri=tcp://192.0.2.234:5432
       Plugins.Postgres.Sessions.Session1.User=old_username
       Plugins.Postgres.Sessions.Session1.Password=session_password

Item key: pgsql.ping[session1,new_username,,postgres]

As a result of this configuration, the agent will connect to PostgreSQL using the following parameters:

  • URI from session parameter: 192.0.2.234:5432
  • Username from the item key: new_username
  • Password from session parameter (since it is omitted in the item key): session_password
  • Database name from the item key: postgres
例 3

デフォルトの設定パラメータを使用してメトリックを収集します。

設定パラメータ:

Plugins.PostgreSQL.Default.Uri=tcp://192.0.2.234:5432
       Plugins.PostgreSQL.Default.User=zabbix
       Plugins.PostgreSQL.Default.Password=password

アイテムキー: pgsql.ping[,,,postgres]

この設定の結果、エージェントは以下のパラメータを使用して PostgreSQL に接続します。

  • デフォルトの URI: 192.0.2.234:5432
  • デフォルトのユーザー名: zabbix
  • デフォルトのパスワード: password
  • アイテムキーのデータベース名: postgres
コネクション

プラグインによっては、複数のインスタンスから同時にメトリクスを収集することをサポートしています。
ローカルとリモートの両方のインスタンスを監視することができます。TCP および Unix ソケット接続がサポートされています。

インスタンスへの接続をオープン状態に保つようにプラグインを設定することをお勧めします。その利点は、ネットワークの輻輳、
レイテンシー、およびCPUとメモリの使用量を削減できることです。クライアントライブラリは、この処理を行います。

未使用の接続をオープンにしておく時間は、Plugins.<PluginName>.KeepAliveパラメータで決定されます。 例: Plugins.Memcached.KeepAlive

プラグイン

Zabbix agent 2 でサポートされているすべてのメトリックは、プラグインによって収集されます。

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.