スクリプト監視

スクリプト監視――概要

カスタム スクリプトの監視は、スクリプト実行結果を手作業で追跡しようとすると、手間がかかることになります。Applications Managerでは、スクリプト監視機能で自作スクリプト(Windows/Linux/UNIX)からの出力を自動的に確認でき、作業の軽減につながります。ローカルにあるスクリプトも、リモートにあるスクリプトも監視可能で、結果をファイルへ出力し、結果をパース、設定したアクションを実行できます。

Applications Managerは、組織で利用しているアドホックなWindows/Linux/Solarisスクリプトをサポートします。

  • スクリプト監視を新しく作成する際は、監視するカスタム スクリプトの場所(ローカル/リモート)、属性(数値型/文字列型)、出力ファイルポーリング間隔を指定してください。
  • Applications Managerは指定の監視間隔で、スクリプトを実行します。
  • スクリプトは結果を、設定した出力ファイルに送出します。出力形式は、key=value形式で、「=」を区切り記号にしてください。
  • Applications Managerは出力ファイルを解析し、設定済みアクションを実行します。これによって、管理者にアラートを送ることもできれば、別スクリプトで自動的に是正アクションを起こすことも可能です。
  • 設定した属性のレポートはグラフで表示します。レポートの有効・無効切り替えも可能です。

新規スクリプト監視を作成するには

スクリプト監視を追加するには、次の手順に従ってください。

  1. 新規監視スクリプト監視と選択します。
  2. 監視の表示名を入力してください。
  3. 監視するスクリプトが、ローカル サーバーリモート サーバーのどちらにあるか、指定します。
  4. ローカル サーバーの場合、監視するスクリプトの絶対パスと、スクリプト実行元ディレクトリの絶対パスも指定します。実行ディレクトリと「監視するスクリプト」のディレクトリは、同じ階層構造にしてください。
  5. スクリプトの場所に、コマンドスクリプトやバッチのファイルを選択します。
  6. 監視するスクリプトやコマンドの絶対パスを指定してください。
  7. スクリプト実行元ディレクトリの絶対パスを指定します。実行ディレクトリと「監視するスクリプト」のディレクトリは、同じ階層構造にしてください。
  8. 出力設定のチェック ボックスを選び、設定へと進んでください。
    • ファイルから出力を取得するをチェックし、ファイルのパスを指定します。チェック ボックスを選択しない場合、Applications Managerは出力ストリームから出力を取得します。
    • 文字列型属性数値型属性を入力してください。属性は行ごとに1つ指定します。
    • 出力ファイルで使う区切り記号を入力してください。デフォルトでは「=」となっています。区切り記号を指定しない場合は、空白を区切りと見なします。
  9. テーブル形式の出力ファイルを監視するには、テーブルの名前と、文字列型・数値型の属性区切り記号を入力し、どの属性を一意のカラムにするか指定します。
    • テーブル形式の出力ファイルを特定するには、スクリプトの前後に次のコマンドを実行してください。
      echo <--table <table-name> starts-->
      [Script Commands]
      echo <--table <table-name> ends-->
      これによって、Applications Managerは、出力ファイルのテーブルを識別します。
    • スクリプトではなくコマンドを入力する場合も、コマンド出力は上記フォーマットにしてください。コマンド出力のヘッダーとフッターをコマンド出力に記載するのも必須です。
    • 次回ポーリングでテーブル行が見つからない場合に備えて、アクションを定義しておくことができます。保持、削除、非管理の設定は、テーブル行の管理で実行してください。
  10. 引数を指定します。例:hostname 80 http
  11. ポーリング間隔をセットしてください。デフォルトでは、5分です。
  12. タイムアウト値を指定します(秒)。スクリプト実行の最長時間を指し、これを超えるとタイムアウトします。
  13. Linuxの場合、スクリプトの実行モードを指定します。デフォルトでは、「sh」です。
  14. スクリプトがリモート サーバーにある場合は、ホスト名をリストから選びます。
  15. リモート サーバーが新規ホストであれば、サーバーのホスト名/IPアドレスを入力してください。監視モードをTelnetかSSHで選択します。
  16. サーバーのユーザー名パスワードを入力してください。
  17. ポート番号を入力してください。デフォルトではTelnetは23、SSHは22です。
  18. コマンド プロンプトの最後の文字を指定します。デフォルトでは$となっており、>、#なども指定できます。
  19. スクリプト監視を追加すると、その詳細が表示されます。

メモPowerShellで出力ファイルを作成する場合、「-Encoding Ascii」で文字コードを指定する必要があります(たとえば、日本語環境ではShift-JISが標準となっていることがあります)。

