This is a translation of the original English documentation page. Help us make it better.

3 スクリプト

概要

管理 → スクリプトセクションでは、ユーザー定義のグローバルスクリプトを設定および保守できます。

構成されたスコープとユーザー権限に応じて、グローバルスクリプトを実行できます。

スクリプトはZabbixエージェント、Zabbixプロキシ、またはZabbixサーバーでのみ実行されます。 コマンド実行も参照してください。

ZabbixエージェントとZabbixプロキシリモートスクリプトの両方がデフォルトで無効になっています。それらは次の方法で有効にできます。

  • Zabbixエージェントで実行されるリモートコマンドの場合
    • エージェント構成で許可されたコマンドごとにAllowKey=system.run[<コマンド>,*]パラメーターを追加します。*は待機モードと非待機モードを表します。
  • Zabbixプロキシで実行されるリモートコマンドの場合
    • 警告:Zabbixプロキシによって監視されているZabbixエージェントでリモートコマンドを実行する場合は、Zabbixプロキシでリモートコマンドを有効にする必要はありません。ただし、Zabbixプロキシでリモートコマンドを実行する必要がある場合は、プロキシ設定のEnableRemoteCommandsパラメーターを1に設定します。

既存のスクリプトとその詳細のリストが表示されます。

表示データ

