2 プラグイン
概要
プラグインは、Zabbix エージェント 2 の監視機能を拡張します。
Go プログラミング言語で記述されており、ロード可能モジュール(C で記述)や、Zabbix の機能を拡張するためのその他の方法に代わる選択肢を提供します。
以下の機能は、エージェント 2 とそのプラグインに固有のものです。
- パッシブチェックとアクティブチェックの両方に対する、スケジュール済み間隔および柔軟な間隔
- スケジュールおよびタスクの同時実行性を考慮したタスクキュー管理
- プラグインレベルのタイムアウト
- 起動時の Zabbix エージェント 2 とそのプラグインの互換性チェック
Zabbix エージェント 2 がサポートするすべてのメトリクスは、プラグインによって収集されます。
このページでは、ユーザーの観点から見たプラグイン設定の基本原則を説明し、Zabbix が提供する組み込みプラグインとロード可能プラグインの両方を一覧表示します。
Zabbix 6.0 以降、プラグインをエージェント 2 に組み込む必要はなくなりました。
ロード可能プラグインとして追加できるため、新しいメトリクス用プラグインの作成が簡単になります。
独自のプラグインを作成する手順については、Developer center および Example plugin for Zabbix agent 2 を参照してください。
プラグインの設定
このセクションでは、プラグイン設定の一般的な原則とベストプラクティスについて説明します。
すべてのプラグインは Plugins.* パラメータを使用して設定します。これは、Zabbix agent 2 の設定ファイルの一部として指定することも、プラグイン独自の設定ファイルで指定することもできます。 プラグインが個別の設定ファイルを使用する場合、このファイルへのパスは Zabbix agent 2 設定ファイルの Include パラメータで指定する必要があります。
一般的なプラグインパラメータは、次の構造になります。
Plugins.<PluginName>.<Parameter>=<Value>
さらに、2 つの特定のパラメータグループがあります。
-
Plugins.<PluginName>.Default.<Parameter>=<Value> - デフォルトのパラメータ値を定義するために使用します。
-
Plugins.<PluginName>.<SessionName>.<Parameter>=<Value> - 名前付きセッションを介して、異なる監視対象ごとに個別のパラメータセットを定義するために使用します。
すべてのパラメータ名は、次の要件に従う必要があります。
- プラグイン名は大文字で始めることを推奨します
- パラメータ名は大文字で始める必要があります
- 特殊文字は使用できません
- ネストの最大レベルに制限はありません
- パラメータ数に制限はありません
たとえば、Uptime プラグインに対してのみ、Scheduling 更新間隔を持たないアクティブチェックをエージェント再起動直後に実行するには、設定ファイルで Plugins.Uptime.System.ForceActiveChecksOnStart=1 を設定します。
同様に、CPU プラグインの同時チェックのカスタム上限を設定するには、設定ファイルで Plugins.CPU.System.Capacity=N を設定します。
デフォルト値
設定ファイルでは、接続関連パラメータ(URI、ユーザー名、パスワードなど)のデフォルト値を、次の形式で設定できます。
Plugins.<PluginName>.Default.<Parameter>=<Value>
例えば、Plugins.Mysql.Default.Username=zabbix、Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 などです。
このようなパラメータの値がアイテムキーまたは 名前付きセッション のパラメータで指定されていない場合、プラグインはデフォルト値を使用します。 デフォルトパラメータも未定義の場合は、ハードコードされたデフォルト値が使用されます。
アイテムキーにパラメータがまったくない場合、Zabbixエージェント2 は、デフォルトパラメータセクションで定義された値を使用してメトリクスの収集を試みます。
名前付きセッション
名前付きセッションは、プラグインパラメータの追加レベルを表し、監視対象の各インスタンスごとに個別の認証パラメータセットを指定するために使用できます。
各名前付きセッションパラメータは、次の構造にする必要があります。
Plugins.<PluginName>.Sessions.<SessionName>.<Parameter>=<Value>
セッション名は、URI、ユーザー名、パスワードを個別に指定する代わりに、connString アイテムキーのパラメータとして使用できます。
アイテムキーでは、最初のパラメータとして connString または URI のいずれかを指定できます。
最初のキーのパラメータがどのセッション名にも一致しない場合、それは URI として扱われます。
なお、アイテムキーで URI に埋め込まれた認証情報を渡すことはサポートされていません。代わりに、名前付きセッションパラメータを使用してください。
利用可能な名前付きセッションパラメータの一覧は、プラグインによって異なります。
アイテムキーのパラメータで新しい値を指定することにより、セッションパラメータを上書きできます(例を参照)。
名前付きセッションにパラメータが定義されていない場合、Zabbix エージェント 2 はデフォルトのプラグインパラメータで定義された値を使用します。
パラメータの優先順位
Zabbixエージェント 2 のプラグインは、接続関連のパラメータ値を次の順序で検索します。