スクリプト監視でアラート テンプレートの設定を有効にします。

アラートの設定へのリンクを有効にすることもできます。リンクは、スクリプト監視ページの各テーブルの右上コーナーに表示されます。こちらから、テーブルにあるあらゆる属性にしきい値の事前設定が可能です。

スクリプト監視でアラート テンプレートの設定を有効にする方法を説明します。

  • 管理タブへ移動します。
  • ディスカバリとデータ収集からパフォーマンス ポーリングをクリックしてください。
  • パフォーマンス データ収集で、データ収集の最適化タブをクリックします。
  • ドロップダウンからスクリプト/データベース クエリ監視を選択してください。
  • アラート テンプレート設定をDBクエリ監視とスクリプト監視で有効にするをチェックしてください。
  • アラートの設定のリンクが、スクリプト監視ページの各テーブルの右上コーナーに表示されます。

ヒント

  1. スクリプトをパスも含めコマンドにするには
  2. コマンド1行をパイプ処理でスクリプト風にするには
  3. スクリプトをパスも含めスクリプト実行するには
    • ローカルWindows Serverにあるコマンドは、次のようにも実行できます。
      cmd /C [ScriptName]  [Arguments]
      :cmd /C D:\testScript.bat hostname username password
  4. バッチ ファイルでなく、VBScript、PowerShellなどを実行する場合
    • スクリプトからコマンド プロンプトやファイルに出力します。
    • VBScriptやPowerShellは、ファイルをバッチに埋め込んで実行することもできます。こちらにサンプルを示します。
  5. バッチを別途用意することなく、直接「コマンド」を選択可能です。
              C:\windows\system32\cscript.exe D:\testFile.vbs hostname username > outputfile.txt
  6. スクリプトでは引数が使えます。

メモ:リモートのWindowsスクリプト監視はサポート対象外です。

ローカル・リモートでのUnix/Linuxスクリプト監視

  • 実行するスクリプトの「Shellタイプ」を指定してください。デフォルトでは、「sh」になります。
  • スクリプトは「コマンド」のように直接実行できます。例:sh ./test.sh

メモ:スクリプトの実行と、出力ファイルへの読み書き権限が必要です。

サンプル

コマンド:netstat -an | grep "CLOSE_WAIT" | wc -l | awk '{print "CLOSE_WAIT=" $1}'

コマンドサンプル
 

 

サンプル

VBScriptファイル実行には

  • testFile.vbsを実行するには、testScript.batにVBScriptファイルを埋め込んでください。
  • testScript.batファイルの内容は、次のとおりです。

c:\windows\system32\cscript.exe D:\testFile.vbs  > outputFile.txt

  • testScript.batを監視に追加して、outputFile.txtで出力を取得してください。

PowerShellファイル実行には

  • test.ps1を実行するには、testScript.batにPowerShellスクリプトを埋め込んでください。
  • test.batの内容は次のとおりです。

PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command

  • test.batファイルを監視に追加して、OutputFile.txtで出力を取得してください。

メモ
  • PowerShell実行の際は、-NoProfile -ExecutionPolicy Bypassを付加してください。
  • PowerShellで出力ファイルを作成するには、「-Encoding Ascii」を指定する必要があります。

入力サンプル

スクリプト監視

ここで監視するinterfacestatus.batは、ユーザー定義のテーブルInterfaceStatsと、同じくユーザー定義のパラメーターDiskStatusDiskErrorsNo. ofProcessを、出力ファイルem>interfacestatusoutput.txtに作成します。

  • スクリプト監視の作成フォームで、スクリプトの絶対パスc:\interfacestatus.batと指定しています。
  • 出力設定では、出力ファイルの絶対パスc:\interfacestatusoutput.txtなどと指定してください。
  • DiskStatusは文字列属性、No.ofProcesDiskErrorsは数値型属性にし、区切り記号「=」で指定します。
  • 監視の統計をテーブル形式で取得するには、出力ファイルにテーブルを選択してください。
    • InterfaceStatsテーブルには、stats Name、IP、Status、In、Outができます。Name、IP、Statusは文字列型属性で、InとOutは数値型属性です。区切り記号(Column Delimiter)には、上記の例ではスペースを利用しています。タブ文字で区切るには、\tと入力してください。タブ区切りはSQLクエリの結果等で見受けられます。
  • メモ:テーブルInterfaceStatsの開始タグは、「<--table InterfaceStats starts-->」で終了タグは「<--table InterfaceStats ends-->」です。テーブルの1行目には属性名が入ります。属性名(カラム名)のエントリも、データ行の内容で指定したのと同じ同じ区切り記号で分離されています。この場合、Name、IP、Status、In、Outもスペースで区切られています。残りの行は、終了タグまで実際のデータが入ります。テーブルの区切り記号には一意のものを使い、カラムの区切り記号と同一にしてください。
  • 一意のカラムとは、複数行にわたって重複して現れることがなく、1行をその値で特定できる属性を指します。ここでは、IPが一意のカラムになっています。