説明
Name スクリプトの名前。スクリプト名をクリックすると、スクリプト設定フォームが開きます
Scope スクリプトの範囲。アクション操作、手動ホストアクション、または手動イベントアクション。この設定により、スクリプトを使用できる場所が決まります。
Used in actions スクリプトが使用されているアクションが表示されます。
Type スクリプトタイプが表示されます - Webhook、* Script SSH Telnet 、またはIPMI*コマンド。
Execute on スクリプトがZabbixエージェント、Zabbixプロキシ、またはZabbixサーバーの何処で実行されるかが表示されます。
Commands スクリプト内で実行されるすべてのコマンドが表示されます。
User group スクリプトを使用できるユーザーグループが表示されます(すべてのユーザーグループの場合はすべて
Host group スクリプトを使用できるホストグループが表示されます(すべてのホストグループの場合はすべて
Host access ホストグループのアクセス許可レベルが表示されます - 読み取りまたは書き込み。必要な権限レベルを持つユーザーのみが、スクリプトの実行にアクセスできます。

新しいスクリプトを構成するには、右上隅にあるスクリプトの作成ボタンをクリックします。

一括編集オプション

リストの下にあるボタンは、1つの一括編集オプションを提供します。

  • 削除 - スクリプトを削除します

このオプションを使用するには、それぞれのスクリプトの前にあるチェックボックスをオンにして、削除をクリックします。

フィルタの使用

フィルタを使用して、関心のあるスクリプトのみを表示できます。検索パフォーマンスを向上させるために、データは未解決のマクロで検索されます。

Filterリンクは、スクリプトのリストの上にあります。それをクリックすると、名前とスコープでスクリプトをフィルタリングできるフィルターが使用可能になります。

グローバルスクリプトの設定

スクリプト属性

パラメータ 詳細
名前 一意なスクリプト名
例:Clear /tmp filesystem
範囲 スクリプトの範囲 - アクション処理、手動ホスト処理、または手動イベント処理。この設定は、スクリプトを使用できる場所を決定します - アクション操作のリモートコマンドで、ホストメニューまたはイベントメニュー
範囲を'アクション処理'に設定すると、構成アクションにアクセスできるすべてのユーザーがスクリプトを使用できるようになります。
スクリプトが実際にアクションの場合、その範囲を「アクション処理」から変更することはできません。
マクロのサポート
範囲は、使用可能なマクロの範囲に影響します。たとえば、ユーザー関連のマクロ({USER.*})はスクリプトでサポートされており、スクリプトを起動したユーザーに関する情報を渡すことができます。ただし、スクリプトスコープがアクション処理の場合は、アクション処理が自動的に実行されるため、サポートされていません。
サポートされているマクロを確認するには、「トリガーベースの通知とコマンド/トリガーベースのコマンド」を検索してください。 サポートされているマクロテーブルの「手動ホスト処理スクリプト」および「手動イベント処理スクリプト」。マクロがスペースを含む値(ホスト名など)に解決される可能性がある場合は必要に応じて引用符で囲むことを忘れないでください。
メニューパス スクリプトへの目的のメニューパス。たとえばDefaultまたはDefault /は、それぞれのディレクトリにスクリプトを表示します。メニューはネストできます。たとえばメインメニュー/サブメニュー1/サブメニュー2。監視セクションのホスト/イベントメニューからスクリプトにアクセスすると、指定されたディレクトリに従ってスクリプトが整理されます。
このフィールドは、[手動ホスト処理]または[手動イベント処理]が範囲として選択されている場合にのみ表示されます。
タイプ ボタンをクリックして、スクリプトタイプを選択します:
Webhook,Script,SSH,Telnetまたは** IPMI**コマンド
スクリプトタイプ: Webhook
パラメータ Webhook変数を属性と値のペアとして指定します。
関連項目:Webhook メディア設定
マクロとカスタムユーザーマクロはパラメーター値でサポートされています。マクロのサポートはスクリプトの範囲によって異なります(上記の範囲を参照)
スクリプト パラメータフィールド(またはその横にある表示/編集ボタン)をクリックすると表示されるブロックにJavaScriptコードを入力します。
マクロのサポートはスクリプトの範囲によって異なります(上記の範囲を参照)<br >関連項目:Webhook メディア設定 ,追加のJavascriptオブジェクト
タイムアウト JavaScript実行タイムアウト(1〜60秒、デフォルトは30秒)
タイムサフィックスがサポートされています。例: 30s, 1m
スクリプトタイプ:スクリプト
次で実行 それぞれのボタンをクリックしてシェルスクリプトを実行します。
** Zabbixエージェント** - スクリプトはホスト上のZabbixエージェントによって実行されます(system.runアイテムが許可されている場合)
** Zabbixサーバー(プロキシ)** - スクリプトはZabbixサーバーまたはプロキシによって実行されます(EnableRemoteCommandsによって有効になっている場合)- ホストはサーバーまたはプロキシによって監視されます
Zabbixサーバー - スクリプトはZabbixサーバーによってのみ実行されます。
コマンド スクリプト内で実行するコマンドへのフルパスを入力します。
マクロのサポートはスクリプトの範囲によって異なります(上記の範囲を参照)。カスタムユーザーマクロがサポートされています。
スクリプトタイプ: SSH
認証方法 認証方法を選択します - パスワードまたは公開鍵
ユーザー名 ユーザー名を入力します
パスワード パスワードを入力します
このフィールドは、認証方法として'パスワード'が選択されている場合に使用できます。
公開鍵ファイル 公開鍵ファイルへのパスを入力します。
このフィールドは、認証方法として'公開鍵'が選択されている場合に使用できます。
秘密鍵ファイル 秘密鍵ファイルへのパスを入力します。
このフィールドは、認証方法として'公開鍵'が選択されている場合に使用できます。
キーのパスフレーズ パスフレーズを入力します。
このフィールドは認証方法として'公開鍵'が選択されている場合に使用できます。
ポート ポート番号を入力します
コマンド コマンドを入力します。
マクロのサポートはスクリプトの範囲によって異なります。(上記の範囲を参照)カスタムユーザーマクロがサポートされています。
スクリプトタイプ: Telnet
ユーザー名 ユーザー名を入力します
パスワード パスワードを入力します
ポート ポート番号を入力します
コマンド コマンドを入力します。
マクロのサポートはスクリプトの範囲によって異なります。(上記の範囲を参照)カスタムユーザーマクロがサポートされています。
スクリプトタイプ: IPMI
コマンド IPMIコマンドを入力します。
マクロのサポートはスクリプトの範囲によって異なります。(上記の範囲を参照)カスタムユーザーマクロがサポートされています。
説明 スクリプトの説明
ホストグループ スクリプトを使用できるホストグループを選択します(すべてのホストグループの場合はすべて
ユーザーグループ スクリプトを使用できるユーザーグループを選択します。(すべてのユーザーグループの場合はすべて
このフィールドは範囲が「手動ホスト処理」または「手動イベント処理」の時に表示されます。
必要なホストへのアクセス権 ホストグループのアクセス許可レベルを選択します - 読み取りまたは書き込み。必要な権限レベルを持つユーザーのみがスクリプトの実行にアクセスできます。
このフィールドは範囲が「手動ホスト処理」または「手動イベント処理」の時に表示されます。
確認を有効 スクリプトを実行する前に確認メッセージを表示するには、チェックボックスをオンにします。この機能は、潜在的に危険な操作(再起動スクリプトなど)や時間がかかる可能性のある操作で特に役立つ場合があります。
このオプションは範囲が「手動ホスト処理」または「手動イベント処理」の時に表示されます。
確認テキスト 上記のチェックボックスで有効にした確認ポップアップのカスタム確認テキストを入力します(例:リモートシステムが再起動されます。よろしいですか?)。テキストがどのように表示されるかを確認するには、フィールドの横にあるテストの確認をクリックします。
{HOST.*}および{USER.*}マクロがサポートされています。カスタムユーザーマクロがサポートされています。
注:確認メッセージのテスト時にマクロは展開されません。
このフィールドは範囲が「手動ホスト処理」または「手動イベント処理」の時に表示されます。

Advanced configuration

Advanced configuration options are available in a collapsible Advanced configuration section:

Parameter Description
Enable user input Mark the checkbox to enable manual user input before executing the script.
Manual user input will replace the {MANUALINPUT} macro value in the script.
See also: Manual user input.
Input prompt Enter custom text prompting for custom user input. This text will be displayed above the input field in the Manual input popup.
To see a preview of the Manual input popup, click on Test user input. The preview also allows to test if the input string complies with the input validation rule (see parameters below).
Macro and user macro support depends on the scope of the script (see Scope in general script configuration parameters).
Input type Select the manual input type:
String - single string;
Dropdown - value is selected from multiple dropdown options.
Dropdown options Enter unique values for the user input dropdown in a comma-delimited list.
To include an empty option in the dropdown, add an extra comma at the beginning, middle, or end of the list.
This field is displayed only if 'Dropdown' is selected as Input type.
Default input string Enter the default string for user input (or none).
This field will be validated against the regular expression provided in the Input validation rule field.
The value entered here will be displayed by default in the Manual input popup.
This field is displayed only if 'String' is selected as Input type.
Input validation rule Enter a regular expression to validate the user input string.
Global regular expressions are supported.
This field is displayed only if 'String' is selected as Input type.
Enable confirmation Mark the checkbox to display a confirmation message before executing the script. This feature might be especially useful with potentially dangerous operations (like a reboot script) or ones that might take a long time.
Confirmation text Enter custom confirmation text for the confirmation popup enabled with the checkbox above (for example, Remote system will be rebooted. Are you sure?). To see how the text will look like, click on Test confirmation next to the field.
Macros and custom user macros are supported.
Note: the macros will not be expanded when testing the confirmation message.

If both manual user input and a confirmation message are configured, they will be displayed in consecutive popup windows.

Manual user input

Manual user input allows to supply a custom parameter on each execution of the script. This saves the necessity to create multiple similar user scripts with only a single parameter difference.

For example, you may want to supply a different integer or a different URL address to the script during execution.

To enable manual user input:

  • use the {MANUALINPUT} macro in the script (commands, script, script parameter) where required; or in the URL field of URL scripts;
  • in advanced script configuration, enable manual user input and configure input options.

With user input enabled, before script execution, a Manual input popup will appear to the user asking to supply a custom value. The supplied value will replace {MANUALINPUT} in the script.

Depending on the configuration, the user will be asked to enter a string value:

Or select the value from a dropdown of pre-determined options:

Manual user input is available only for scripts where the scope is 'Manual host action' or 'Manual event action'.

スクリプト実行と結果

Zabbixサーバーで実行されるスクリプトは、終了コードの確認を含めコマンド実行セクションで説明されている順序で実行されます。スクリプトの結果は、スクリプトの実行後に表示されるポップアップウィンドウに表示されます。

Note: スクリプトの戻り値は標準エラーとともに標準出力です。

以下のスクリプトと結果ウィンドウの例を参照してください。

uname -v
       /tmp/non_existing_script.sh
       echo "This script was started by {USER.USERNAME}"

スクリプトの結果にスクリプト自体は表示されません。

スクリプトのタイムアウト

Zabbixエージェント

スクリプトの実行中にタイムアウトが発生する場合があります。

Zabbixエージェントで実行されるスクリプトの例と以下の結果ウィンドウを参照してください。

sleep 5
       df -h

この場合のエラーメッセージは次のとおりです。

Timeout while executing a shell script.

このような状況を回避するためにスクリプト自体を最適化することをお勧めします。(Zabbixエージェント設定Zabbixサーバー設定のTimeoutパラメーターを対応する値(この場合は> ‘5’)に調整するのではありません)

Zabbixエージェント設定でタイムアウトパラメータが変更された場合は、次のエラーメッセージが表示されます。

Get value from agent failed: ZBX_TCP_READ() timed out.

これは、Zabbixエージェント設定で変更が行われたことを意味し、Zabbixサーバー設定でもタイムアウト設定を変更する必要があります。

Zabbix サーバーとプロキシ

Zabbixサーバーで実行されているスクリプトの例と以下の結果ウィンドウを参照してください。

sleep 11
       df -h

このような状況を回避するためにスクリプト自体を最適化することをお勧めします。(Zabbixサーバー設定のTimeoutパラメーターを対応する値(この場合は> ‘11’)に調整するのではありません)