4.5.9. コマンドによる監視項目について¶
4.5.9.1. はじめに¶
千手システムのモニタリングサブシステムでは、デフォルトで提供されている監視項目に加えて、ユーザーが作成したコマンドを利用した監視を行うことができます。このコマンドを状況収集コマンドと呼びます。
本章では、モニタリングサブシステムで利用できる状況収集コマンドについて説明します。
モニタリングの詳細は モニタリングの概要 、 モニタリングの使い方 を参照して下さい。作成した状況収集コマンドを監視項目として追加する手順は 監視項目の登録 、 監視項目カテゴリ を参照して下さい。
4.5.9.2. 状況収集コマンドの処理の流れ¶
千手システムは状況収集コマンドを検査間隔毎に実行し、標準出力により監視情報を取得します。このときの処理の流れを下記の図に示します。
千手システムは監視タスクに登録された情報に従い、検査間隔毎に状況収集コマンドの実行を行います。
状況収集コマンドは起動されると、監視情報を収集します。
状況収集コマンドは標準出力に結果を出力し、終了値0で終了します。
千手システムは状況収集コマンドの出力を取得し、監視タスクに登録された情報に従い状態の判定を行います。
注釈
上記処理の流れから、状況収集コマンドは検査間隔内で終了する必要があります。
状況収集コマンドは、監視タスクを実行したノード上で実行されます。運用管理サーバー上や監視対象のノード上では実行されません。
4.5.9.3. 状況収集コマンドの出力¶
千手システムは状況収集コマンドの標準出力から監視情報を収集します。監視情報の出力形式を下記の表に示します。
[ノード名]:コマンド名:監視対象名
<\t>プロパティ名△=△値
*<\t>プロパティ名△=△値
[<\t>ERR_MES△==△エラーメッセージ]
[<\t>ERR_CODE△==△エラーコード]
[<\t>WARN_MES△==△ワーニングメッセージ]
[<\t>WARN_CODE△==△ワーニングコード]
:
「△」:半角スペース文字 「<\t>」:タブ文字
項目 |
省略 |
内容 |
---|---|---|
ノード名 |
可 |
監視タスクを登録する際に設定する監視対象ノードのノードID。 |
コマンド名 |
不可 |
状況収集コマンド名。 |
監視対象名 |
不可 |
監視対象名 |
プロパティ名 |
不可 |
監視対象から取得した値の名前。 |
値 |
可 |
監視対象から取得した値。
値として扱える型は文字列、整数、小数、指数になります。それぞれの型で使用できる文字は以下の様になります。 文字列:改行コード以外の文字
整数:\-?[1-9][0-9]* (例) 12345/-4321
小数:\-?[0-9]+\.[0-9]* (例) 12345.678/-0.12345
指数:\-?[0-9]+\.[0-9]*e(\+|-)?[0-9]+ (例) -1.3e+34/0.1e-12
注釈 整数/小数/指数においてカンマを使用することはできません。 |
*(アスタリスク) |
可 |
ノードモニタに表示するプロパティを表すマーク。 |
ERR_MES |
可 |
エラーメッセージを示すプロパティ名。 |
エラーメッセージ |
可 |
状況収集コマンドで発生したエラー内容 |
ERR_CODE |
可 |
エラーコードを示すプロパティ名。 |
エラーコード |
可 |
状況収集コマンドで発生したエラー番号 |
WARN_MES |
可 |
ワーニングメッセージを示すプロパティ名。 |
ワーニングメッセージ |
可 |
状況収集コマンドで発生したワーニング内容 |
ERR_CODE |
可 |
ワーニングコードを示すプロパティ名。 |
ワーニングコード |
可 |
状況収集コマンドで発生したワーニング番号 |
状況収集コマンドで出力する調査内容は、計算式にあてはめる単位でプロパティに分ける必要があります。
状況収集コマンドの出力に計算式に必要なプロパティが出力されていない場合、千手システムでは異常と判断します。
計算式で使用していないプロパティが出力されていても無視されます。
監視対象が複数存在する際、プロパティ名に「*」(アスタリスク)を記述することで、それぞれをノードモニタに表示することができます。
状況収集コマンドが異常を起こしたときにその内容を ERR_CODE、ERR_MES として出力することにより、障害メッセージに内容を付加することができます。ただし、 ERR_CODE、ERR_MES を出力するためには状況収集コマンドの終了値が0である必要があります。
状況収集コマンドが警告を起こしたときにその内容を WARN_MES、WARN_CODE として出力することにより、障害メッセージに内容を付加することができます。ただし、 WARN_MES、WARN_CODE を出力するためには、状況収集コマンドの終了値が0、さらに、監視タスクで異常を判断する必要があります。
注釈
エラーメッセージ( ERR_MES )エラーコード( ERR_CODE )と、ワーニングメッセージ( WARN_MES )ワーニングコード( WARN_CODE )の同時使用はできません。
例)複数稼働するプロセスsjcmdのCPU使用率を収集する状況収集コマンドの場合、キーをProcessIDにすることによりそれぞれをノードモニタに表示します。
nodeA:userscmd:sjcmd
ProcName = sjcmd
* ProcessID = 101
UsedCpu = 5
nodeA:userscmd:sjcmd
ProcName = sjcmd
* ProcessID = 104
UsedCpu = 0
nodeA:userscmd:sjcmd
ProcName = sjcmd
* ProcessID = 105
UsedCpu = 1
注釈
同じ名前の監視対象が複数存在して区別できない場合、値を正常にモニタに表示できません。キーとなるプロパティも含めて監視対象名は必ず一意になるように出力して下さい。
監視情報の出力結果は4000バイト以内となるようにして下さい。
状況収集コマンドの標準出力を作成するために、状況収集出力結果作成コマンドのsjANM_monitorCmdを利用することができます。
sjANM_monitorCmdを状況収集コマンドのソースコードの中に実装し、状況収集コマンドが情報を取得した後に、値をsjANM_monitorCmdの引数に指定して、自動的に上記の形式通りに標準出力を出力します。sjANM_monitorCmdの使用方法については、 デベロッパーズガイド「千手コマンドの一覧」 の sjANM_monitorCmd-状況収集出力結果作成コマンド- を参照して下さい。
4.5.9.4. 状況収集コマンドの正常・異常¶
千手システムでは状況収集コマンドの正常終了、異常終了の判断方法としてプログラム終了時の終了値と標準出力の内容を利用しています。状況収集コマンドが終了値0で終了した場合はデータの解析を行いますが、終了値0以外で終了した場合はエラーメッセージの出力を行い、監視タスクは一時停止となります。
終了値 |
ERR_MES/ERR_CODE |
WARN_MES/WARN_CODE |
正常・異常判断 |
---|---|---|---|
0 |
なし |
なし |
監視タスク作成時に設定した判定条件で正常、異常を判定します。 |
0 |
あり |
なし |
異常。 |
0 |
なし |
あり |
監視タスク作成時に設定した判定条件で正常、異常を判定します。 |
0以外 |
なし・あり |
なし・あり |
異常。 |
状況収集コマンドが異常を起こしたときに、その内容をERR_CODE、ERR_MESとして出力することにより、障害メッセージに内容を付加することができます。ただし、ERR_CODE、ERR_MESを出力するためには状況収集コマンドの終了値が0である必要があります。
状況収集コマンドが警告を起こしたときにその内容を WARN_MES、WARN_CODE として出力することにより、障害メッセージに内容を付加することができます。ただし、 WARN_MES、WARN_CODE を出力するためには、状況収集コマンドの終了値が0、さらに、監視タスクで異常を判断する必要があります。
注釈
エラーメッセージ( ERR_MES )エラーコード( ERR_CODE )と、ワーニングメッセージ( WARN_MES )ワーニングコード( WARN_CODE )の同時使用はできません。
4.5.9.5. 状況収集コマンドのオプション¶
状況収集コマンドにはオプションを指定して実行することができます。このオプションは千手ブラウザで監視タスク登録時に決定されます。オプションの制限について示します。
オプション・パラメータはセットで最大10個付けられます。
パスワード属性を指定したパラメータはBase64でエンコードした形で状況収集コマンドに渡されます。そのため、状況収集コマンドを作成する際は、パスワード部分をBase64でデコードを行うように作成する必要があります。
4.5.9.6. 環境変数¶
千手システムでは状況収集コマンドを起動する際に、以下の環境変数を自動的にセットします。必要な場合は状況収集コマンドにて参照することができます。
環境変数名 |
設定される値 |
---|---|
SjISM_TaskID |
監視タスクID |
SjISM_TaskName |
監視タスク名 |
SjISM_CheckINT |
検査間隔 |
4.5.9.7. 状況収集コマンドの作成と監視項目登録例¶
状況収集コマンドを作成し監視項目として登録する例を説明します。
4.5.9.7.1. 状況収集コマンド作成¶
以下の様なコマンド「UserCmd」を作成します。
コマンド名
UserCmd -hホスト名 [-nユーザー名] [-pパスワード]
オプション
-h
接続先のホスト名を指定
-n
ホストへ接続する際に使用するユーザー名を指定。省略可能とします。
-p
ホストへ接続する際に使用するパスワードを指定。省略可能とします。
参考
パスワードパラメータの注意点については 状況収集コマンドのオプション を参照して下さい。
結果出力
指定ホストへ接続し、取得した情報をもとに以下のように標準出力させます。
コマンドは終了値0で終了させます。
(正常時)
[ホスト名]:UserCmd:監視対象名
<\t>Value1△=△128
(異常時)[エラーメッセージ]
[ホスト名]:UserCmd:監視対象名
<\t>Value1△=△null
<\t>ERR_MES△==△"エラーが発生しました。"
<\t>ERR_CODE△==△999
「△」:半角スペース文字 「<\t>」:タブ文字
ERR_MES、ERR_CODEはエラー時に出力
(異常時)[ワーニングメッセージ]
[ホスト名]:UserCmd:監視対象名
<\t>Value1△=△null
<\t>WARN_MES△==△"確認してください。"
<\t>WARN_CODE△==△555
「△」:半角スペース文字 「<\t>」:タブ文字
WARN_MES、WARN_CODEは警告時に出力
4.5.9.7.1.1. sjANM_monitorCmdを利用した結果出力¶
状況収集コマンドから状況収集出力結果作成コマンド(sjANM_monitorCmd)を呼び出すことにより、標準出力の成型を独自に作り込むことなく簡単に監視のための出力を行えるようになります。
下記に状況収集コマンドで取得した値を使用して必要な値を出力する例を示します。なお、状況収集コマンド自体は終了値0で終了させて下さい。
状況収集コマンドの例(シェルスクリプトの場合)
#!/bin/sh
ret='UserCmd ${nodeid}'
if [ ${ret} -eq 0 ]; then
sjANM_monitorCmd -h${nodeid} -cUserCmd -dMonitorTarget -pValue1 -v${val}
else
if [ ${ret} -gt 900 ]; then
sjANM_monitorCmd -h${nodeid} -cUserCmd -dMonitorTarget -e"エラーが発生しました。" -f${ret}
else
sjANM_monitorCmd -h${nodeid} -cUserCmd -dMonitorTarget -w"確認してください。" -x${ret}
fi
fi
exit 0
実行例(正常時)
% sjANM_monitorCmd -hNodeA -cUserCmd -dMonitorTarget -pValue1 -v128
NodeA: UserCmd: MonitorTarget
Value1 = 128
実行例(異常時)[エラーメッセージ]
% sjANM_monitorCmd -hNodeA -cUserCmd -dMonitorTarget -e"エラーが発生しました。" -f999
NodeA: UserCmd:MonitorTarget
ERR_MES == "エラーが発生しました。"
ERR_CODE == 999
実行例(異常時)[ワーニングメッセージ]
% sjANM_monitorCmd -hNodeA -cUserCmd -dMonitorTarget -w"確認してください。" -x555
NodeA: UserCmd:MonitorTarget
WARN_MES == "確認してください。"
WARN_CODE == 555
sjANM_monitorCmdの詳しい使用方法については、 デベロッパーズガイド「千手コマンドの一覧」 の 「sjANM_monitorCmd-状況収集出力結果作成コマンド-」 を参照して下さい。
4.5.9.7.1.2. sjANM_execTaskを利用したリモート監視¶
カスタム監視項目では監視対象が千手センサーである場合でもプローブノードとなる千手エージェントで状況収集コマンドが実行されます。
千手センサーに配置した状況収集コマンドを実行して監視を行う場合には、センサーカスタム監視コマンド(sjANM_execTask)を使用してリモート実行することで監視を行うことが可能となります。
この場合、監視項目のプロパティ([情報取得設定(コマンド)]タブ)で以下のように指定して下さい。
コマンド名にsjANM_execTaskを指定します。
計算式、計算結果の型、単位、計算結果の比較方法、判定条件、計算式の変数の値は千手センサーに配置した状況収集コマンドに基づいた値を設定して下さい。
パラメータへは以下の通り設定して下さい。
パラメータ名 |
オプション |
省略 |
パスワード表示 |
デフォルト値 |
---|---|---|---|---|
$SJ_TARGETNODEID |
-n |
可 |
OFF |
(※) |
SSH認証方式 |
-u |
不可 |
OFF |
|
アカウント名 |
-a |
可 |
OFF |
|
パスワード |
-p |
可 |
ON |
|
パスフレーズ |
-h |
可 |
ON |
|
秘密鍵ファイル |
-k |
可 |
OFF |
|
プロトコルバージョン |
-v |
可 |
OFF |
|
ポート番号 |
-r |
可 |
OFF |
|
実行コマンドライン |
-c |
不可 |
OFF |
千手センサーに配置した状況収集コマンドをフルパスで指定 |
※パラメータ名に$SJ_TARGETNODEIDを指定すると、監視タスクで値を省略した際に自動的に監視タスクを設定したノードIDがパラメータ値に設定されます。
sjANM_execTaskの詳しい使用方法については、 デベロッパーズガイド「千手コマンドの一覧」 の sjANM_execTask-センサーカスタム監視コマンドの実行- を参照して下さい。
4.5.9.7.2. 監視項目(コマンドによる監視項目)への登録¶
作成した状況監視コマンドを監視項目へ登録します。基本的な監視項目登録方法は 監視項目の登録 及び 監視項目カテゴリ を参照して下さい。
ここでは主な画面への入力例を紹介します。
まずは、監視項目のカテゴリを登録します。監視項目のカテゴリとは、監視項目をグルーピングするもので、ユーザーが任意にカテゴリを作成し、監視項目を所属させることができます。既に監視項目のカテゴリが存在する場合は作成する必要はありません。
カテゴリの登録は、カテゴリのプロパティで行います。千手ブラウザのツリービューで、<ドメイン>→"モニタリング"→"カスタムカテゴリ"→"監視項目"を選択します。リストビューの何も表示されていない部分でマウスの右ボタンを押してコンテキストメニューを表示し、[新規作成]メニューを選択するとカテゴリのプロパティが表示されます。
カテゴリ、説明に上記のように入力し[OK]ボタン押下により、カテゴリが登録されます。
監視項目の登録は、監視項目のプロパティで行います。千手ブラウザのツリービューで、<ドメイン>→"モニタリング"→"カスタムカテゴリ"→"監視項目"→<カテゴリ>を選択します。リストビューの何も表示されていない部分でマウスの右ボタンを押してコンテキストメニューを表示し、[新規作成]→[コマンドによる監視項目]メニューを選択すると監視項目のプロパティが表示されます。
監視項目名、説明に上記のように入力し[情報取得設定(コマンド)]タブを選択します。以下の画面が表示されます。
上記画面で以下の項目を入力します。
コマンド名に、作成した状況収集コマンド(UserCmd)をフルパスで指定します。 (UNIX/Linuxの例 : /home/user/bin/UserCmd)
計算式に、「A1 - A0」を選択します。
戻り値の型に、「整数」を選択します。
計算式の変数の値「Aの値」に、状況収集コマンド(UserCmd)で出力されるプロパティ名「Value1」を指定します。
ここで指定したValue1の値を「計算式」の指定に従い「A0(前回取得したValue1の値)」 - 「A1(今回取得したValue1の値)」として前回値と今回値の差分を計算します。パラメータに、状況収集コマンド(UserCmd)に設定可能なパラメータを設定します。
各項目を入力し[OK]ボタン押下により、監視項目が登録されます。
4.5.9.7.3. 監視タスクへの登録例¶
監視項目(コマンドによる監視項目)への登録 で登録した監視項目を使用し監視タスクへ登録します。基本的な監視タスク登録方法は 監視項目(コマンドによる監視項目)への登録 及び 監視タスクの登録 を参照して下さい。
状況収集コマンドを用いた監視タスクの登録を行うには、千手ブラウザのツリービューで、<ドメイン>→"ノードグループ"→"全体"を選択します。そして、リストビューから監視対象のノードを選択し、マウスの右ボタンをクリックしてコンテキストメニューを表示し、[プロパティ]メニューを選択します。ノードのプロパティウィンドウが表示されますので、[カスタム]タブを選択します。
監視項目の一覧リストにカスタムで作成した監視項目が一覧表示されます。先ほど 監視項目(コマンドによる監視項目)への登録 で作成した監視項目の行を選択して、[↓追加]ボタンを押下します。定義を作成するプロパティが開きます。
判定条件に「100より大きいときに異常」を設定します。これは、前回値と今回値の差が100以下の場合、この監視は正常になることを示しています。
パラメータには、監視項目のプロパティ([情報取得設定(コマンド)]タブ)で設定した各パラメータの値を設定することができます。
画面例の場合、実際にコマンドは以下の様に起動されます。
UserCmd -hNodeA -nUser1 -pXXXXX
上記のように各項目を入力し[OK]ボタンを押下します。その後、ノードのプロパティウィンドウにて[OK]ボタンを押下します。これにより、状況収集コマンドを用いた監視タスクが登録され、監視を開始します。