説明

運用管理システム及び方法、並びに、プログラム

【課題】過去に発生した障害に対処したときの操作履歴情報に基づいて、操作対処フローを作成すると共に、後に類似の障害が発生したときに、その操作対処フローを提供することによって、運用管理を支援することである。
【解決手段】監視対象サーバと、監視サーバとを具備する運用管理システムによって解決することができる。監視サーバは、監視対象サーバを監視すると共に、監視対象サーバで障害が発生したときに、障害対処フローを提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、運用管理システム及び方法、並びに、プログラムに関する。
【背景技術】
【0002】
情報通信サービスを提供する機器の運用管理を支援する運用管理システムが知られる。ある運用管理システムでは、障害対処として行った操作を操作履歴に残している。しかし、その履歴が障害と結び付いていないため、次に同じ障害が起こった場合に、過去の操作履歴が有用な情報であっても、運用管理者は即座に参照することができない。
【0003】
特開2000−172328号公報(特許文献1参照)には、監視制御システムにおける故障対応支援システムの発明が記載されている。この故障対応支援システムにおいては、監視制御システムが接続されるネットワーク上に、故障発生時の故障情報および故障対応時の操作履歴情報が記録されるデータベースを構築する。故障対応支援システムは、該データベースに対して記録、検索、表示およびデータ更新等を行う。
【0004】
この故障対応支援システムでは、故障対応操作履歴を取得して格納し、未来の障害でそれを参照するが、その履歴とは、「生の」操作記録そのものである。単なる操作履歴には、確認操作として、冗長なコマンドが含まれているので、広く運用管理者が利用するような用途には向かないと考えられる。
【0005】
【特許文献1】特開2000−172328号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明の課題は、過去に発生した障害に対処したときの操作履歴情報に基づいて、操作対処フローを作成すると共に、後に類似の障害が発生したときに、その操作対処フローを提供することによって、運用管理を支援することである。
【課題を解決するための手段】
【0007】
本発明の一つ目のアスペクトによる運用管理システムは、監視対象サーバと、監視サーバとを具備する。監視サーバは、監視対象サーバを監視すると共に、監視対象サーバで障害が発生したときに、障害対処フローを提供する。
【0008】
本発明の二つ目のアスペクトによる運用管理方法は、手動障害対処履歴を蓄積することと、フロー化することと、障害対処フローを蓄積することと、障害対処フローを提供することとを具備する。手動障害対処履歴を蓄積することにおいては、障害発生の監視対象サーバに対して、運用管理者が手動で操作したコマンド列を含む手動障害対処履歴を蓄積する。フロー化することにおいては、監視対象サーバを監視する監視サーバにより、手動障害履歴を、障害対処フローにフロー化する。障害対処フローを蓄積することにおいては、監視サーバにより、障害対処フローを蓄積する。障害対処フローを提供することにおいては、監視対象サーバで障害が発生したときに、障害対処フローを提供する。
【0009】
本発明の三つ目のアスペクトによるプログラムは、手動障害対処履歴を蓄積する手順と、フロー化する手順と、障害対処フローを蓄積する手順と、障害対処フローを提供する手順とをコンピュータに実行させる。手動障害対処履歴を蓄積する手順においては、障害発生の監視対象サーバに対して、運用管理者が手動で操作したコマンド列を含む手動障害対処履歴を蓄積する。フロー化する手順においては、監視対象サーバを監視する監視サーバにより、手動障害履歴を、障害対処フローにフロー化する。障害対処フローを蓄積する手順においては、監視サーバにより、障害対処フローを蓄積する。障害対処フローを提供する手順においては、監視対象サーバで障害が発生したときに、障害対処フローを提供する。
【発明の効果】
【0010】
本発明によれば、過去に発生した障害に対処したときの操作履歴情報に基づいて、操作対処フローを作成すると共に、後に類似の障害が発生したときに、その操作対処フローを提供することによって、運用管理を支援することである。
【発明を実施するための最良の形態】
【0011】
本発明を実施するための最良の形態の一つについて、図面を参照して詳細に説明する。図1を参照すると、一つ目の実施の形態における運用管理システムは、監視対象サーバA2にある第1運用管理部A21と、別の監視対象サーバA4にある別の第1運用管理部A41と、監視サーバA1にある第2運用管理部A11と、障害対処フローデータベースA31、ユーザ管理データベースA32、手動障害対処履歴データベースA33、操作履歴情報データベースA34、障害情報データベースA35、及び、コマンドデータベースA36と、監視端末A3とを有している。
【0012】
各監視対象サーバA2,A4では、第1運用管理部A21,A41がそれぞれ動作する。監視サーバA1の第2運用管理部A11は、複数の第1運用管理部A21,A41と通信し、複数の監視対象サーバA2,A4を監視する。監視端末A3は、第2運用管理部A11と通信し、運用管理者への情報の表示や、運用管理者からの指示の通達を行う。
【0013】
第2運用管理部A11は、いずれかの監視対象サーバA2,A4で障害が発生した場合に、障害対処フローデータベースA31を検索し、一致する障害対処フローがあれば、監視端末A3に障害対処フローを提供する。監視端末A3は、障害対処フローを表示する。この障害対処フローを、運用管理者が実行して障害に対処する。
【0014】
もし一致する障害対処フローが無い場合、監視端末A3に障害情報が表示され、運用管理者が障害対処開始を宣言する。運用管理者が障害対処のための何らかの操作を監視対象サーバA2,A4で行うと、第1運用管理部A21,A41は、操作履歴情報を第2運用管理部A11に通知する。第2運用管理部A11は、操作履歴情報を、操作履歴情報データベースA34に格納する。
【0015】
運用管理者が障害対処終了を宣言すると、第2運用管理部A11は障害対処開始から障害対処終了までの時間に行われた運用管理者の操作を、操作履歴情報データベースA34から取り出し、障害情報データベースA35に格納される障害情報と結びつけて、手動障害対処履歴データベースA33に格納する。運用管理者は、監視端末A3を通じて、操作履歴情報を整理し、フロー化により生成される障害対処フローを、障害対処フローデータベースA31に追加する。
【0016】
図2に、運用管理システムの詳細構成図を示す。図2を参照すると、第1運用管理部A21は、第1障害情報取得サービス部B11と、第1操作履歴情報取得サービス部B12とを有している。第1障害情報取得サービス部B11は、監視対象サーバA2で発生する異常状態を常にウォッチする。もし障害が発生した場合には、第2障害情報取得サービス部B9に、障害内容を通知する。一方、第1操作履歴情報取得サービス部B12は、監視対象サーバA2で運用管理者が行った全ての操作を、操作履歴情報として取得し、第2操作履歴情報取得サービス部B10に通知する。
【0017】
監視端末A3は、第2運用管理部A11のアプリケーション部B2と通信して、操作の指示や表示する情報をやり取りする手段を有する。また、監視対象サーバA2のシェル等管理インタフェースB13を用いて、監視端末A3から監視対象サーバA2を操作する環境を、運用管理者に提供する。
【0018】
第2運用管理部A11は、アプリケーション部B2と、障害対処フロー管理部B3と、障害対処フロー実行管理部B4と、手動障害対処履歴管理部B5と、手動障害対処履歴フロー化エンジンB6と、操作履歴情報管理部B7と、管理者識別部B8と、第2障害情報取得サービス部B9と、第2操作履歴情報取得サービス部B10とを有している。
【0019】
アプリケーション部B2は、監視端末A3と操作の指示や表示情報をやり取りすること、手動障害対処履歴管理部B5に障害対処開始の指示と障害対処終了の指示を行うこと、手動障害対処履歴フロー化エンジンB6と連携して、操作履歴のパラメータ化を行う画面を生成して表示することができる。
【0020】
障害対処フロー管理部B3は、障害対処フローデータベースA31から障害対処フロー情報の取得を行う。また、障害対処フロー管理部B3は、障害対処フロー実行管理部B4を通じて、障害対処フローの実行を行う。
【0021】
手動障害対処履歴管理部B5は、手動障害対処履歴データベースA33から、仮対処フロー情報の取得を行う。また、手動障害対処履歴管理部B5は、アプリケーション部B2から障害対処開始と障害対処終了の指示を受け、この指示に従い、操作履歴情報を取得する。また、この操作履歴情報を、手動障害対処履歴データベースA33に手動障害対処履歴として格納する。
【0022】
手動障害対処履歴フロー化エンジンB6は、コマンドを参照系、実行系に分類して、連続する参照系コマンドを冗長なコマンド列として排除し、操作履歴のコマンド文字列から引数をパラメータ化し、更には、手動でのコマンドの変更を行い、運用管理者の意図に沿って再利用性の高い障害対処フローとして編集することができる。
【0023】
操作履歴情報管理部B7は、第2操作履歴情報取得サービス部B10が、第1操作履歴情報取得サービス部B12から受信した操作履歴情報を、操作履歴情報データベースA34に格納する。操作履歴情報管理部B7は、指定された条件(開始時刻と終了時刻、および操作を実行した運用管理者)を満たす操作履歴情報を、操作履歴情報データベースA34から切り出して、手動障害対処履歴フロー化エンジンB6に送信することができる。
【0024】
管理者識別部B8は、監視端末A3からアプリケーション部B2とやり取りを行うユーザ(運用管理者)を識別する。ユーザ管理データベースA32は、管理者識別部B8の要求に従い、ユーザ(運用管理者)の情報を提供する。
【0025】
次に、図3のフローチャートを参照して、第一の実施の形態における運用管理システムの動作について詳細に説明する。運用段階において、いずれかの監視対象サーバで、例えば、監視対象サーバA2で障害が発生したとする(図3:S1)。このとき、第1障害情報取得サービス部B11は障害情報を採取する。採取したら、第1障害情報取得サービス部B11は、障害情報を監視サーバA1に送信する。図4に、障害情報表T2の例を示す。図4の例では、障害情報は、障害IDと、障害発生日付と、障害発生時刻と、障害が発生したコンピュータ名と、障害のレベルと、障害内容の情報とを含んでいる。
【0026】
第2障害情報取得サービス部B9は、障害情報を障害情報データベースA35に格納すると共に、障害対処フロー管理部B3に送信する(図3:S2)。障害対処フロー管理部B3は、障害対処フローを管理する。図5に、障害対処フロー表T1の例を示す。図5に示すように、障害対処フローは、フローIDと、障害情報識別番号と、登録IDと、コマンド列との各情報を含んでいる。図6に、障害対処フローの詳細を管理する障害対処フロー詳細表T8の例を示す。障害対処フロー詳細表T8には、図5の障害対処フローで使用されているコマンドの詳細情報が格納されている。図6に示すように、障害対処フロー詳細表T8は、コマンドIDの欄、コマンド内容の欄、コメント/条件の欄を有している。
【0027】
障害対処フロー管理部B3は、受け取った障害情報をキーに、障害対処フローデータベースA31を検索する(図3:S3)。一致しない場合は(図3:S3,ノー)、障害情報を監視端末A3に表示する。運用管理者は、障害情報を、監視端末A3を通じて視認し、所定の入力操作によって、障害に対する手動障害対処の開始を宣言する。手動障害対処履歴管理部B5には、対処開始と障害情報とが通知され(図3:S5)、手動障害対処履歴管理部B5に対処開始時刻と障害情報とが記録される。
【0028】
図7に、監視端末A3に表示される障害対処開始のメニューの例を示す。図7のメニューにおいては、運用管理者が、画面右側のウィンドウに表示されている”対処を開始する”を選択する操作を行うと、運用管理システムに、手動障害対処の開始が宣言される。
【0029】
運用管理者は、手動障害対処の開始を宣言する操作を行った後、シェル等管理インタフェースB13を通じて、監視対象サーバA2で障害対処の操作を実施することができる。実施した操作は、操作履歴情報として第1操作履歴情報取得サービス部B12が取得し、第2操作履歴情報取得サービス部B10に集約される。操作履歴情報管理部B7は、第2操作履歴情報取得サービス部B10に集約された操作履歴情報を、操作履歴情報データベースA34に逐一格納する。
【0030】
図8に、操作履歴情報を格納する操作履歴表T1の例を示す。図示するように、操作履歴には、操作IDと、操作日付と、操作開始時刻と、操作対象のコンピュータ名と、操作者名と、操作タイプと、操作内容との各情報が含まれている。
【0031】
手動障害対処が終了した場合、手動障害対処履歴管理部B5には、対処終了が通知され(図3:S6)、手動障害対処履歴管理部B5に対処終了時刻が記録される。図7に、監視端末A3に表示される障害対処終了のメニューの例を示す。図7のメニューにおいては、運用管理者が、画面右側のウィンドウに表示されている”確認”を選択する操作を行うと、運用管理システムに、手動障害対処の終了が宣言される。
【0032】
操作履歴情報管理部B7は、操作履歴情報データベースA34から、この障害に対して運用管理者が行った操作に対応する操作履歴情報だけを手動障害対処履歴情報として取り出し、手動障害対処履歴管理部B5に送信する(図3:S7)。
【0033】
図9に、手動障害対処履歴表T3の例を示す。図示するように、手動障害対処履歴には、対処IDと、障害情報識別番号と、登録IDと、コマンド列との各情報が含まれている。
【0034】
手動障害対処履歴管理部B5は、障害情報に対応する手動障害対処履歴情報を、手動障害対処履歴データベースA33に格納する(図3:S8)。この後、監視端末A3には、手動障害対処履歴情報を修正すること、フロー化を行うことを促すメッセージが表示される(図3:S9)。
【0035】
手動障害対処履歴情報をフロー化する場合には(図3:S9,イエス)、障害対処フロー管理部B3が、手動障害対処履歴情報を、手動障害対処履歴データベースA33から手動障害対処履歴管理部B5へロードする(図3:S10)。手動障害対処履歴フロー化エンジンB6は、手動障害対処履歴管理部B5とやり取りし、手動障害対処履歴情報の冗長なコマンドの排除、コマンドのパラメータ化、手動チューニングを実施する(図3:S11)。
【0036】
図10に、手動障害対処履歴フロー化エンジンの画面例を示す。図10において、証跡情報のテーブルには、手動障害対処の開始を宣言した運用管理者によって入力されたコマンド列が表示されている。これらのコマンド列は、一つの障害対処フローにフロー化される。図10の画面下方に示されているように、証跡情報のテーブルから生成された障害対処フローが、”2007年4月1日13時”に、”admin001”という登録者によって、障害対処フローデータベースA31に登録されている。
【0037】
フロー化された手動障害対処履歴情報は、手動障害対処履歴管理部B5から障害対処フロー管理部B3へ引き渡される。障害対処フロー管理部B3は、フロー化された手動障害対処履歴情報を障害対処フローとして、障害対処フローデータベースA31に格納する(図3:S12)。
【0038】
図3において、障害対処フロー管理部B3が、受け取った障害情報をキーに、障害対処フローデータベースA31を検索し(図3:S3)、一致した場合には(図3:S3,イエス)、監視端末A3に、その障害対処フローを表示する(図3:S4)。運用管理者は、障害対処フロー実行管理部B4を通じて、障害対処を実施することができる。
【0039】
図11に、手動障害対処履歴を、障害対処フローにフロー化する手順を説明するフローチャートを示す。手動障害対処履歴フロー化エンジンB6は、手動障害対処履歴管理部B5の指示を受けて、コマンドデータベースA36に蓄積された図12、図13、及び、図14の如くに示されるコマンドの分類表を用いて、フロー化を行う。
【0040】
まず、手動障害対処履歴フロー化エンジンB6は、手動障害対処履歴から参照系コマンドのみを抽出し、冗長な参照系コマンドを削除する。手動障害対処履歴フロー化エンジンB6は、参照系コマンドが連続している箇所については、冗長と判断する。そして、例えば、一つの参照系コマンドのみを残して、残りの参照系コマンドを削除する(図11:S100)。
【0041】
次に、手動障害対処履歴フロー化エンジンB6は、コマンドとして入力された文字列から、パラメータとすべき可変部分を抜き出して、この可変部分を、例えば$で始まる所定の識別子に置換する(図11:S101)。
【0042】
最後に、手動障害対処履歴フロー化エンジンB6は、運用管理者によって手動で実施されるコマンド順序の入れ替えや、不要なコマンドの削除などのチューニング操作を受け付けて、障害対処フローに反映させる(図11:S102)。
【0043】
次に、本発明を実施するための最良の形態の別の一つについて、図面を参照して詳細に説明する。図15を参照すると、二つ目の実施の形態における運用管理システムは、第一の実施の形態における運用管理システムと比べ、第2運用管理部A11aに、障害対処フロー相関管理部B20を有する点で異なる。障害対処フロー相関管理部B20は、障害対処フローデータベースA31を参照し、同一障害に対する複数の障害対処フローの相関を検出して、複数の障害対処フローを、一つの障害対処フローにまとめる機能を有する。
【0044】
第二の実施の形態における運用管理システムの動作を、図3を参照して詳細に説明する。第二の実施の形態における運用管理システムは、第一の実施の形態における運用管理システムと同様に、障害対処フロー管理部B3が、受け取った障害情報をキーに、障害対処フローデータベースA31を検索し(図3:S3)、一致した場合には(図3:S3,イエス)、監視端末A3に、その障害対処フローを表示する(図3:S4)。
【0045】
運用管理者は、障害対処フロー実行管理部B4を通じて、障害対処を実施することができる。運用管理者はそのときの状況に応じてフローを改変して実行する場合が多い。障害対処フロー管理部B3は、改変して実行された手動障害対処履歴を、別の障害対処フローとして障害対処フローデータベースA31に格納する。障害対処フロー相関管理部B20は、これらの小さい差分を持った障害対処フロー同士を関連付け、一つの障害対処フローとして合成して提供することができる。なお、この障害対処フロー相関管理部B20による動作を除き、第二の実施の形態における運用管理システムのその他の動作は、第一の実施の形態における運用管理システムの動作と同様である(図3:S1〜S12)。
【0046】
図16に、障害対処フロー相関管理部B20により合成された障害対処フローの例を示す。図16に示すように、障害対処フロー相関管理部B20は、ある運用管理者により作成されたlogin−>cd−>rm −rf /tmpという流れを持った障害対処フローと、別の運用管理者がこの障害対処フローを改変して作成したlogin−>cd−>ls/tmp−>rm −rf /tmpという流れを持った障害対処フローとを合成して、障害対処フローFL1を生成している。
【0047】
第二の実施の形態では、障害対処フローが運用管理者ごとに作成された場合であっても、次回、障害発生時に参照する際には、障害対処フローをばらばらに表示するのではなく、合成により簡略化した障害対処フローのみを運用管理者に提示することで、運用管理者の負担を軽減できる。
【0048】
以上説明したように、本実施の形態による効果は、システム運用管理者が障害対処を行うごとに、障害の対処方法のノウハウが拡充されていくことである。その理由は、運用管理者が行った操作履歴が、障害対処フローデータベースに蓄積し、過去に発生した障害に対しては、障害対処フローデータベースを検索して、障害の対処方法を表示できるからである。
【0049】
本発明は、多数の運用管理者によって利用される運用管理システムのソフトウェアにおける障害対処手順の管理の用途などに適用できる。
【図面の簡単な説明】
【0050】
【図1】図1は、第一の実施の形態における運用管理システムの全体構成図である。
【図2】図2は、第一の実施の形態における運用管理システムの詳細構成図である。
【図3】図3は、第一の実施の形態における運用管理システムの動作を説明するフローチャートである。
【図4】図4は、障害情報を格納する表の構造を示す図である。
【図5】図5は、障害対処フローを格納する表の構造を示す図である。
【図6】図6は、障害対処フローの詳細を格納する表の構造を示す図である。
【図7】図7は、監視端末A3に表示される障害対処開始及び終了のメニューの例を示す図である。
【図8】図8は、操作履歴情報を格納する表の構造を示す図である。
【図9】図9は、手動障害対処履歴情報を格納する表の構造を示す図である。
【図10】図10は、フロー化エンジンの画面例を示す図である。
【図11】図11は、手動障害対処履歴を、障害対処フローにフロー化する手順を説明するフローチャートである。
【図12】図12は、参照系コマンドを格納する表の構造を示す図である。
【図13】図13は、可逆実行系コマンドを格納する表の構造を示す図である。
【図14】図14は、非可逆実行系コマンド表を格納する表の構造を示す図である。
【図15】図15は、第二の実施の形態における運用管理システムの詳細構成図である。
【図16】図16は、障害対処フロー相関管理部B20により合成された障害対処フローの例を示す図である。
【符号の説明】
【0051】
A1 監視サーバ
A2,A4 監視対象サーバ
A3 監視端末

