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

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エージェント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
データベースへの暗号化接続を設定するには、named session パラメータとしてエージェント設定ファイルに 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 データベースへの暗号化接続を設定するには、named session または default パラメータとしてエージェント設定ファイルに TLS パラメータを指定してください。現在、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
データベースへの暗号化接続を設定するには、named session または default パラメータとしてエージェント設定ファイルに TLS パラメータを指定してください。
現在、TLS パラメータはアイテムキーのパラメータとして渡すことはできません。

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

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

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