[comment]: # ({85991cf3-4f969495})
# 19 拡張機能

[comment]: # ({/85991cf3-4f969495})

[comment]: # ({99ac2a08-574b73cc})
#### 概要

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

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

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

[comment]: # ({/99ac2a08-574b73cc})

[comment]: # ({506e8c98-7b2875dd})
#### カスタムコマンドによるデータ収集

[comment]: # ({/506e8c98-7b2875dd})

[comment]: # ({d1691dc9-2d4c92f9})
##### トラッパーアイテム

[トラッパーアイテム](/manual/config/items/itemtypes/trapper)は、データを取得する代わりに受信するアイテムです。
トラッパーアイテムは、たとえば長時間実行されるユーザースクリプトの場合の定期的な可用性やパフォーマンスデータなど、特定のデータをZabbixサーバーまたはプロキシに送信するのに便利です。
Zabbixサーバーまたはプロキシへのデータ送信は、[Zabbix sender](/manual/concepts/sender)ユーティリティまたはZabbix sender[プロトコル](/manual/appendix/protocols/zabbix_sender)を使用して可能です。
Zabbixサーバーへのデータ送信は、[`history.push`](/manual/api/reference/history/push)APIメソッドを使用しても可能です。

[comment]: # ({/d1691dc9-2d4c92f9})

[comment]: # ({e7b67f3a-327d4393})
##### 外部チェック

[外部チェック](/manual/config/items/itemtypes/external)は、実行可能ファイル(例えば、[シェルスクリプト](/manual/appendix/command_execution)やバイナリ)を実行してチェックを行うアイテムです。

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

[comment]: # ({/e7b67f3a-327d4393})

[comment]: # ({e86032a0-ce750625})
##### ユーザーパラメータ

[ユーザーパラメータ](/manual/config/items/userparameters)は、ユーザー定義のキーに関連付けられたユーザー定義のコマンドであり、実行時にZabbixエージェントが稼働しているホストから必要なデータを取得できます。
ユーザーパラメータは、Zabbixで事前定義されていないエージェントまたはエージェント2のアイテムを設定する際に便利です。

[comment]: # ({/e86032a0-ce750625})

[comment]: # ({7929dcdd-014456ed})
##### `system.run[]` Zabbixエージェントアイテム