【特許請求の範囲】
【請求項1】
監視対象サーバと、
前記監視対象サーバを監視すると共に、前記監視対象サーバで障害が発生したときに、障害対処フローを提供する監視サーバとを具備する
運用管理システム。
【請求項2】
前記監視サーバは、
運用管理者が、障害発生の監視対象サーバに対して、手動で操作したコマンド列を含む手動障害履歴を蓄積する手動障害対処履歴データベースと、
前記手動障害履歴を、障害対処フローにフロー化する手動障害対処履歴フロー化エンジンと、
前記障害対処フローを蓄積する障害対処フローデータベースとを備える
請求項1記載の運用管理システム。
【請求項3】
前記手動障害対処履歴フロー化エンジンは、
前記手動障害対処履歴のコマンド列から参照系コマンドを抽出し、冗長な参照系コマンドを削除する
請求項2記載の運用管理システム。
【請求項4】
前記手動障害対処履歴フロー化エンジンは、
参照系コマンドが連続している箇所を冗長と判断し、この判断に基づいて、冗長な参照系コマンドを削除する
請求項3記載の運用管理システム。
【請求項5】
前記監視サーバは、
運用管理者によって手動で操作されるコマンドを、参照系コマンドと、可逆実行系コマンドと、非可逆実行系コマンドとに分類して蓄積するコマンドデータベースを更に備え、
前記手動障害対処履歴フロー化エンジンは、
前記コマンドデータベースを参照することによって、手動障害対処履歴のコマンド列から参照系コマンドを抽出する
請求項4記載の運用管理システム。
【請求項6】
前記手動障害対処履歴フロー化エンジンは、
コマンドとして入力された文字列に、パラメータとすべき可変部分が含まれていたときには、前記手動障害対処履歴から、前記可変部分を抜き出して、可変部分であることを表示する所定の識別子に置換する
請求項5記載の運用管理システム。
【請求項7】
前記手動障害対処履歴フロー化エンジンは、
運用管理者によって手動で実施されるチューニング操作を受け付けて、障害対処フローに反映させる
請求項6記載の運用管理システム。
【請求項8】
前記チューニング操作には、
コマンド順序の入れ替えと、不要なコマンドの削除との少なくとも一方が含まれる
請求項7記載の運用管理システム。
【請求項9】
前記監視サーバは、
同一障害に対する複数の障害対処フローの相関を検出して、複数の障害対処フローを一つの障害対処フローにまとめる機能を有する障害対処フロー相関管理手段を更に備える
請求項8記載の運用管理システム。
【請求項10】
障害発生の監視対象サーバに対して、運用管理者が手動で操作したコマンド列を含む手動障害対処履歴を蓄積することと、
前記監視対象サーバを監視する監視サーバにより、前記手動障害履歴を、障害対処フローにフロー化することと、
前記監視サーバにより、前記障害対処フローを蓄積することと、
前記監視対象サーバで障害が発生したときに、前記障害対処フローを提供することとを具備する
運用管理方法。
【請求項11】
前記フロー化することは、
前記コマンド列から参照系コマンドを抽出し、冗長な参照系コマンドを削除することを含む
請求項10記載の運用管理方法。
【請求項12】
前記フロー化することは、
コマンドとして入力された文字列に、パラメータとすべき可変部分が含まれていたときには、前記手動障害対処履歴から、前記可変部分を抜き出して、可変部分であることを表示する所定の識別子に置換することを更に含む
請求項11記載の運用管理方法。
【請求項13】
前記フロー化することは、
運用管理者によって手動で実施されるチューニング操作を受け付けて、障害対処フローに反映させることを更に含む
請求項12記載の運用管理方法。
【請求項14】
前記フロー化することは、
同一障害に対する複数の障害対処フローの相関を検出して、複数の障害対処フローを一つの障害対処フローにまとめることを更に含む
請求項13記載の運用管理方法。
【請求項15】
障害発生の監視対象サーバに対して、運用管理者が手動で操作したコマンド列を含む手動障害対処履歴を蓄積する手順と、
前記監視対象サーバを監視する監視サーバにより、前記手動障害履歴を、障害対処フローにフロー化する手順と、
前記監視サーバにより、前記障害対処フローを蓄積する手順と、
前記監視対象サーバで障害が発生したときに、前記障害対処フローを提供する手順とをコンピュータに実行させるための
プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate