System Reliability Manager に含まれるスクリプトリポジトリモジュールおよびスクリプト起動用ウィンドウモジュールでは、リモートデバイス上で任意の管理タスクを行うスクリプトを実行できます。リモートデバイス上でスクリプトを実行することで、中央の管理ステーションに対する処理負荷を軽減できます。さらに、ポーリングをローカルにしておくためのメカニズムも提供します。
この章の内容は次のとおりです。
スクリプトリポジトリモジュールでは、スクリプト起動用ウィンドウモジュールによって実行されるエージェントマシン上で利用可能なスクリプトを見ることができます。また、スクリプトリポジトリモジュールは、スクリプト起動用ウィンドウモジュールがサポートする言語もリストします。
(Solaris 10 のみ) 動的トレース (DTrace) では、ユーザープログラムおよびオペレーティングシステムの動作を観察することができます。また、システムの動作を調べたり、その仕組みを理解したり、複数のソフトウェア層にまたがるパフォーマンスの問題や異常な動作の原因を突き止めたりできます。Solaris 10 には、システムのデバッグに役立てることができるプログラムを作成するための D プログラミング言語が用意されています。
DTrace の詳細は、『Solaris 動的トレースガイド』を参照してください。
Solaris 10 の場合、スクリプトリポジトリモジュールには、よく使われる DScript が含まれています。これらのスクリプトは、スクリプト起動用ウィンドウモジュールから実行できます。
サポートされる言語をリストする言語テーブル。現行では、Java、シェルスクリプト、DScript (Solaris 10 のみ) があります。
エージェント上で利用可能なスクリプトを表示できるスクリプトテーブル。
スクリプトリポジトリモジュールには、次のセキュリティー機能が実装されています。
root ユーザーのみが次のディレクトリにスクリプトを置けます。
/var/opt/SUNWsymon/SysMgmtPack/script-launcher/scripts
各スクリプトで、そのスクリプトの実行を許可するユーザーとグループを指定します。これらのユーザーとグループは、スクリプト設定ファイル内のユーザーおよびグループのエントリとして指定します。さらに、これらのフィールドは、スクリプトテーブルにより任意のコンソールから変更が可能です。これらのフィールドを変更できるのは、esadm ユーザーだけです。
スクリプトテーブルの「スクリプトユーザー」フィールドに root を登録することはできません。
モジュールをロードします。
モジュールのロードとアンロードの詳細は、『Sun Management Center 3.6 ユーザーガイド』を参照してください。スクリプトリポジトリモジュールは、階層ウィンドウの「ローカルアプリケーション」から利用可能です。
モジュールブラウザウィンドウで、「ローカルアプリケーション」をダブルクリックします。
カテゴリが展開されます。
「ローカルアプリケーション」で、「スクリプトリポジトリ」をダブルクリックします。
カテゴリが展開されます。
スクリプト情報フォルダをダブルクリックして、言語テーブルと スクリプトテーブルを表示します。
スクリプト情報グループの最初の表は、言語テーブルです。この表には、エージェントでサポートされるすべてのスクリプト言語がリストされます。各表エントリには、次の属性があります。
言語名 (例: Java)
言語ソース (例: /usr/java)
この表ではコマンドは利用できません。新しい言語を指定したり、言語を削除したりすることはできません。エントリの数は固定であり、実装するモジュールとサポートされる言語によって定義されます。
「言語ソース」は、セルに新しい情報を入力することにより変更できます。
System Reliability Manager は、指定した場所で言語を見つけることができない場合に情報 (INFO) アラームを生成します。
スクリプトテーブルには、エージェント上でスクリプト起動用ウィンドウが認識するすべてのスクリプトがリストされます。
(Solaris 10 のみ) スクリプトテーブルには、定義済みの DScript がいくつか追加されています。
表内の各エントリには、次に示す属性があります。
表 5–1 スクリプトテーブルの値
ブラウザを使用して変更できるフィールドは、「管理状態」、「ユーザー」、および「グループ」です。「管理状態」は、スクリプトの希望する状態を入力する領域です。たとえば、「管理状態」は有効または無効にできます。ここで指定した状態は、希望する状態であり、モジュールが、すべての基準が満たされ準備ができたと判断したあとは、「操作状態」のみが実際の状態を表します。
スクリプトがサポートされない言語の場合は、情報 (INFO) アラームが発行されます。
スクリプトがアクセス不可能な場合は、情報 (INFO) アラームが発行されます。
ScriptInfo.dat は、実行可能なスクリプトに関する情報を含んでいます。ScriptInfo.dat ファイルに新しいスクリプトを追加することで、モジュールはそのスクリプトを認識できるようになります。ユーザーが所有するすべてのスクリプトが、このファイルに登録されている必要があります。
ScriptInfo.dat には、シェルスクリプト、Java、および DScript (Solaris 10 のみ) で作成されたスクリプトに関する情報が含まれます。
新しいスクリプトを作成します。
ScriptInfo.dat ファイルの形式は、設定ファイルの標準の形式に従います。
slice:attribute=value
新しいスクリプトを ScriptInfo.dat ファイルにコピーします。
ScriptInfo.dat ファイルは、ユーザー名で識別されるディレクトリに置きます。次の例を参照してください。
/var/opt/SUNWsymon/SysMgmtPack/script-launcher/scripts/username/ScriptInfo.dat
スクリプトに関する情報がすでにこのファイルに含まれている場合は、現行の情報の下にスクリプトを追加します。
次の例は、2 つのスクリプトからなる ScriptInfo.dat ファイルの例です。
Script1:Owner = Scott Script1:Name = MyHello Script1:Desc = Says Hello Script1:Language = Java Script1:Source = Hello.class Script1:AdminStat = 1 Script1:OperStat = 1 Script1:Users = Noble Script1:Group = Staff Script2:Owner = Denise Script2:Name = MyFile Script2:Desc = Says Hello Script2:Language = Java Script2:Source = Hello.class Script2:AdminStat = 1 Script2:OperStat = 1 Script2:Users = Noble Script2:Group = Staff
スクリプト起動用ウィンドウモジュールにより、管理機能をエージェントに委託できます。管理機能は、管理スクリプト言語で書かれた管理スクリプトです。スクリプト起動用ウィンドウモジュールは、マルチインスタンスモジュールです。スクリプト起動用ウィンドウモジュールのすべてのインスタンスが、言語およびスクリプト情報について、同じスクリプトリポジトリモジュールにアクセスします。
(Solaris 10 のみ) スクリプト起動用ウィンドウモジュールから DScript を実行できます。
DScript には、連続的に監視するものがあり、そうしたスクリプトの出力は膨大になります。CPU の速度が低下し、Java コンソールがハングアップする可能性があるため、そうしたスクリプトの使用は避けることを推奨します。
次のコードを抜粋して使用すると、任意の DScript に接続して、特定の時間、実行の流れを制御することができます。
tick-1sec
/i++ >= 10/
{
exit(0);
}
上記の例では、DScript が 10 秒間のみ実行され、10 秒後に出力を見ることができます。
スクリプト起動用ウィンドウモジュールには 2 つのテーブルがあります。
起動テーブル – 実行可能なスクリプトとそのパラメータを示します。
結果テーブル – 選択したスクリプトの実行結果を表示できます。
スクリプト起動用ウィンドウモジュールでは、次のようにスクリプトを操作できます。
スクリプトリポジトリモジュールのスクリプトに対して、読み取り、書き込み、および実行が許可されるユーザーを制御します。
管理スクリプトの引数を指定します。
管理スクリプトを開始および終了します。
管理スクリプトの実行を監視し制御します。
管理スクリプトの実行により生成された結果を表示します。
スクリプトの読み取り、書き込み、実行が許可されるユーザーを制御します。
スクリプト起動用ウィンドウモジュールには、次のセキュリティー機能が実装されています。
root は、起動テーブルの LaunchOwner フィールドの一部に登録できません。マシンの root ユーザーがスーパーユーザーとしてスクリプトを実行できるようにするには、マシン上に新しいユーザーを作成してください。そのユーザー名を使用してスクリプトを実行します。
launchOwner は、サーバー上の新しい esscrusers グループの一部でなければなりません。esscrusers だけが起動テーブルで行の作成および変更を行うことができます。
起動所有者 (launchOwner) は、エージェントマシン上の有効なユーザーでなければなりません。ユーザーは、エージェント上の NIS などのサービスによって追加されたローカルユーザーでなければなりません。スクリプトは、起動所有者のアクセス権で実行されます。
スクリプト起動用ウィンドウモジュールを使用するには、スクリプトリポジトリモジュールをロードしておく必要があります。
モジュールをロードします。
詳細は、『Sun Management Center 3.6 ユーザーガイド』を参照してください。スクリプトリポジトリモジュールは、モジュールブラウザウィンドウの「ローカルアプリケーション」から利用可能です。
モジュールブラウザウィンドウで、「ローカルアプリケーション」をダブルクリックします。
「スクリプト起動用ウィンドウ」をダブルクリックします。
起動テーブルと結果テーブルが表示されます。
起動テーブルは、すべてのスクリプトの実行を制御します。この表には、実行可能なスクリプトとそのパラメータの記述が示されています。
起動テーブルのエントリは、スクリプトに引数を付加します。エントリはさらに所有者 (スクリプトを実行するアクセス権に関連付けられた) を定義します。
スクリプトのいくつかのインスタンスは、このテーブル内の単一エントリによって作成されます。このテーブル内のいくつかのエントリは、スクリプトテーブル内の同一スクリプトを指すことがあります。異なる引数と異なるアクセス権で、いくつかの同一スクリプトを実行することができます。スクリプトは、起動所有者のアクセス権でのみ実行できます。
表 5–2 起動テーブルの属性
「スクリプト起動用ウィンドウモジュールにアクセスする」の説明に従って、起動テーブルにアクセスします。
起動テーブルの見出しで、マウスボタン 3 を押します。
ポップアップメニューが表示されます。
「新規行」を選択し、必須パラメータをすべて指定します。
「スクリプト所有者」および「スクリプト名」の値は、この起動ボタンから開始されたスクリプトを指します。
「スクリプト起動用ウィンドウモジュールにアクセスする」の説明に従って、起動テーブルにアクセスします。
起動対象のスクリプト名を表示している行上でマウスボタン 3 を押します。
「スクリプトを起動」を選択します。
スクリプトが起動されます。
「スクリプト起動用ウィンドウモジュールにアクセスする」の説明に従って、起動テーブルにアクセスします。
停止するスクリプトを表示している行上でマウスボタン 3 を押します。
ポップアップメニューが表示されます。
「スクリプトを中止」を選択します。
スクリプトが実行を停止します。
結果テーブルには、現在実行中または最近終了したすべてのスクリプトがリストされます。このテーブルには、次の情報が含まれています。
スクリプトの実行が開始された時刻と終了した時刻
スクリプトの実行が終了した理由
スクリプトの実行結果
スクリプトを実行できる残り時間
結果テーブルの各行に、スクリプトの実行中に渡された引数、スクリプトによって生成された結果、およびスクリプトの終了コードが含まれています。また、結果テーブルは、現在の実行情況、開始と終了のタイムスタンプに関する情報を提供します。
表 5–3 結果テーブルの属性
「スクリプトリポジトリモジュールにアクセスする」の説明に従って、結果テーブルにアクセスします。
結果テーブルで、実行中のスクリプトエントリ上でマウスボタン 3 を押します。
ポップアップメニューが表示されます。
「結果ログを表示」を選択して、選択した実行中のスクリプトに対応する結果ログファイルを表示します。
検索表示ウィンドウが表示されて、結果ログが表示されます。
コマンド行からログファイルにアクセスすることもできます。ログファイルは、/var/opt/SUNWsymon/SysMgmtPack/script-launcher/scripts/ UserName/logs ディレクトリに保存されます。ログファイル名には、実行中のインスタンス名が含まれるため、ユーザーが同じスクリプトを何度か実行した場合に、現行のログファイルがどれか識別できます。
「スクリプトリポジトリモジュールにアクセスする」の説明に従って、結果テーブルにアクセスします。
結果テーブルの行上でマウスボタン 3 を押します。
ポップアップメニューが表示されます。
「行の削除」を選択します。
ダイアログボックスが表示され、削除操作の確認または取り消しを行います。
「はい」をクリックして削除します。
行が削除されると、結果テーブルが自動的に更新されます。