2 プラグイン

概要

プラグインは、Zabbixエージェント 2 の監視機能を拡張します。
Goプログラミング言語で記述されており、ロード可能モジュール(Cで記述)や、Zabbixの機能を拡張するためのその他の方法に代わる選択肢を提供します。

以下の機能は、エージェント 2 とそのプラグインに固有のものです。

  • パッシブチェックとアクティブチェックの両方に対する、スケジュール済み間隔および柔軟な間隔
  • スケジュールおよびタスクの同時実行性を考慮したタスクキュー管理
  • プラグインレベルのタイムアウト
  • 起動時の Zabbixエージェント 2 とそのプラグインの互換性チェック

Zabbixエージェント 2 がサポートするすべてのメトリクスは、プラグインによって収集されます。
このページでは、ユーザーの観点から見たプラグイン設定の原則を説明し、Zabbix が提供する組み込みプラグインとロード可能プラグインの両方を一覧表示します。

Zabbix 6.0 以降、プラグインをエージェント 2 に組み込む必要はなくなりました。
ロード可能プラグインとして追加できるため、新しいメトリクス用プラグインの作成が容易になります。
独自のプラグインを作成する手順については、Developer center および Zabbixエージェント 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=zabbixPlugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 などです。

このようなパラメータの値がアイテムキーまたはnamed sessionのパラメータで指定されていない場合、プラグインはデフォルト値を使用します。 デフォルトパラメータも未定義の場合は、ハードコードされたデフォルト値が使用されます。

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

名前付きセッション

名前付きセッションは、プラグインパラメータの追加レベルを表し、監視対象の各インスタンスごとに個別の認証パラメータセットを指定するために使用できます。
各名前付きセッションパラメータは、次の構造にする必要があります。

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

セッション名は、URI、ユーザー名、および/またはパスワードを個別に指定する代わりに、connString アイテムキーのパラメータとして使用できます。

アイテムキーでは、最初のパラメータとして connString または URI のいずれかを指定できます。
最初のキーのパラメータがいずれのセッション名にも一致しない場合、それは URI として扱われます。
なお、アイテムキーで URI に埋め込まれた認証情報を渡すことはサポートされていません。代わりに、名前付きセッションパラメータを使用してください。

利用可能な名前付きセッションパラメータの一覧は、プラグインによって異なります。

アイテムキーのパラメータで新しい値を指定することにより、セッションパラメータを上書きできます(を参照)。

名前付きセッションにパラメータが定義されていない場合、Zabbix エージェント 2 はデフォルトのプラグインパラメータで定義された値を使用します。

パラメータの優先順位

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

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

この設定の結果、各セッション名は アイテムキー の 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 ブローカーへの暗号化接続を設定するには、エージェント設定ファイルで 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 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 への暗号化接続を設定するには、エージェント設定ファイルで 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

サポートされる キー は、Linux/Windows 上の Zabbix agent 2 でのみ、パッシブチェックおよびアクティブチェックの両方で使用できます。
参照:
設定パラメータ
SW インストール済みパッケージの一覧。 system.sw.packages, system.sw.packages.get サポートされるキーは、Zabbix agent の キー と同じパラメータを持ちます。
Swap 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.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 agent 2 のロード可能なプラグインは標準では提供されておらず、個別にインストールする必要があります。

プラグインをインストールする前に、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 パラメータを named session パラメータとして指定してください。
現在、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 パラメータを named session または default パラメータとして指定してください。現在、TLS パラメータをアイテムキーのパラメータとして渡すことはできません。

MSSQL プラグインの設定パラメータも参照してください。
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 パラメータを named session または default パラメータとして指定してください。現在、TLS パラメータをアイテムキーのパラメータとして渡すことはできません。

PostgreSQL プラグインの設定パラメータも参照してください。

ロード可能なプラグインは、次のオプションを付けて起動すると:

  • -V --version - プラグインのバージョンとライセンス情報を表示します。
  • -h --help - ヘルプ情報を表示します。