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=zabbixPlugins.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 のプラグインは、接続関連のパラメータ値を次の順序で検索します。

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

プラグインをインストールする前に、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 - ヘルプ情報を表示します。