ファイル転送前に、転送先プロセスの生存確認をしたい

OrangeLab. 運営チーム
作成日時: - 更新日時:
Avatar

はじめに

こんにちは、HULFT Orange Lab.運営チームの兼平です。

本Tipsでは、HULFTの「リモート生存監視コマンド」についてご紹介します。
集配信が正常に行われない場合の障害を切り分ける手法として、相手先のHULFT常駐プロセスが正常に動作しているかどうかを確認する事ができます。

リモート生存監視コマンドを使ってみよう

リモート生存監視コマンドは以下のように実行します。
utlalivecheck -h hostname -p portno

引数説明
hostname 対象ホスト名もしくはIPアドレス
portno 監視対象プロセスが開いてるポート番号

上記を参考にして、下記の環境でコマンドを実行してみましょう。


WindowsからLinuxに対して、リモート生存監視コマンドを実行してプロセスが起動してるかを確認してみましょう。
コマンドプロンプトに以下のコマンドを入力し、実行します。
C:\>utlalivecheck -h rhel7 -p 31800
SUCCESS
対象ホストの31800ポートを使用しているプロセスが正常に起動してる場合、SUCCESSと出力されます。
では、対象ホストのプロセスが起動していない場合、どんな実行結果になるか見てみましょう。
C:\>utlalivecheck -h rhel7 -p 31800
ソケット接続エラーです。
対象ホストのプロセスが起動していない場合、ソケット接続エラーが出力されます。
相手先のHULFT常駐プロセスを確認してみることで、障害の原因を少しでも早く切り分ける事ができます。

リモート生存監視コマンドをスクリプトに組み込もう

リモート生存監視コマンドの基本的な使い方が分かったところで、今度は少し応用してみましょう。

相手先のHULFT常駐プロセスが起動している場合はutlsendを使用してファイルを配信し、起動していない、もしくは通信できないなど場合は戻り値を判定して、詳細内容をログファイルに出力するスクリプトを作成してみます。

※Windowsのbatサンプル
echo off
cls

utlalivecheck -h rhel7 -p 3306 -q

if %ERRORLEVEL% == 0 (
 goto NORMAL
) else (
 goto ERROR
)

:NORMAL
utlsend -f ALIVECHECK_SEND -sync

if %ERRORLEVEL% == 0 (
 exit
) else (
 echo 配信先ホスト   :rhel7>>c:\send_error.log
 echo 戻り値           :%ERRORLEVEL%>>c:\send_error.log
 echo エラー内容     :配信に失敗しました。>>c:\send_error.log
 echo 対処             :マニュアル及びヘルプを確認してください。
)

exit

:ERROR

if %ERRORLEVEL% == 28 (
 echo 配信先ホスト   :rhel7>>c:\send_error.log
 echo 戻り値           :%ERRORLEVEL%>>c:\send_error.log
 echo エラー内容     :対処マシンへのコネクションが失敗しました。>>c:\send_error.log
 echo 対処1           :相手ホストのプロセスが起動しているか確認してください。>>c:\send_error.log
 echo 対処2           :相手ホストのポート番号が正しいか確認してください。>>c:\send_error.log
 echo.
) else if %ERRORLEVEL% == 29 (
 echo 配信先ホスト   :rhel7>>c:\send_error.log
 echo 戻り値           :%ERRORLEVEL%>>c:\send_error.log
 echo エラー内容     :データの送信に失敗しました。>>c:\send_error.log
 echo    対処           :ソケットが切断された可能性があります。確認してください。>>c:\send_error.log
 echo.
) else if %ERRORLEVEL% == 50 (
 echo 配信先ホスト   :rhel7>>c:\send_error.log
 echo 戻り値           :%ERRORLEVEL%>>c:\send_error.log
 echo エラー内容     :応答電文の受信に失敗しました。>>c:\send_error.log
 echo 対処              :ソケットが切断された可能性があります。確認してください。>>c:\send_error.log
 echo.
) else if %ERRORLEVEL% == 51 (
 echo 配信先ホスト   :rhel7>>c:\send_error.log
 echo 戻り値           :%ERRORLEVEL%>>c:\send_error.log
 echo エラー内容     :応答電文に不正な値が設定されていました。>>c:\send_error.log
 echo 対処              :相手ホストのプロセスの状態を確認してください。>>c:\send_error.log
 echo.
) else (
 echo 配信先ホスト   :rhel7>>c:\send_error.log
 echo 戻り値           :%ERRORLEVEL%>>c:\send_error.log
 echo エラー内容     :マニュアル及びヘルプを確認してください。>>c:\send_error.log
 echo 対処              :マニュアル及びヘルプを確認してください。>>c:\send_error.log
 echo.
)

exit

HULFT常駐プロセスが起動していて、正常に配信が終了した場合はログが出力されません。
HULFT常駐プロセスが起動していない場合はログファイルに以下の様に出力され、配信が行われません。
配信先ホスト   :rhel7
戻り値          :28
エラー内容     :対処マシンへのコネクションが失敗しました。
対処1           :相手ホストのプロセスが起動しているか確認してください。
対処2           :相手ホストのポート番号が正しいか確認してください。

サンプルスクリプトのように、リモート生存監視コマンドをスクリプトに組み込むことで、相手先HULFTに接続できない原因や対処法をログファイルに出力させることができ、原因特定までの時間短縮に繋がります。
また、無駄な通信を減らしネットワーク回線の負担を軽減させることもできます。

監視ツールとの連携

リモート生存監視機能と監視ツールを連携させることで、監視結果に問題が発生した場合にHULFT運用管理者にアラートを出すことでいち早く対処する事が可能になります。

まとめ

いかがでしょうか?
リモート生存監視コマンドを使用することで、無駄な通信を減らすことも、監視ツールと連携する事でいち早く対処することも可能です。

様々な運用に合わせてリモート生存監視コマンドを利用することで上記の様なメリットがあります。
ぜひこの機にリモート生存監視コマンドをご活用してください。
この記事は役に立ちましたか?
1人中1人がこの記事が役に立ったと言っています

コメント