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
"MySQL1" と "MySQL2" の 2 つのインスタンスを監視します。
設定パラメータ:
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.1:3306
Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
Plugins.Mysql.Sessions.MySQL2.Password=different_password
この設定の結果、各セッション名は item key の 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 agent 2 の組み込みプラグインは、すぐに利用できます。
プラグイン名をクリックすると、追加情報が記載されたプラグインリポジトリに移動します。
| プラグイン名 | 説明 | サポートされるアイテムキー | コメント |
|---|---|---|---|
| Agent | 使用中の Zabbix エージェントのメトリクス。 | agent.hostname, agent.ping, agent.version | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| 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 agent の キー と同じパラメータを持ちます。 |
| 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 agent の キー と同じパラメータを持ちます。 |
| Kernel | カーネルの監視。 | kernel.maxfiles, kernel.maxproc | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| Log | ログファイルの監視。 | log, log.count, logrt, logrt.count | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 こちらも参照: プラグイン設定パラメータ (Unix/Windows) |
| Memcached | Memcached サーバーの監視。 | memcached.ping, memcached.stats | |
| Modbus | Modbus データを読み取ります。 | modbus.get | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| MQTT | 公開された MQTT トピックの値を受信します。 | mqtt.get | MQTT ブローカーへの暗号化接続を設定するには、agent 設定ファイルで 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 |
データベースへの暗号化接続を設定するには、agent 設定ファイルで TLS パラメータを 名前付きセッション または デフォルト パラメータとして指定します。現在、TLS パラメータをアイテムキーのパラメータとして渡すことはできません。 |
| NetIf | ネットワークインターフェースの監視。 | net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| 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 agent の キー と同じパラメータを持ちます。 |
| Redis | Redis サーバーの監視。 | redis.config, redis.info, redis.ping, redis.slowlog.count | Redis への暗号化接続を設定するには、agent 設定ファイルで TLS パラメータを 名前付きセッション または デフォルト パラメータとして指定します。TLS パラメータをアイテムキーのパラメータとして渡すことはできません。誤った、または無効な TLS 設定は Zabbix agent 2 の起動を妨げる可能性があるため、TLS を有効にする前に証明書ファイル、権限、およびパスを確認してください。 |
| Smart | S.M.A.R.T. の監視。 | smart.attribute.discovery, smart.disk.discovery, smart.disk.get | 必要な最小 smartctl バージョンは 7.1 です。 Zabbix agent 2 を実行するユーザーには smartctl への sudo/root 権限が必要です。プラグインは次のコマンドのみを使用します: /usr/sbin/smartctl -a */usr/sbin/smartctl --scan * /usr/sbin/smartctl -j -V サポートされる キー は、Zabbix agent 2 でのみ Linux/Windows 上で、パッシブチェックとアクティブチェックの両方として使用できます。 こちらも参照: 設定パラメータ |
| SW | インストール済みパッケージの一覧。 | system.sw.packages, system.sw.packages.get | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| Swap | バイト数/割合でのスワップ領域サイズ。 | system.swap.size | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| SystemRun | 指定したコマンドを実行します。 | system.run | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 こちらも参照: プラグイン設定パラメータ (Unix/Windows) |
| Systemd | systemd サービスの監視。 | systemd.unit.discovery, systemd.unit.get, systemd.unit.info | |
| TCP | TCP 接続の可用性チェック。 | net.tcp.port | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| UDP | UDP サービスの可用性とパフォーマンスの監視。 | net.udp.service, net.udp.service.perf | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| Uname | システム情報の取得。 | system.hostname, system.sw.arch, system.uname | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| Uptime | システム稼働時間メトリクスの収集。 | system.uptime | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| VFSDev | VFS メトリクスの収集。 | vfs.dev.discovery, vfs.dev.read, vfs.dev.write | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| WebCertificate | TLS/SSL Web サイト証明書の監視。 | web.certificate.get | |
| WebPage | Web ページの監視。 | web.page.get, web.page.perf, web.page.regexp | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| 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 agent の キー と同じパラメータを持ちます。 |
| ZabbixStats | Zabbix サーバー/プロキシの内部メトリクス、またはキュー内の遅延アイテム数。 | zabbix.stats | サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。 |
| 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 agent の キー と同じパラメータを持ちます。 |
ロード可能なプラグイン
Zabbix エージェント 2 のロード可能なプラグインは標準では利用できず、別途インストールする必要があります。
- Linux では、パッケージを使用できます(例: Ubuntu で Ember+ をインストールするには
apt install zabbix-agent2-plugin-ember-plusを実行します)。または、プラグインをビルドします。 - Windows では、MSI からインストールするか、プラグインをビルドできます。
プラグインをインストールする前に、README ファイルを確認してください。 そこには、特定の要件やインストール手順が記載されている場合があります。
プラグイン名をクリックすると、そのプラグインのリポジトリに移動します。そこには追加情報を含むプラグインの README ファイルがあります。
| プラグイン名 | 説明 | サポートされるアイテムキー | コメント |
|---|---|---|---|
| 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- ヘルプ情報を表示します。