- 最初のアイテムキーのパラメータは、セッション名と比較されます。 一致が見つからない場合、そのパラメータは実際の値として扱われます。この場合、手順 3 はスキップされます。 一致が見つかった場合、パラメータ値(通常は URI)は、その名前付きセッションで定義されている必要があります。
- 他のパラメータは、定義されていればアイテムキーから取得されます。
- アイテムキーのパラメータ(たとえば password)が空の場合、プラグインは対応する名前付きセッションのパラメータを探します。
- セッションパラメータも指定されていない場合は、対応するデフォルトパラメータで定義された値が使用されます。
- それでも見つからない場合、プラグインはハードコードされたデフォルト値を使用します。
例 1
2 つのインスタンス「MySQL1」と「MySQL2」の監視。
設定パラメータ:
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
この設定の結果、各セッション名は アイテムキー の connString として使用できます。例えば、mysql.ping[MySQL1] または mysql.ping[MySQL2] です。
例2
アイテムキーで一部のパラメータを指定します。
設定パラメータ:
Plugins.PostgreSQL.Sessions.Session1.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Sessions.Session1.User=old_username
Plugins.PostgreSQL.Sessions.Session1.Password=session_password
アイテムキー: pgsql.ping[session1,new_username,,postgres]
この設定の結果、エージェントは以下のパラメータを使用してPostgreSQLに接続します。
- セッションパラメータのURI:
192.0.2.234:5432 - アイテムキーのユーザー名:
new_username - セッションパラメータのパスワード(アイテムキーで省略されているため):
session_password - アイテムキーのデータベース名:
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 エージェント 2 の組み込みプラグインは、追加設定なしですぐに利用できます。 追加情報については、プラグイン名をクリックしてプラグインリポジトリを参照してください。
| プラグイン名 | 説明 | サポートされているアイテムキー | コメント |
|---|---|---|---|
| Agent | 使用中の Zabbix エージェントのメトリクス。 | agent.hostname, agent.ping, agent.version | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| Ceph | Ceph の監視。 | ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump, ceph.ping, ceph.pool.discovery, ceph.status |
|
| CPU | システム CPU の監視(CPU/CPU コア数、検出された CPU、使用率)。 | system.cpu.discovery, system.cpu.num, system.cpu.util | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| Docker | Docker コンテナの監視。 | docker.container_info, docker.container_stats, docker.containers, docker.containers.discovery, docker.data_usage, docker.images, docker.images.discovery, docker.info, docker.ping |
以下も参照してください: 設定パラメータ |
| File | ファイルメトリクスの収集。 | vfs.file.cksum, vfs.file.contents, vfs.file.exists, vfs.file.md5sum, vfs.file.regexp, vfs.file.regmatch, vfs.file.size, vfs.file.time |
サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| Kernel | カーネルの監視。 | kernel.maxfiles, kernel.maxproc | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| Log | ログファイルの監視。 | log, log.count, logrt, logrt.count | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 以下も参照してください: プラグイン設定パラメータ(Unix/Windows) |
| Memcached | Memcached サーバーの監視。 | memcached.ping, memcached.stats | |
| Modbus | Modbus データを読み取ります。 | modbus.get | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| MQTT | MQTT トピックの公開値を受信します。 | mqtt.get | MQTT ブローカーへの暗号化接続を設定するには、エージェント設定ファイルで TLS パラメータを名前付きセッションまたはデフォルトパラメータとして指定してください。現在、TLS パラメータはアイテムキーのパラメータとして渡すことはできません。 |
| MySQL | MySQL およびその派生製品の監視。 | mysql.custom.query, mysql.db.discovery, mysql.db.size, mysql.get_status_variables, mysql.ping, mysql.replication.discovery, mysql.replication.get_slave_status, mysql.version |
データベースへの暗号化接続を設定するには、エージェント設定ファイルで TLS パラメータを名前付きセッションまたはデフォルトパラメータとして指定してください。現在、TLS パラメータはアイテムキーのパラメータとして渡すことはできません。 |
| NetIf | ネットワークインターフェースの監視。 | net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| Oracle | Oracle Database の監視。 | 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, oracle.version |
プラグインを使用する前に、Oracle Instant Client をインストールしてください。 |
| Proc | プロセス CPU 使用率。 | proc.cpu.util | サポートされているキーは、Zabbix エージェントのkeyと同じパラメータを持ちます。 |
| Redis | Redis サーバーの監視。 | redis.config, redis.info, redis.ping, redis.slowlog.count | Redis への暗号化接続を設定するには、エージェント設定ファイルで TLS パラメータを名前付きセッションまたはデフォルトパラメータとして指定してください。TLS パラメータはアイテムキーのパラメータとして渡すことはできません。不正または無効な TLS 設定により Zabbix エージェント 2 が起動できなくなる可能性があるため、TLS を有効にする前に証明書ファイル、権限、およびパスを確認してください。 |
| Smart | S.M.A.R.T. の監視。 | smart.attribute.discovery, smart.disk.discovery, smart.disk.get | 必要な smartctl の最小バージョンは 7.1 です。 Zabbix エージェント 2 を実行するユーザーには、smartctl に対する sudo/root アクセス権が必要です。プラグインは次のコマンドのみを使用します: /usr/sbin/smartctl -a */usr/sbin/smartctl --scan * /usr/sbin/smartctl -j -V サポートされているkeysは、Linux/Windows 上の Zabbix エージェント 2 でのみ、パッシブチェックとアクティブチェックの両方で使用できます。 以下も参照してください: 設定パラメータ |
| SW | インストール済みパッケージの一覧表示。 | system.sw.packages, system.sw.packages.get | サポートされているキーは、Zabbix エージェントのkeyと同じパラメータを持ちます。 |
| Swap | スワップ領域のサイズ(バイト/パーセンテージ)。 | system.swap.size | サポートされているキーは、Zabbix エージェントのkeyと同じパラメータを持ちます。 |
| SystemRun | 指定したコマンドを実行します。 | system.run | サポートされているキーは、Zabbix エージェントのkeyと同じパラメータを持ちます。 以下も参照してください: プラグイン設定パラメータ(Unix/Windows) |
| Systemd | systemd サービスの監視。 | systemd.unit.discovery, systemd.unit.get, systemd.unit.info | |
| TCP | TCP 接続の可用性チェック。 | net.tcp.port | サポートされているキーは、Zabbix エージェントのkeyと同じパラメータを持ちます。 |
| UDP | UDP サービスの可用性およびパフォーマンスの監視。 | net.udp.service, net.udp.service.perf | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| Uname | システムに関する情報の取得。 | system.hostname, system.sw.arch, system.uname | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| Uptime | システム稼働時間メトリクスの収集。 | system.uptime | サポートされているキーは、Zabbix エージェントのkeyと同じパラメータを持ちます。 |
| VFSDev | VFS メトリクスの収集。 | vfs.dev.discovery, vfs.dev.read, vfs.dev.write | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| WebCertificate | TLS/SSL Web サイト証明書の監視。 | web.certificate.get | |
| WebPage | Web ページの監視。 | web.page.get, web.page.perf, web.page.regexp | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| ZabbixAsync | 非同期メトリクスの収集。 | 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 |
サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| ZabbixStats | Zabbix サーバー/プロキシの内部メトリクス、またはキュー内の遅延アイテム数。 | zabbix.stats | サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
| ZabbixSync | 同期メトリクスの収集。 | 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. |
サポートされているキーは、Zabbix エージェントのkeysと同じパラメータを持ちます。 |
ロード可能なプラグイン
Zabbix agent 2 のロード可能なプラグインは、すぐに利用できる状態では提供されておらず、別途インストールする必要があります。
- Linux では、パッケージを使用するか(例: Ubuntu で Ember+ を
apt install zabbix-agent2-plugin-ember-plusでインストール)、プラグインをビルドできます - Windows では、MSI からインストールするか、プラグインをビルドできます
プラグインをインストールする前に、README ファイルを確認してください。 固有の要件やインストール手順が記載されている場合があります。
追加情報を含むプラグイン README ファイルがあるプラグインリポジトリに移動するには、プラグイン名をクリックしてください。
| Plugin name | Description | Supported item keys | Comments |
|---|---|---|---|
| Ember+ | Ember+ の監視。 | ember.get | Ember+ プラグイン設定パラメータも参照してください。 |
| MongoDB | MongoDB サーバーおよびクラスター(ドキュメント指向の分散データベース)の監視。 | 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, mongodb.version |
データベースへの暗号化接続を設定するには、エージェント設定ファイルで TLS パラメータを 名前付きセッション パラメータとして指定してください。 現在、TLS パラメータはアイテムキーのパラメータとして渡すことはできません。 MongoDB プラグイン設定パラメータも参照してください。 |
| MSSQL | MSSQL データベースの監視。 | mssql.availability.group.get, mssql.custom.query, mssql.db.get, mssql.job.status.get, mssql.last.backup.get, mssql.local.db.get, mssql.mirroring.get, mssql.nonlocal.db.get, mssql.perfcounter.get, mssql.ping, mssql.quorum.get, mssql.quorum.member.get, mssql.replica.get, mssql.version | データベースへの暗号化接続を設定するには、エージェント設定ファイルで TLS パラメータを 名前付きセッション または デフォルト パラメータとして指定してください。現在、TLS パラメータはアイテムキーのパラメータとして渡すことはできません。 MSSQL プラグイン設定パラメータも参照してください。 |
| NVIDIA GPU | NVIDIA GPU の監視。 | nvml.device.count, nvml.device.decoder.utilization, nvml.device.ecc.mode, nvml.device.encoder.stats.get, nvml.device.encoder.utilization, nvml.device.energy.consumption, nvml.device.errors.memory, nvml.device.errors.register, nvml.device.fan.speed.avg, nvml.device.get, nvml.device.graphics.frequency, nvml.device.memory.bar1.get, nvml.device.memory.fb.get, nvml.device.memory.frequency, nvml.device.pci.utilization, nvml.device.performance.state, nvml.device.power.limit, nvml.device.power.usage, nvml.device.serial, nvml.device.sm.frequency, nvml.device.temperature, nvml.device.utilization, nvml.device.video.frequency, nvml.system.driver.version, nvml.version | NVIDIA GPU プラグイン設定パラメータも参照してください。 |
| PostgreSQL | PostgreSQL およびその派生製品の監視。 | 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.version, pgsql.wal.stat |
データベースへの暗号化接続を設定するには、エージェント設定ファイルで TLS パラメータを 名前付きセッション または デフォルト パラメータとして指定してください。 現在、TLS パラメータはアイテムキーのパラメータとして渡すことはできません。 PostgreSQL プラグイン設定パラメータも参照してください。 |
ロード可能なプラグインは、次のオプションで起動すると:
-V --version- プラグインのバージョンおよびライセンス情報を表示します。-h --help- ヘルプ情報を表示します。