出力サンプル

DiskStatus=Up
No.ofProcess=1
DiskErrors=0

<--table InterfaceStats starts-->
Name IP In Out
eth0 192.168.1.1 123451 234567
eth1 192.168.1.2 345633 453267
<--table InterfaceStats ends-->

監視対象のパラメーター

監視タブをクリックして、監視カテゴリ ビューへ移動します。カスタム監視テーブルでスクリプト監視をクリックすると、一括設定ビューが、3つのタブに分類・表示されます。

  • 可用性タブでは、過去24時間か30日の可用性履歴がわかります。
  • パフォーマンス タブでは、過去24時間か30日のステータスとイベントがわかります。
  • リスト ビューでは、一括管理設定が可能です。

スクリプトの可用性と応答時間を上書きする

この機能は、カスタム スクリプトで測定した応答時間を上書きし、出力ファイルで定義済みの値を利用する際に有用です。Applications Managerは出力ファイルで予約語を探し、マッチするものがあれば、対応する属性に置き換えます。

たとえば、次のスクリプト出力があるものとします。

# 値は0か1。0は成功、1は失敗
script_availability=1
script_message=Server is not running.
script_responsetime=10

この場合、出力ファイルの解析の際に、script_availabilityの値である1を見て、可用性の計算をそれにもとづき実行します。同じことは、応答時間においても発生します。

サンプル

スカラー型の例(単一型)

テスト用Solarisマシンの/home/test-solaris/にあるスクリプト<ファイルystem.sh>を監視するシナリオを考えてみます。スクリプトからは同じディレクトリにあるoutput.txtファイルへ、ダンプ出力を行います。output.txtのフォーマットは次のようになっています。

SystemTemperature=37
TimeSinceLastReboot=30
TopPaginApp=sendmail
IOReads=1050

スクリプト監視のセットアップ

  • Applications ManagerのWebクライアントにログインしてください。
  • 新規監視をクリックし、コンボボックスでスクリプト監視を選択します。
  • 表示名を入力してください。例:filesystem
  • 監視するスクリプトが、ローカル サーバーにあるか、リモート サーバーにあるかを選びます。リモート サーバーのスクリプトを選ぶ場合、スクリプトをリモート サーバーに入れておいてください。
  • ローカル サーバーでもリモート サーバーでも、監視するスクリプト ファイルの絶対パス (/home/test-solaris/filesystem.sh) と、スクリプト実行元ディレクトリの絶対パス(/home/test-solaris/)を指定します。
  • 出力設定で、出力ファイル名を絶対パスで指定してください(/home/test-solaris/output.txt)。こちらのファイルに、スクリプトからダンプ出力を行います。
  • 非数値型属性数値型属性の名前を入力してください。

数値型属性のテキスト エリアで、次の項目を入力します。

SystemTemperature
TimeSinceLastReboot
IOReads

文字列型属性のテキスト エリアでは、こちらの項目を入力ください。

TopPaginApp

  • 出力ファイルで使う区切り記号を入力してください。デフォルトでは「=」となっています。区切り記号を指定しない場合は、空白を区切りと見なします。
  • スクリプトに引き渡す引数があれば、追加で指定してください。例:ホスト名 80 http
  • ポーリング間隔をセットします。デフォルトでは、5分です。
  • タイムアウト値を指定します(秒)。スクリプト実行の最長時間を指し、これを超えるとタイムアウトします。
  • Linuxの場合、スクリプト実行モードを指定してください。デフォルトでは、「sh」となっています。
  • スクリプトがリモート サーバーにある場合は、ホスト名をリストから選択してください。
  • リモート サーバーが初めてのホストであれば、新規ホストを選び、サーバーのホスト名/IPアドレスを入力します(test-solaris)。監視モードは、TelnetSSHです。(Telnet)
  • サーバーのユーザー名(test)とパスワード(test)を入力してください。
  • ポート番号を入力してください。デフォルトではTelnetは23、SSHは22です。
  • コマンド プロンプトの最後の文字を指定します。デフォルトでは$となっており、>、#なども指定できます。
  • 値をすべて指定したら、監視の追加を選択します。

成功メッセージが表示されたら、監視詳細 > スクリプト監視 > スクリプト作成と移動すれば、詳細を確認できます。

