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

8 スクリプト

概要

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

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

スクリプトは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.*}マクロがサポートされています。カスタムユーザーマクロがサポートされています。
注:確認メッセージのテスト時にマクロは展開されません。
このフィールドは範囲が「手動ホスト処理」または「手動イベント処理」の時に表示されます。

スクリプト実行と結果

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’)に調整するのではありません)