レベル: 中級 石川 克也, ビジネス開発担当ディレクター, プラットフォームコンピューティング株式会社 有馬 俊道 (ARIMA@jp.ibm.com), ソフトウェア開発研究所 オートノミック・コンピューティング テクノロジー・センター, IBM 兼安 祐介 (YUSKKNYS@jp.ibm.com), ソフトウェア開発研究所 オートノミック・コンピューティング・テクノロジー・センター, IBM
2006年 2月 17日 今回からいよいよグリッド・システムに対してオートノミック技術を具体的に適用していきます。オートノミック・コンピューティングの問題判別機能を適用する、というテーマで著者らが作成した3つの問題判別機能用コンポーネントについてご紹介します。これらのコンポーネントを利用することで、Platform LSFのログがオートノミック・コンピューティング・ツールキット R3 のログトレース・アナライザー上で効果的に解析できるようになります。なお、ここで使用するPlatform LSFはバージョン6.1が前提となります。
3. Platform LSF にオートノミック・コンピューティング問題判別機能を適用する
今回からいよいよグリッド・システムに対してオートノミック技術を具体的に適用していきます。オートノミック・コンピューティングの問題判別機能を適用する、というテーマで著者らが作成した3つの問題判別機能用コンポーネントについてご紹介します。これらのコンポーネントを利用することで、Platform LSFのログがオートノミック・コンピューティング・ツールキット R3 のログ&トレース・アナライザー上で効果的に解析できるようになります。なお、ここで使用するPlatform LSFはバージョン6.1が前提となります。
Platform LSFから見たオートノミック・コンピューティングへの期待として、前回以下の3項目を挙げました。
- ログ解析を容易にしたい
- ログ解析の結果,原因がわかれば,可能な限り自動的に修正したい
- ログを継続的に解析することで,より良いパラメーターに自動構成したい
今回の問題判別機能の適用は1番目の「ログ解析を容易にしたい(しかも、複数のログを効率良く)」を解決するとともに、2番目、3番目の「自己修復」、「自己構成」の適用に向けた重要なステップとなります。
3.1 ログ&トレース・アナライザー
ログ&トレース・アナライザーはオートノミック・コンピューティング・ツールキット R3 に含まれているEclipseベースのログの統合解析ツールで、オートノミックの問題判別機能の中心的役割を担うものです。ログファイルを共通ログフォーマットであるCBE (Common Base Event)形式に変換して読み込み、複数ログの統合表示、フィルタリング、検索、相関分析、シンプトン(症状)表示などを行うことができます。なお、CBE形式への変換はログ変換アダプターというプラグイン・コンポーネントによって可能としていますが、DB2やWASなどIBMのミドルウェアを始め多くの既存製品のアダプターは既に利用可能となっています。
図1 ログ&トレース・アナライザー
3.2. LSF用問題判別コンポーネント作成の概要
LSFは多くの種類のログを書き出しますが、複雑な障害の発生時には、これら多くのログの中から短時間で問題箇所を特定する必要があります。また、時にはOSなどのログと一緒に解析する必要も出てきます。そこで今回、LSFの複数のログをログ&トレース・アナライザーで読み込めるようにし、他のログも含めた統合解析ができる環境作りを行います。そこでは、LSFログを表示することに加え、LSFの問題判別に有効となるようなレコード間の相関分析、ログ内のメッセージからLSFの症状の表示も可能とします。
これらを実現させるために、以下のコンポーネントを作成しました。
- LSF用ログ変換アダプター
- LSF用相関エンジン
- LSF用シンプトンDB
(各コンポーネントのダウンロードファイルを用意しましたのでぜひお試しください。この記事の最後にダウンロードページへのリンクがあります。)
図2 ログ&トレース・アナライザーと作成したコンポーネント
以下、各コンポーネントの説明を行っていきます。
3.3. LSF用ログ変換アダプター
LSFのログをCBE(Common Base Event)形式に変換するログ変換アダプターを作成しました。アダプターの実装形態としては、正規表現で定義するルールベース・パーサーとJavaコードでロジックを書くスタティック・パーサーの2通りがあり、今回対象としたログはどちらの方法でも作成可能な内容でしたが、後者の実装としました。スタティック・パーサーはJavaのコードを書いて作成するので正規表現で定義するのと比べて手間がかかりますが、サイズの大きいログファイルも高速で読み込み可能というメリットがあります。
LSFの多くのログの中から、今回は問題判別によく利用されるログとして以下に示したエラーログ(デーモンログ)用のアダプターを作成しました。
対象ログ: lim / mbatchd / mbschd / pim / res / sbatchd
なお、これらログのフォーマットは共通で以下のような形式です。
LSFのログレコード:
Sep 27 15:33:13 2005 27494 4 6.1 Lim shutting down: shutdown request received
フォーマットの説明:
Mon DD HH:mm:ss YYYY PID Level Ver Msg
Mon ; 月 ; Sep
DD ; 日 (1桁の日の場合空白が1つ前に追加される); 27
HH:mm:ss ; 時:分:秒 ; 15:33:13
YYYY ; 年 ; 2005
PID ; プロセスID ; 27494
Level ; ログレベル ; 4
Ver; LSFのバージョン; 6.1
Msg; メッセージ (通常 関数名: 実際のメッセージなる) ;Lim shutting down: shutdown request received
|
これをCBE(Common Base Event)形式へ変換する際のマッピングは以下のようにしました。
LSFログのフィールドからCBE(Common Base Event)形式へのマッピング:
時刻 → CreationTime
メッセージ → msg
製品バージョン→ 拡張要素productVersion
ログレベル → 拡張要素logLevel
プロセスID → 拡張要素processID
なお、CBEのSeverity要素については、msgの文字列から判断するようにしています。(各ログで別々のルール。)
|
図3は対象のログとAIXのSYSLOGを読み込んだ際のログ&トレース・アナライザーの画面です。
図3 LSFログを読み込んだログ&トレース・アナライザーの画面
(この記事の最後にダウンロードページへのリンクがあります。)
3.4 LSF用相関エンジン
ログ&トレース・アナライザーには、あらかじめ時間相関のための機能(相関エンジン)が組み込まれており、相関ビューで同じ時間のレコード同士を線でつないで示すといったことができます。これと同様に独自の相関エンジンを作成することで、フィールドの状況を見てレコード同士を線でつなぐことができます。
LSFのログにはプロセスIDと呼ばれるフィールドがあり、問題判別の際に同じプロセスIDのレコードを追っていく作業が必要となることがあります。ログ&トレース・アナライザー上で、同じプロセスIDのレコード同士に線が引けると、レコードを追っていく作業が楽に行えることから、独自の相関エンジンを作成しました。これによって、集中を要し労力のかかっていたログの解析が楽になり、問題の早期解決が図れます。
なお、同じプロセスIDのレコードが大量に存在すると、相関線の組み合わせが膨大となってしまうことがあるため、これを避けるための仕組みも実装しました。ログ間の発生時間の差の設定を閾値として相関線を引くかどうかを決められる様な仕組みとし、Eclipseの導入ディレクトリー(Javaの環境変数の user.dir のディレクトリー)にある threshold.propertiesファイルに定義します。
相関エンジン用の設定ファイルの定義:
・isThreshold:閾値設定を有効にするかどうか
・threshold:ログ同士の発生時間の差の閾値(単位はms)
・isNear:true のとき、閾値よりも近いログ同士は相関線を引かない。
falseのとき、閾値よりも離れたログ同士は相関線を引かない。
|
(この記事の最後にダウンロードページへのリンクがあります。)
図4 プロセスIDの相関関係
3.5. LSF用シンプトンDB
LSFログのメッセージの内容から、シンプトン(症状)を表示できるようにするため、LSF用シンプトンDBを作成しました。これをログ&トレース・アナライザー上で利用することにより、図5のような表示ができます。
ログの解析ではよほどの熟練者を除けば必ずといって良いほどメッセージ・リファレンスを参照することになります。シンプトンDBにより、複数のログに渡るメッセージ・リファレンスを参照する、といった手間が省けると考えると、この効果の大きさがご理解いただけると思います。なお、シンプトンDBのメリットについては、ユーザー知識の追加ができるなど、単なるメッセージ・リファレンスの自動表示だけではないことも念のため申し添えます。
(この記事の最後にダウンロードページへのリンクがあります。)
図5 シンプトンの表示
3.6 問題判別への効果
以上、ログ&トレース・アナライザー上でPlatform LSF6.1の問題判別を迅速かつ有効に行うための環境作りの紹介を行ってきました。著者らの作成した問題判別のためのコンポーネントによって、LSFの複数のログとその他の製品のログを統合表示することが可能となり、また問題判別に有効となるプロセスIDによるレコード間の相関分析も行えるようになりました。さらに、ログ内のメッセージからLSFの症状の表示を可能とするシンプトンDBを作成したことで、熟練者にたよらずに迅速なログ解析が可能となりました。
今回のまとめ
今回はグリッドとオートノミックの融合の試みとして、著者らが作成した問題判別に関わるコンポーネントの紹介を行いました。オートノミック・コンピューティングの問題判別機能は、それだけでも十分利用価値がありますが、これは同時に自律機能実装に向けたステップでもあります。
ということで、次回はオートノミック・コンピューティングの「自己修復」機能の実装がテーマです。それでは。
この記事でご紹介したコンポーネントが以下からダウンロード可能です。(なお、ソースコードは含まれていません。)
ダウンロードしたファイルの使い方
前提条件:Platform LSFはバージョン6.1が前提となります。
1. LSF用ログ変換アダプターの使い方(platformLSFParser_1.x.x.zip)
ログ変換アダプターをログ&トレース・アナライザーにプラグインして、LSFログを読み込めるようにします。
- ダウンロードしたファイルplatformLSFParser_1.x.x.zip (xは任意の英数字。以下同様) を解凍し、生成されたディレクトリplatformLSFParser_1.x.x 以下をEclipseの導入ディレクトリ下のpluginディレクトリにコピーします。
- Eclipseを起動します。(既に立ち上がっていた場合は再起動します。)
- 「プロファイルおよびロギング」パースペクティブを開きます。
- メニューから ファイル→インポート→ログ・ファイル を選択し、「次へ」を押します。
- 追加ボタンを押して、「ログ・ファイルの追加」のダイアログを出します。
- ログ・ファイルの種類で、希望するログファイルタイプを選択します。(例:limの場合は "LSF lim log"とします。なお、lim_sample.logが確認用としてダウンロード・ファイルに含まれていますが、これを読み込む場合は、"LSF lim log"を指定してください。)
- ダイアログ下部のパネルの詳細タブにおいて、Log File Pathで変換対象のログ・ファイルを指定します。
- 同じく詳細タブにおいて、Severity configuration file でログの重要度設定ファイル LSFsevlist.xml (plugin\ platformLSFParser_1.x.x ディレクトリの下にあります)を指定します。
- 全ログ・ファイルを追加後、確定してログのインポートを行います。
- インポートされたログ・ファイルを確認します
2. LSF用相関エンジンの使い方(platformCorrelation_1.x.x.zip)
ログ&トレース・アナライザーから相関エンジンを呼び出して、プロセスIDについてのログ相関分析が行えるようにします。
- ダウンロードしたファイルplatformCorrelation_1.x.x.zipを解凍し、生成されたディレクトリplatformCorrelation_1.x.x 以下をEclipseの導入ディレクトリ下のpluginディレクトリにコピーします。
- Eclipseの導入ディレクトリ下のplugin\ platformCorrelation_1.x.xディレクトリにある threshold.propertiesファイルをEclipseの導入ディレクトリ(導入時にEclipse起動バッチまたはスクリプトがある場所です)にコピーします。
- Eclipseを起動します。(既に立ち上がっていた場合は再起動します。)
- 対象のログを読み込みます。(「1. LSF用ログ変換アダプターの使い方」を参照。)
- ログ・ナビゲーター・ビューでインポートしたログを右クリックし、新規→ログ相関を選んで、相関名を指定します。
- 相関させるためのログを選択し(左側のペインから選んで右側のペインに移動させる)、「次へ」を押します。
- 相関メソッドとして Platform ProcessID Correlation を選択し、「終了」をクリックします。
- ログ・ナビゲーター・ビューで、今作成された相関を右クリックし、アプリケーションから開く→ログ対話 を選択します。(8) ログ対話ビューで相関関係が表示されます。
3. LSF用シンプトンDBの使い方(platform_symptomdb.xml)
ログ&トレース・アナライザー上で、LSF用シンプトンDBを利用したシンプトン(症状)の表示を行えるようにします。
- ダウンロードしたファイル platform_symptomdb.xml を適当なディレクトリに置きます。
- Eclipseを起動します。
- 対象のログを読み込みます。(「1. LSF用ログ変換アダプターの使い方」を参照。)
- ログ・ナビゲーター・ビューで症状データベースを右クリックし「インポート」を選択します。
- 選択画面で、症状データベース・ファイルを選択して「次へ」を押します。
- ローカル・ホストを選択してダウンロードしてきたシンプトンDBのxmlファイルを選択します。
- 「ログ」・ビューでログ・レコードを選択して右クリックします。
- 1つのログだけにシンプトン分析を適用するときは分析→デフォルト・ログ・アナライザーを選択します。ログファイル全体に適用するときはすべてを分析→デフォルト・ログ・アナライザーを選択します。
- 適用したログ・レコードを選択し、右下のペインに出力される分析結果タブを選択します。
- マッチしたシンプトンが存在すれば、該当メッセージが分析結果タブに表示されます。(lim_sample.log ファイルにはマッチするシンプトンは含まれていません。)
ダウンロード | 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|
| platformLSFParser_1_0_0.zip | platformLSFParser_1_0_0.zip | 224KB | HTTP |
|---|
| platformCorrelation_1_0_0.zip | platformCorrelation_1_0_0.zip | 504KB | HTTP |
|---|
| platform_symptomdb.zip(platform_symptomdb.xml) | platform_symptomdb.zip | 585KB | HTTP |
|---|
参考文献
著者について  | |  | 石川克也(いしかわ かつや)
プラットフォームコンピューティング株式会社,ビジネス開発担当ディレクター
日本アイ・ビー・エム株式会社,アクセンチュア株式会社等を経て,2004年プラットフォームコンピューティング株式会社にプロフェッショナルサービス担当として入社。2005年より現職。日本国内においてグリッドコンピューティングをビジネス領域に広めるべく,幅広く啓蒙活動等を行っている。 |
 | |  | 有馬俊道(ありま としみち)
日本アイ・ビー・エム株式会社、ソフトウェア開発研究所 オートノミック・コンピューティング テクノロジー・センター
オートノミック・コンピューティング・テクノロジー・センター(ACTC)でオートノミック・コンピューティングのコンポーネントの開発、技術の検証、標準化などに従事している。オートノミック・コンピューティング・テクノジーの自己修復、問題判別、シンプトンDBが専門領域。IBMでは、これ以外に画像処理、画像認識についての開発を経験してきた。 |
 | |  | 兼安祐介(かねやす ゆうすけ)
日本アイ・ビー・エム株式会社 ソフトウェア開発研究所 オートノミック・コンピューティング テクノロジー・センター
オートノミック・コンピューティング・テクノロジー・センター(ACTC)でオートノミック・コンピューティングのコンポーネントの開発、技術の検証、標準化などに従事している。オートノミック・コンピューティング・テクノジーの自己修復、問題判別、シンプトンDBが専門領域。
|
記事の評価
|