21. 拡張機能

概要

Zabbix は多様な機能を提供していますが、常に機能追加の余地があります。 拡張機能は、Zabbix のソースコードを変更することなく、監視機能を変更および強化するための便利な方法です。

Zabbix の機能は、組み込みの拡張機能オプション(トラッパーアイテム、ユーザーパラメータなど)を使用するか、カスタム拡張機能(ロード可能なモジュール、プラグインなど)を使用または作成することで拡張できます。

このセクションでは、Zabbix を拡張するためのすべてのオプションの概要と参照を提供します。

カスタムコマンドによるデータ収集

トラッパーアイテム

トラッパーアイテムは、クエリを実行する代わりに受信データを受け入れるアイテムです。 トラッパーアイテムは、長時間実行されるユーザースクリプトの定期的な可用性データやパフォーマンスデータなど、特定のデータをZabbixサーバーまたはプロキシに送信するのに役立ちます。 Zabbixサーバーまたはプロキシへのデータの送信は、Zabbix センダーユーティリティまたはZabbix センダープロトコルを使用して行うことができます。 Zabbixサーバーへのデータの送信は、history.push APIメソッドを使用しても可能です。

外部チェック

外部チェックは、実行ファイル(シェルスクリプトやバイナリなど)を実行してチェックを実行するためのアイテムです。

外部チェックはZabbixサーバーまたはプロキシ(ホストがプロキシで監視されている場合)によって実行され、監視対象ホスト上でエージェントを実行する必要はありません。

ユーザーパラメータ

ユーザーパラメータ は、ユーザー定義のコマンド(ユーザー定義キーに関連付けられている)です。実行すると、Zabbix エージェントが稼働しているホストから必要なデータを取得できます。 ユーザーパラメータは、Zabbix で事前定義されていないエージェントまたはエージェント 2 のアイテムを設定するのに役立ちます。

system.run[] Zabbix エージェントアイテム

system.run[] Zabbix エージェントアイテム は、Zabbix エージェントが稼働しているホスト上で実行可能なユーザー定義コマンド(定義済みキー system.run[] に関連付けられている、例: system.run[myscript.sh])のアイテムです。

注: system.run[] アイテムはデフォルトで無効になっています。使用する場合は、有効化(allowed)し、Zabbix エージェントまたはエージェント 2 の設定ファイル(AllowKey 設定パラメータ)で定義する必要があります。

外部チェック、ユーザーパラメータ、system.run[] Zabbixエージェントアイテムなどのアイテム内のユーザー定義コマンドは、Zabbixコンポーネントの実行に使用されているOSユーザーから実行されます。 これらのコマンドを実行するには、そのユーザーに適切な権限が必要です。

HTTP エージェントアイテム

HTTP エージェント アイテムは、HTTP/HTTPS 経由でデータリクエストを実行するためのアイテムです。 HTTP エージェントアイテムは、HTTP エンドポイントにリクエストを送信して ElasticsearchOpenWeatherMap などのサービスからデータを取得したり、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の機能を拡張する方法を提供します。

プラグイン

プラグイン は、ロード可能なモジュール(C言語で記述)の代替手段を提供します。 ただし、プラグインはZabbixエージェント2のみを拡張する手法です。

プラグインは、構造を定義し、1つまたは複数のプラグインインターフェース(ExporterCollectorConfiguratorRunnerWatcher)を実装するGoパッケージです。 Zabbix エージェント 2 では、2 種類のプラグインがサポートされています。

組み込みプラグイン のリストをご覧ください。

独自のプラグインを作成するための手順とチュートリアルについては、開発者センター をご覧ください。

アラートのカスタマイズ

Webhook

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 API は、Zabbix フロントエンドの一部である HTTP ベースの API です。 Zabbix API を使用すると、以下の操作を行うことができます。

  • プログラムから Zabbix の設定を取得および変更する。
  • Zabbix 設定をインポートおよびエクスポートする。
  • Zabbix の履歴データとトレンドデータにアクセスする。
  • Zabbix と連携するようにアプリケーションを設定する。
  • Zabbix とサードパーティ製ソフトウェアとを統合する。
  • 定型タスクを自動化する。

Zabbix API は、名目上は個別の API にグループ化された複数のメソッドで構成されています。 各メソッドは特定のタスクを実行します。 利用可能なメソッドと、Zabbix API が提供する機能の概要については、 Zabbix API メソッドリファレンス を参照してください。