Zabbixは多くの機能を提供していますが、追加機能の余地は常にあります。 拡張機能は、Zabbixのソースコードを変更することなく、監視機能を修正・強化する便利な方法です。
Zabbixの機能は、組み込みの拡張オプション(トラッパーアイテム、ユーザーパラメータなど)を使用するか、カスタム拡張機能(ロード可能モジュール、プラグインなど)を使用または作成することで拡張できます。
このセクションでは、Zabbixを拡張するためのすべてのオプションの概要と参照を提供します。
トラッパーアイテムは、データを取得する代わりに受信するアイテムです。 トラッパーアイテムは、たとえば長時間実行されるユーザースクリプトの場合の定期的な可用性やパフォーマンスデータなど、特定のデータをZabbixサーバーまたはプロキシに送信するのに便利です。 Zabbixサーバーまたはプロキシへのデータ送信は、Zabbix senderユーティリティまたはZabbix senderプロトコルを使用して可能です。 Zabbixサーバーへのデータ送信は、history.pushAPIメソッドを使用しても可能です。
外部チェックは、実行可能ファイル(例えば、シェルスクリプトやバイナリ)を実行してチェックを行うアイテムです。
外部チェックはZabbixサーバーまたはプロキシ(ホストがプロキシによって監視されている場合)によって実行され、監視対象ホストでエージェントを実行する必要はありません。
ユーザーパラメータは、ユーザー定義のキーに関連付けられたユーザー定義のコマンドであり、実行時にZabbixエージェントが稼働しているホストから必要なデータを取得できます。 ユーザーパラメータは、Zabbixで事前定義されていないエージェントまたはエージェント2のアイテムを設定する際に便利です。
system.run[] Zabbixエージェントアイテムsystem.run[] Zabbix エージェントアイテムは、ユーザー定義コマンド用のアイテムです(事前定義されたキーsystem.run[]に関連付けられています。例えば、system.run[myscript.sh])。このコマンドは、Zabbixエージェントが稼働しているホスト上で実行できます。
注意: system.run[]アイテムはデフォルトで無効になっており、使用する場合はZabbixエージェントまたはagent 2の設定ファイル(AllowKey設定パラメータ)で許可し、定義する必要があります。
外部チェック、ユーザーパラメーター、system.run[] Zabbixエージェントアイテムなどのアイテムでのユーザー定義コマンドは、Zabbixコンポーネントの実行に使用されるOSユーザーから実行されます。 これらのコマンドを実行するには、このユーザーに必要な権限が必要です。
HTTPエージェントアイテムは、HTTP/HTTPS経由でデータリクエストを実行するためのアイテムです。 HTTPエージェントアイテムは、ElasticsearchやOpenWeatherMapなどのサービスからデータを取得するためにHTTPエンドポイントにリクエストを送信したり、Zabbix APIのステータスやApacheやNginx Webサーバーのステータスを確認したりするのに便利です。 HTTPエージェントアイテム(トラッピングを有効にした場合)は、トラッパーアイテムとしても機能します。
スクリプトアイテムは、HTTP/HTTPS経由でデータを取得するユーザー定義のJavaScriptコードを実行するためのアイテムです。 スクリプトアイテムは、HTTPエージェントアイテムで提供される機能だけでは十分でない場合に便利です。 例えば、複数のステップや複雑なロジックを必要とする高度なデータ収集シナリオでは、スクリプトアイテムを設定してHTTPコールを実行し、受信したデータを処理し、変換した値を2回目のHTTPコールに渡すことができます。
HTTPエージェントアイテムとスクリプトアイテムはZabbixサーバーおよびプロキシでサポートされており、監視対象ホストでエージェントを実行する必要はありません。
C言語で記述されたロード可能モジュールは、UNIXプラットフォーム上でZabbixコンポーネント(サーバー、プロキシ、エージェント)の機能を拡張するための多用途かつパフォーマンス重視のオプションです。ロード可能モジュールは基本的にZabbixデーモンによって使用され、起動時にロードされる共有ライブラリです。ライブラリには特定の関数を含める必要があり、Zabbixプロセスがそのファイルが実際にロードして動作できるモジュールであることを検出できるようにします。
ロード可能モジュールには、新しいメトリックの追加やその他のロジックの実装(例:Zabbixの履歴データエクスポート)などの機能拡張、優れたパフォーマンス、提供される機能の開発・利用・共有のオプションなど、多くの利点があります。これにより、メンテナンスが容易になり、Zabbixのコアコードベースとは独立して新機能を簡単に提供できるようになります。
ロード可能モジュールは、複雑な監視構成で特に有用です。組み込みシステムの監視、大量の監視パラメータ、複雑なロジックや起動時間の長い重いスクリプトを使用する場合、ユーザーパラメータ、system.run[] Zabbixエージェントアイテム、外部チェックなどの拡張機能はパフォーマンスに影響を与えます。ロード可能モジュールは、パフォーマンスを犠牲にすることなくZabbixの機能を拡張する方法を提供します。
プラグインは、Zabbix agent 2の監視機能を拡張します。 Goプログラミング言語で記述されており、(Cで記述された)ロード可能なモジュールの代替手段を提供します。
プラグインは、構造を定義し、1つまたは複数のプラグインインターフェース(Exporter、Collector、Configurator、Runner、Watcher)を実装するGoパッケージです。 Zabbix agent 2では、2種類のプラグインがサポートされています:
Zabbixが提供するプラグインの一覧を参照してください。
独自のプラグインを作成するための手順やチュートリアルについては、Developer centerを参照してください。
Webhookは、Zabbixのメディアタイプであり、Zabbixのアラート機能をヘルプデスクシステム、チャット、メッセンジャーなどの外部ソフトウェアに拡張するオプションを提供します。スクリプトアイテムと同様に、WebhookはカスタムJavaScriptコードを使用してHTTPコールを行うのに便利であり、たとえばMicrosoft Teams、Discord、Jiraなどのさまざまなプラットフォームに通知をプッシュすることができます。また、作成されたヘルプデスクチケットに関する情報などのデータを返し、それをZabbixに表示することも可能です。
既存のWebhookは、ZabbixのGitリポジトリで利用できます。カスタムWebhookの開発については、Webhook開発ガイドラインを参照してください。
アラートスクリプトは、Zabbixのメディアタイプの一つで、Zabbixアラートを処理するための独自の方法(スクリプト)を作成するオプションを提供します。 アラートスクリプトは、Zabbixでアラートを送信する既存のメディアタイプに満足できない場合に便利です。
カスタムテーマを使用して、Zabbixフロントエンドの外観を変更することができます。独自のテーマの作成と適用方法については、手順を参照してください。
フロントエンドモジュールは、サードパーティ製モジュールの追加や独自開発により、Zabbixフロントエンドの機能を拡張するオプションを提供します。 フロントエンドモジュールを使用すると、新しいメニュー項目やそれに対応するビュー、アクションなどを追加できます。
グローバルスクリプトは、設定されたスコープとユーザー権限に応じて、監視対象で実行できるユーザー定義のコマンドセットです(シェル(/bin/sh)インタープリターによる)。 グローバルスクリプトは、以下のアクションに設定できます。
グローバルスクリプトは多くのケースで有用です。 例えば、アクションオペレーションや手動ホストアクションに設定した場合、 グローバルスクリプトを使用して、アプリケーション(Webサーバー、ミドルウェア、CRMなど)の再起動や ディスクスペースの解放(古いファイルの削除、/tmpのクリーンアップなど)などのリモートコマンドを 自動または手動で実行できます。 また、手動イベントアクションに設定した場合は、外部システムでの問題チケットの管理などにも利用できます。
グローバルスクリプトは、Zabbixサーバー、プロキシ、エージェントによって実行できます。
ユーザー定義コマンドは、Zabbixコンポーネントの実行に使用されるOSユーザーから実行されます。 これらのコマンドを実行するには、このユーザーに必要な権限が必要です。
Zabbix APIは、Zabbixフロントエンドの一部であるHTTPベースのAPIです。 Zabbix APIを使用すると、以下の操作をプログラムで実行できます。
Zabbix APIは、多数のメソッドで構成されており、名目上は個別のAPIにグループ化されています。 各メソッドは特定のタスクを実行します。 利用可能なメソッドや、Zabbix APIが提供する機能の概要については、 Zabbix APIのメソッドリファレンスを参照してください。