`system.run[]` Zabbix [エージェントアイテム](/manual/config/items/itemtypes/zabbix_agent#system.run)は、ユーザー定義コマンド用のアイテムです（事前定義されたキー`system.run[]`に関連付けられています。例えば、`system.run[myscript.sh]`）。このコマンドは、Zabbixエージェントが稼働しているホスト上で実行できます。

注意: `system.run[]`アイテムはデフォルトで無効になっており、使用する場合はZabbixエージェントまたはagent 2の設定ファイル（`AllowKey`設定パラメータ）で[許可](/manual/config/items/restrict_checks)し、定義する必要があります。

[comment]: # ({/7929dcdd-014456ed})

[comment]: # ({2550c7b3-8ef20381})
::: noteimportant
外部チェック、ユーザーパラメーター、`system.run[]` Zabbixエージェントアイテムなどのアイテムでのユーザー定義コマンドは、Zabbixコンポーネントの実行に使用されるOSユーザーから実行されます。
これらのコマンドを実行するには、このユーザーに必要な権限が必要です。
:::

[comment]: # ({/2550c7b3-8ef20381})

[comment]: # ({f4f740a1-9530d8d5})
##### HTTPエージェントアイテム

[HTTPエージェント](/manual/config/items/itemtypes/http)アイテムは、HTTP/HTTPS経由でデータリクエストを実行するためのアイテムです。
HTTPエージェントアイテムは、*Elasticsearch*や*OpenWeatherMap*などのサービスからデータを取得するためにHTTPエンドポイントにリクエストを送信したり、Zabbix APIのステータスやApacheやNginx Webサーバーのステータスを確認したりするのに便利です。
HTTPエージェントアイテム（トラッピングを有効にした場合）は、[トラッパーアイテム](#trapper-items)としても機能します。

[comment]: # ({/f4f740a1-9530d8d5})

[comment]: # ({a5135d6d-f6b462b1})
##### スクリプトアイテム

[スクリプトアイテム](/manual/config/items/itemtypes/script)は、HTTP/HTTPS経由でデータを取得するユーザー定義のJavaScriptコードを実行するためのアイテムです。
スクリプトアイテムは、HTTPエージェントアイテムで提供される機能だけでは十分でない場合に便利です。
例えば、複数のステップや複雑なロジックを必要とする高度なデータ収集シナリオでは、スクリプトアイテムを設定してHTTPコールを実行し、受信したデータを処理し、変換した値を2回目のHTTPコールに渡すことができます。

[comment]: # ({/a5135d6d-f6b462b1})

[comment]: # ({60de34fb-fc37db31})
::: notetip
HTTPエージェントアイテムとスクリプトアイテムはZabbixサーバーおよびプロキシでサポートされており、監視対象ホストでエージェントを実行する必要はありません。
:::

[comment]: # ({/60de34fb-fc37db31})

[comment]: # ({8a85d13d-37a255c2})
#### 高度な拡張機能

[comment]: # ({/8a85d13d-37a255c2})

[comment]: # ({037daafe-45ac5b61})
##### ロード可能モジュール

C言語で記述された[ロード可能モジュール](/manual/extensions/loadablemodules)は、UNIXプラットフォーム上でZabbixコンポーネント（サーバー、プロキシ、エージェント）の機能を拡張するための多用途かつパフォーマンス重視のオプションです。ロード可能モジュールは基本的にZabbixデーモンによって使用され、起動時にロードされる共有ライブラリです。ライブラリには特定の関数を含める必要があり、Zabbixプロセスがそのファイルが実際にロードして動作できるモジュールであることを検出できるようにします。

ロード可能モジュールには、新しいメトリックの追加やその他のロジックの実装（例：Zabbixの[履歴データエクスポート](/manual/extensions/loadablemodules#providing-history-export-callbacks)）などの機能拡張、優れたパフォーマンス、提供される機能の開発・利用・共有のオプションなど、多くの利点があります。これにより、メンテナンスが容易になり、Zabbixのコアコードベースとは独立して新機能を簡単に提供できるようになります。

ロード可能モジュールは、複雑な監視構成で特に有用です。組み込みシステムの監視、大量の監視パラメータ、複雑なロジックや起動時間の長い重いスクリプトを使用する場合、ユーザーパラメータ、`system.run[]` Zabbixエージェントアイテム、外部チェックなどの拡張機能はパフォーマンスに影響を与えます。ロード可能モジュールは、パフォーマンスを犠牲にすることなくZabbixの機能を拡張する方法を提供します。

[comment]: # ({/037daafe-45ac5b61})

[comment]: # ({80ccd6be-c3a7defc})
##### プラグイン

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

Zabbixエージェント 2 向けに独自のプラグイン（独立したデータコレクター）を開発することも可能です。詳細は[Developer center](/devel/plugins)を参照してください。

[comment]: # ({/80ccd6be-c3a7defc})

[comment]: # ({1ab5311c-d554dcca})
#### アラートのカスタマイズ

[comment]: # ({/1ab5311c-d554dcca})

[comment]: # ({0fa1d1af-4957b4ed})
##### Webhook

[Webhook](/manual/config/notifications/media/webhook)は、Zabbixの[メディアタイプ](/manual/config/notifications/media)であり、Zabbixのアラート機能をヘルプデスクシステム、チャット、メッセンジャーなどの外部ソフトウェアに拡張するオプションを提供します。スクリプトアイテムと同様に、WebhookはカスタムJavaScriptコードを使用してHTTPコールを行うのに便利であり、たとえばMicrosoft Teams、Discord、Jiraなどのさまざまなプラットフォームに通知をプッシュすることができます。また、作成されたヘルプデスクチケットに関する情報などのデータを返し、それをZabbixに表示することも可能です。

既存のWebhookは、Zabbixの[Gitリポジトリ](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media)で利用できます。カスタムWebhookの開発については、[Webhook開発ガイドライン](https://www.zabbix.com/documentation/guidelines/en/webhooks)を参照してください。

[comment]: # ({/0fa1d1af-4957b4ed})

[comment]: # ({fde4aa0a-1ff47b17})
##### アラートスクリプト

[アラートスクリプト](/manual/config/notifications/media/script)は、Zabbixの[メディアタイプ](/manual/config/notifications/media)の一つで、Zabbixアラートを処理するための独自の方法（スクリプト）を作成するオプションを提供します。
アラートスクリプトは、Zabbixでアラートを送信する既存のメディアタイプに満足できない場合に便利です。

[comment]: # ({/fde4aa0a-1ff47b17})

[comment]: # ({8d0a3d44-6a53c965})
#### フロントエンドのカスタマイズ

[comment]: # ({/8d0a3d44-6a53c965})

[comment]: # ({fd4967cb-e59962d6})
##### カスタムテーマ

カスタムテーマを使用して、Zabbixフロントエンドの外観を変更することができます。独自のテーマの作成と適用方法については、[手順](/manual/web_interface/theming)を参照してください。

[comment]: # ({/fd4967cb-e59962d6})

[comment]: # ({850d0b20-a1752bc3})
##### フロントエンドモジュール

[フロントエンドモジュール](/manual/extensions/frontendmodules)は、サードパーティ製モジュールの追加や独自開発により、Zabbixフロントエンドの機能を拡張するオプションを提供します。
フロントエンドモジュールを使用すると、新しいメニュー項目やそれに対応するビュー、アクションなどを追加できます。

[comment]: # ({/850d0b20-a1752bc3})

[comment]: # ({a2988159-485cf185})
#### グローバルスクリプト

[グローバルスクリプト](/manual/web_interface/frontend_sections/alerts/scripts)は、設定されたスコープとユーザー権限に応じて、監視対象で実行できるユーザー定義のコマンドセットです（シェル（/bin/sh）インタープリターによる）。
グローバルスクリプトは、以下のアクションに設定できます。

-   アクション[オペレーション](/manual/config/notifications/action/operation)
-   [手動ホストアクション](/manual/web_interface/menu/host_menu#overview)
-   [手動イベントアクション](/manual/web_interface/menu/event_menu#content)

グローバルスクリプトは多くのケースで有用です。
例えば、アクションオペレーションや手動ホストアクションに設定した場合、
グローバルスクリプトを使用して、アプリケーション（Webサーバー、ミドルウェア、CRMなど）の再起動や
ディスクスペースの解放（古いファイルの削除、`/tmp`のクリーンアップなど）などの[リモートコマンド](/manual/config/notifications/action/operation/remote_command)を
自動または手動で実行できます。
また、手動イベントアクションに設定した場合は、外部システムでの問題チケットの管理などにも利用できます。

グローバルスクリプトは、Zabbixサーバー、プロキシ、エージェントによって実行できます。

[comment]: # ({/a2988159-485cf185})

[comment]: # ({29547248-44d06965})
::: noteimportant
ユーザー定義コマンドは、Zabbixコンポーネントの実行に使用されるOSユーザーから実行されます。
これらのコマンドを実行するには、このユーザーに必要な権限が必要です。
:::

[comment]: # ({/29547248-44d06965})

[comment]: # ({fb93634c-ee438455})
#### Zabbix API

[Zabbix API](/manual/api)は、Zabbixフロントエンドの一部であるHTTPベースのAPIです。
Zabbix APIを使用すると、以下の操作をプログラムで実行できます。

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

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

[comment]: # ({/fb93634c-ee438455})
