0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

データ連携では、一時的な通信エラーやファイル不備など、さまざまな要因で処理が失敗する可能性があります。そのため、エラー発生時の検知だけでなく、リトライ処理による再実行や、リトライ後も復旧しなかった場合の障害検知を実装することが重要です。

本記事では、HULFT Squareを使用して以下の仕組みを実装する方法を紹介します。

・エラー監視
・リトライ処理
・障害検知

実際の設定画面を交えながら、各コネクターの配置方法や設定内容について解説します。

実施手順

以下の手順を実施します。
1. エラー監視処理作成
2. リトライ処理&障害検知処理作成

1. エラー監視処理作成

① 例外監視処理を作成
例外監視処理を配置することで、監視対象処理で発生した例外をcatchアイコンで捕捉できるようになります。

[ツールパレット] ⇒ [基本] ⇒ [フロー] ⇒ [例外監視]コネクターを使用します。
image.png

[Start]アイコンの先に置きます。
image.png

[例外監視]コネクターの詳細については、例外監視処理を参照ください。

② 監視対象の処理を作成
エラー監視対象の処理を作成し、[try]アイコンの先に置きます。
今回はCSVファイル読み取り(csv_read)とCSVファイル書き込み(csv_write)を作成します。
image.png

③ 例外通知処理を作成
[ツールパレット] ⇒ [基本] ⇒ [処理] ⇒ [例外通知]コネクターを使用します。
image.png

[catch]アイコンの先に例外通知を置きます。
image.png

[例外通知処理のプロパティ]の[メッセージ]にログ出力したいメッセージを入力します。
image.png

[例外通知]コネクターの詳細については、例外通知処理を参照ください。

例外通知処理で設定したメッセージは、[モニタリング] ⇒ [サービス] ⇒ [HULFT Integrate] のイベントログに出力されます。
[イベントログ]の詳細については、HULFT Integrateを参照ください。

2. リトライ処理&障害検知処理作成

1. エラー監視処理作成 で作成したスクリプトにリトライ処理とリトライ後の障害検知処理を追加します。

① リトライ処理を作成
スクリプト変数(retry_count)を作成します。スクリプト変数(retry_count)はリトライ回数を保持するための変数です。
[プロジェクトエクスプローラ]のスクリプト名を右クリックし、[新規作成] ⇒ [スクリプト変数]を選択して作成します。
[変数型]に整数型、[初期値]にリトライ回数を設定します。
image.png

[ツールパレット] ⇒ [基本] ⇒ [フロー] ⇒ [繰り返し(条件指定)]コネクターを使用します。
image.png

[Start]アイコンの先に置きます。
image.png

ループ回数(loop:count)がretry_countより小さい間ループする条件にします。
image.png

[繰り返し(条件指定)]コネクターの詳細については、繰り返し(条件指定)処理を参照ください。

② 変数代入処理を作成
スクリプト変数(success_flag)を作成します。スクリプト変数(success_flag)は処理結果(成功/失敗)を保持するための変数です。
[プロジェクトエクスプローラ]のスクリプト名を右クリックし、[新規作成] ⇒ [スクリプト変数]を選択して作成します。
[変数型]に真偽値型、[初期値]にfalseを設定します。
image.png

[ツールパレット] ⇒ [基本] ⇒ [処理] ⇒ [変数代入]コネクターを使用します。
image.png

監視対象の処理の先に置きます。
image.png

[ツールパレット] ⇒ [条件] ⇒ [真偽値定数]を使用します。
[真偽値定数]からスクリプト変数(success_flag)に線を引きます。
image.png

[真偽値定数]の[定数]にtrueを設定します。
image.png

[変数代入]コネクターの詳細については、ドキュメントMapper/変数Mapper(詳細)を参照ください。
[真偽値定数]の詳細については、真偽値定数を参照ください。

③ 待機処理を作成
スクリプト変数(wait_time)を作成します。スクリプト変数(wait_time)はリトライ時の待機時間(秒)を保持するための変数です。
[プロジェクトエクスプローラ]のスクリプト名を右クリックし、[新規作成] ⇒ [スクリプト変数]を選択して作成します。
[変数型]に整数型、[初期値]に待機時間(秒)を設定します。
image.png

[ツールパレット] ⇒ [基本] ⇒ [処理] ⇒ [待機]コネクターを使用します。
image.png

[catch]アイコンの先に[待機]コネクターを置きます。
image.png

[待機処理のプロパティ]の[待機時間]の[秒]にスクリプト変数(wait_time)を設定します。
image.png

[待機]コネクターの詳細については、待機処理を参照ください。

④ 条件分岐処理を作成
[ツールパレット] ⇒ [基本] ⇒ [フロー] ⇒ [条件分岐]コネクターを使用します。
image.png

[loop END]アイコンの先に置きます。
image.png

[条件のプロパティ]の[条件式]で、スクリプト変数(success_flag)がfalseと等しい場合の条件を設定します。
image.png

[条件分岐]コネクターの詳細については、条件分岐処理を参照ください。

⑤ 例外通知処理を作成
[ツールパレット] ⇒ [基本] ⇒ [処理] ⇒ [例外通知]コネクターを使用します。
image.png

スクリプト変数(success_flag)がfalseと等しい場合の条件分岐の先に置きます。
image.png

[例外通知処理のプロパティ]の[メッセージ]にログ出力したいメッセージを入力します。
image.png

[例外通知]コネクターの詳細については、例外通知処理を参照ください。

例外通知処理で設定したメッセージは、[モニタリング] ⇒ [サービス] ⇒ [HULFT Integrate] のイベントログに出力されます。
[イベントログ]の詳細については、HULFT Integrateを参照ください。

おわりに

いかがだったでしょうか。
本記事では、HULFT Squareでエラー監視処理を実装し、それを発展させてリトライ処理および障害検知処理を構築する方法を紹介しました。

エラー発生時にすぐ異常終了するのではなく、一定回数のリトライを行うことで一時的な異常からの自動復旧が期待できます。また、リトライ後も処理が成功しなかった場合に障害として通知することで、運用担当者が迅速に問題を把握できるようになります。

本記事が、より安定したHULFT Squareの運用設計を検討する際の参考になれば幸いです。

ここまで読んでいただき、ありがとうございました。それでは、また!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?