メモ:Applications Managerは、ANSIかUTF-8でエンコーディングします。ファイル出力にも同じエンコードを指定してください。

テーブル型の例

テスト用Solarisマシンの/home/test-solaris/にある<prustat.sh>スクリプトを監視するシナリオを考えてみます。スクリプトからは同じディレクトリにあるoutput.txtファイルにダンプ出力を行います。output.txtのフォーマットは、次のとおりです。

<--table prustat starts-->
PID CPU Mem Disk Net COMM
7176 0.88 0.70 0.00 0.00 dtrace
7141 0.00 0.43 0.00 0.00 sshd
7144 0.11 0.24 0.00 0.00 sshd
3 0.34 0.00 0.00 0.00 fsflush
7153 0.03 0.19 0.00 0.00 bash
99 0.00 0.22 0.00 0.00 nscd
7146 0.00 0.19 0.00 0.00 bash
52 0.00 0.17 0.00 0.00 vxconfigd
7175 0.07 0.09 0.00 0.00 sh
98 0.00 0.16 0.00 0.00 kcfd
<--table prustat ends-->

メモ:テーブル ヘッダー「<--table prustat starts-->」は必須項目で、このフォーマットどおり指定してください。「prustat」は下記の説明通り、テーブル名に置き換わります。

スクリプト監視のセットアップ

  • スカラーの場合と同じように、ポイント6まで操作します。
  • 「出力ファイル中の表」をチェックしてください。
  • テーブルに名前を着けます(prustat)。この名前が出力ファイルのテーブル ヘッダーに記載されます(<--table prustat starts-->)。
  • 数値型属性のエリアに、スクリプトに出力するカラム名を指定してください。数値型のCPU、Mem、Disk、Netを入力します。
  • 文字列型属性に、スクリプトに出力するカラム名を指定してください。非数値型のPID、COMMを入力します。
  • 一意のカラムに、行データを特定できるカラム名を入力します。一意のカラムは、1つ設定しても、複数設定しても問題ありません。 PID、COMMなどが利用できます。
  • カラムの区切り記号を指定します。デフォルトではスペースを使います。
  • スクリプトから複数テーブルを出力する場合は、追加を選んで値を設定してください。
  • 値をすべて入力したら、監視の追加を選択してください。

SNMP OIDをスクリプトで監視する

下記の手順でスクリプト監視を作成してください。

  • /opt/ManageEngine/AppManager_Home/ディレクトリにスクリプト ファイルを作成します。
  • ファイルを編集し次の内容を記載してください。
    snmpwalk -v 1 -c public app-w2k1 CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.1| awk '{ y = $1; x = $4 ; gsub(/[a-zA-Z()]/, "", x)} {print y " = " x}'>> output.txt
    snmpwalk -v 1 -c public app-w2k1 CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.2 | awk '{ y = $1; x = $4 ; gsub(/[a-zA-Z()]/, "", x)} {print y " = " x}' >> output.txt
  • Applications Managerで「新規監視」をクリックし、スクリプト監視を選択します。つづいて、次のパラメーターを用いて新規監視を作成します。
    監視するスクリプト:</opt/ManageEngine/AppManager_Home/script.sh>
    スクリプト実行元ディレクトリ:</opt/ManageEngine/AppManager_Home/>
    出力設定 > 出力ファイル:</opt/ManageEngine/AppManager_Home/output.txt>
    数値型属性:<CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.1>
    <CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.2>
  • その他の属性にはデフォルトのパラメーターを利用してください。

REST APIでホスト名を取得するには

このAPIでは、所定のスクリプト監視のホスト名を取得できます。

リクエスト サンプル

http://[Host]:[Port]/AppManager/json/GetRemoteHost?apikey=[API_KEY]&resourceid=[RESOURCE_ID]

リクエスト パラメーター

このAPIリクエストにかかわるパラメーターは、次の通りです。

フィールド 説明
apikey 「管理」タブのAPIキーの作成で生成したキーを指定します。
resourceid ポーリングする監視のリソースIDです。

http://app-windows:9090/AppManager/json/GetRemoteHost?apikey=095cb3835ff015b01a3b3a6c4ab2c38a&resourceid=10000293

出力サンプル

{"response":{"result":[{"hostname":"app-w7-64-8"}],"uri":"/AppManager/json/GetRemoteHost"},"response-code":"4000"}

カスタム監視タイプ

Applications Managerはカスタム監視タイプをサポートしており、お客さま自作スクリプトに関連付けて、アプリケーションを監視できます。デフォルトで用意してあるものとは別に、独自の監視タイプを利用可能です。詳細は、カスタム監視の解説ページを参照ください。