Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【HinemosWorld2016】A1-5_Hinemos徹底解剖(ジョブ編)

2,091 views

Published on

Hinemosは、システム運用管理で要求される各種機能を備えた、「統合運用管理ソフトウェア」です。

本資料は、2016/11/17(木)-11/18(金)開催
Hinemos World 2016 「Hinemos徹底解剖(ジョブ編)」セミナ講演資料となります。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

【HinemosWorld2016】A1-5_Hinemos徹底解剖(ジョブ編)

  1. 1. Copyright © 2016 NTT DATA INTELLILINK Corporation 2016年11月17日 NTTデータ先端技術株式会社 眞野 将徳 Hinemos徹底解剖 ~ジョブ編~
  2. 2. Copyright © 2016 NTT DATA INTELLILINK Corporation INDEX 1. はじめに 2. ジョブ実行の流れ 3. 応用編1: 影響が出ない再起動のタイミングは? 4. 応用編2: ジョブトラブルシューティング 5. まとめ
  3. 3. Copyright © 2016 NTT DATA INTELLILINK Corporation はじめに
  4. 4. Copyright © 2016 NTT DATA INTELLILINK Corporation はじめに  本セッションではHinemos5.0におけるジョブ実行時の制御にフォーカスして、 Hinemosの内部動作をご説明します。 • ジョブ実行時の通信の流れ • Hinemosマネージャ、Hinemosエージェントで行われる処理  応用としてジョブ運用時のよくある疑問を解決します。 • ジョブ実行に影響を与えない再起動タイミング • ジョブでよくあるトラブルと解決方法
  5. 5. Copyright © 2016 NTT DATA INTELLILINK Corporation ジョブ実行の流れ
  6. 6. Copyright © 2016 NTT DATA INTELLILINK Corporation ジョブ実行時の通信 ジョブの実行時には以下の順序でマネージャ・エージェント間で通信が行われます。 ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 ① : ジョブが開始し、ジョブセッションを作成 ② : エージェントへのジョブ起動指示を作成 ③ : ジョブ起動指示の取得 ④ : コマンド開始を送信 ⑤ : 起動指示に基づくコマンドの実行 ⑥ : ジョブ実行結果の送信 マネージャ エージェント ①ジョブ開始 では、順番に詳細をみていきましょう
  7. 7. Copyright © 2016 NTT DATA INTELLILINK Corporation ① : ジョブが起動し、ジョブセッションを作成 • ジョブが起動(クライアントで実行ボタン押下、スケジュール等)すると、ジョブセッションが作成されます。 • ジョブセッション作成時には、登録されているジョブ定義から、実行するジョブの情報のコピーを作成し、 マネージャの内部DBに蓄積されます。 • ジョブ実行後(ジョブセッション作成後)に、ジョブの設定を変更しても、 実行中のジョブの動作(実行するコマンド等)への影響はありません。 ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動 内部DB 登録されているジョブ定義 コピー 登録 ジョブ実行時の情報
  8. 8. Copyright © 2016 NTT DATA INTELLILINK Corporation ②エージェントへのジョブ起動指示(Topic)を配置 • エージェントに対するジョブ起動指示を作成します。 • この時点では、まだエージェントではジョブを実行していません。 • ジョブ[ノード詳細]ビューのメッセージに「エージェント応答待ち」と表示されます。 開始・再実行日時が 空欄 メッセージが エージェント応答待ち ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動
  9. 9. Copyright © 2016 NTT DATA INTELLILINK Corporation ③ : Topicの取得 • エージェントは以下のタイミングでマネージャに接続し、ジョブ起動指示が存在しないかチェック • 一定間隔(デフォルト30秒) • 即時反映用ポート(デフォルトUDP24005)にパケットを受信した場合 • 起動指示作成時に、マネージャはエージェントの即時反映用ポートにパケットを送信 • エージェントはすぐにジョブ起動指示を受けとり、ジョブを実行します UDP24005 定期的に 情報取得 マネージャ エージェント すぐに情報取得 ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動
  10. 10. Copyright © 2016 NTT DATA INTELLILINK Corporation ④ : コマンド開始を送信 • エージェントは、ジョブ起動指示を受信すると、実行前にマネージャと通信し、ジョブを開始することを連絡 • マネージャはその時刻をもとに、ジョブ[ノード詳細]ビューの開始日時を設定、メッセージを 「エージェント応答待ち」から「コマンド終了待ち」に変更します。 • この通信が成功すると、エージェントでコマンドの実行が開始されます。 ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動 開始・再実行日時が 設定される メッセージが コマンド終了待ち
  11. 11. Copyright © 2016 NTT DATA INTELLILINK Corporation ⑤ : 起動指示に基づくコマンドの実行 • 起動指示に含まれるコマンドをエージェントが実行します。 • 実行したコマンドはエージェントの子プロセスとして実行されます。 • コマンド実行中にエージェントを再起動した場合、ジョブは停止に遷移します。 Hinemosエージェントが停止しました ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動
  12. 12. Copyright © 2016 NTT DATA INTELLILINK Corporation ⑥ : ジョブ実行結果の送信 • 実行したコマンドが終了すると、エージェントはコマンド実行結果(戻り値、標準出力、標準エラー出力)を マネージャに送信します。 • マネージャは、その時刻をもとに、ジョブ[ノード詳細]の終了日時を設定し、 メッセージにコマンドの標準出力(stdout=...)と標準エラー出力(stderr=...)を表示します。 • 以上でジョブの処理は終了です。 ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動 終了・中断日時が 設定される メッセージが コマンドの標準出力 実行状態が終了 戻り値が設定される
  13. 13. Copyright © 2016 NTT DATA INTELLILINK Corporation メッセージの保持 • ジョブ[ノード詳細] のメッセージには、出力内容の履歴を含め保持されます。 • その際全てが保持されるのではなく、マネージャ・エージェント双方で制限があります。 マネージャ エージェント 2016-11-17 12:00:00 abcdef… 2016-11-17 11:30:00 コマンド終了待ち 2016-11-17 11:29:00 エージェント応答待ち StdOut = abcdef… 実行結果の送信 1024バイトまで取得2048文字 保存
  14. 14. Copyright © 2016 NTT DATA INTELLILINK Corporation Hinemosエージェントでジョブが実行されない場合は? • Hinemosエージェントから、ジョブ開始の通信がおこなわれない(④の通信がない)場合、 マネージャは毎分エージェントへの実行指示をリトライします。 • デフォルトでは10回起動指示をおこなっても、ジョブが開始されない場合には タイムアウトエラーで終了します。 メッセージが Agent Timeout Error (数字)は試行回数設定 ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動 エージェント 停止
  15. 15. Copyright © 2016 NTT DATA INTELLILINK Corporation HinemosエージェントからHinemosマネージャに接続できない場合は? • エージェントからマネージャの通信ができない場合 エージェントはジョブの結果の送信をデフォルトで7日間リトライします。 • それでもマネージャとの接続が復旧しない場合には、ジョブ実行結果を破棄します。 マネージャ エージェント 7日間マネージャに 再接続できない・ ・ ・ ジョブ結果を破棄 マネージャ 停止 ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動
  16. 16. Copyright © 2016 NTT DATA INTELLILINK Corporation ジョブが正常終了するまで繰り返すの動作は? 「ジョブが正常終了するまで繰り返す」にチェックすると、ジョブの戻り値が正常終了の範囲でない場合に コマンドを再実行することができます。 マネージャ エージェント 起動指示 情報取得 ジョブ開始 ジョブ終了 コマンド実行 ジョブ起動 ジョブの終了状態が 正常以外 起動指示 情報取得 ジョブ開始 ジョブ終了 コマンド実行 10秒sleep
  17. 17. Copyright © 2016 NTT DATA INTELLILINK Corporation 応用編1: 影響が出ない再起動のタイミングは?
  18. 18. Copyright © 2016 NTT DATA INTELLILINK Corporation 影響が出ない再起動のタイミングは? • 運用中、メンテナンス等で、Hinemosマネージャ・エージェントの再起動が必要な場面もある のではないでしょうか • サーバの再起動 • ソフトウェアの再起動 • その際、いつ再起動すればジョブ実行に影響を与えずに再起動できるのでしょうか • ジョブの処理の流れを振り返って確認してみましょう
  19. 19. Copyright © 2016 NTT DATA INTELLILINK Corporation 影響が出ない再起動のタイミングは? • Hinemosマネージャ • 起動が完了したジョブは、いつマネージャを再起動しても実行に影響はありません。 • 起動済みのマネージャ側のジョブの情報は、内部DBに保持されているため、 再起動しても失われません。 • マネージャの停止中、エージェントが接続できなくても、通信のリトライ機構により、 7日間以内にマネージャが復旧すれば、ジョブの実行結果は失われません。 いつ再起動しても 問題なし!! ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動
  20. 20. Copyright © 2016 NTT DATA INTELLILINK Corporation 影響が出ない再起動のタイミングは? • Hinemosエージェント • エージェントでコマンド実行中は再起動は避けてください。 • コマンド実行中にエージェントを再起動すると、コマンドの結果に依らず、終了に遷移してしまいます。 このタイミングの 再起動はNG ③情報取得 ④ジョブ開始 ⑥ジョブ終了 ②起動指示 ⑤コマンド実行 マネージャ エージェント ①ジョブ起動
  21. 21. Copyright © 2016 NTT DATA INTELLILINK Corporation • マネージャ停止中に実行予定だったスケジュールは、実行予定時刻からの経過時間が閾値以内の場合、 マネージャ起動直後に実行されます。 • デフォルトでは1時間以内の場合 • つまり、短時間内での再起動であれば、スケジュールの実行漏れは発生しません。 Hinemosマネージャ停止中 (補足) Hinemosマネージャ停止中に過ぎたスケジュールの動作は? 時刻 1時間 スケジュール A スケジュール B スケジュール B • スケジュールBはマネージャ 起動直後に実行される • スケジュールAは実行されない マネージャ起動
  22. 22. Copyright © 2016 NTT DATA INTELLILINK Corporation 応用編2: ジョブトラブルシューティング
  23. 23. Copyright © 2016 NTT DATA INTELLILINK Corporation ジョブがなかなか終了しない! • ジョブ[ノード詳細]ビューのメッセージを確認しましょう。 • 「エージェント応答待ち」 or 「コマンド終了待ち」 • エージェントが接続しないのでコマンドが実行されないのか、コマンドの実行に時間がかかっているのか 原因を切り分けることができます • マネージャに接続しているエージェントは、リポジトリ[エージェント]ビューでもチェックできます。 マネージャに接続している エージェントの一覧と 起動時刻・最終接続時刻がわかる
  24. 24. Copyright © 2016 NTT DATA INTELLILINK Corporation エージェントでのジョブ起動開始が少し遅れる(1/2) • エージェントでコマンドが実行されるのが遅れる場合、エージェントの即時反映用ポートにパケットが届いて いない可能性があります。 • 定期的な情報取得で、ジョブ実行指示を取得するため動作には問題ありません。 • ファイアウォールで即時反映用ポート(UDP24005)へのパケットを遮断していないか確認しましょう。 ジョブ詳細とノード詳細の開始日時に 30秒ほどのズレがある
  25. 25. Copyright © 2016 NTT DATA INTELLILINK Corporation エージェントでのジョブ起動開始が少し遅れる(2/2) 即時反映用ポートはリポジトリで設定し、エージェントの待受ポートもそれを受けて変更されます。 リポジトリ設定 マネージャ エージェント UDP24005を Listen 即時反映用ポートの 変更情報を取得する UDP24105を Listen 情報取得 即時反映用ポートを 24105に変更
  26. 26. Copyright © 2016 NTT DATA INTELLILINK Corporation ジョブの実行結果の標準出力が途中で切れてしまう(1/2) メッセージ全体が途切れる マネージャの設定値をオーバー ジョブの出力内容のみ途切れる エージェントの設定値をオーバー
  27. 27. Copyright © 2016 NTT DATA INTELLILINK Corporation ジョブの実行結果の標準出力が途中で切れてしまう(2/2) 最大値はそれぞれHinemosプロパティとAgent.propertiesで設定します。 … … job.message.length=1024 … … Hinemosプロパティ Agent.properties マネージャ エージェント 2016-11-17 12:00:00 abcdef… 2016-11-17 11:30:00 コマンド終了待ち 2016-11-17 11:29:00 エージェント応答待ち StdOut = abcdef… 実行結果の送信 xxxバイトまで取得 xxx文字保存 ※極端に大きくすると、通信量の増大に繋がるので、 変更する場合でも適度なサイズにしてください。 プロパティ job.message.max.lengthを追加
  28. 28. Copyright © 2016 NTT DATA INTELLILINK Corporation まとめ
  29. 29. Copyright © 2016 NTT DATA INTELLILINK Corporation まとめ 本セッションでは以下についてご紹介しました。 • Hinemosにおけるジョブ実行時の制御 • ジョブ実行中にHinemosマネージャ、Hinemosエージェントを再起動した際の挙動 • ジョブでよくあるトラブルと解決方法 ぜひ運用の際に役立てて頂けますと幸いです。
  30. 30. Copyright © 2011 NTT DATA Corporation Copyright © 2016 NTT DATA INTELLILINK Corporation

×