自宅でもできる「死活監視」No.2:監視対象側の仕組み
自宅でもできる「死活監視」No.2:監視対象側の仕組み
監視対象となるサーバに、FTP機能を設けて、サーバ側にFTPする仕組みを作ります。
イメージとしては以下のような感じです。
FTP処理の仕様
- 1.定期的にサーバにファイルをUPする
- 2.ファイルにUPするタイムスタンプを書込む
- 3.サーバ側には、ファイルは必ず1ファイルとする
上記の仕様で、FTP処理を作成したいと思います。
FTP処理を実現する方法として、グレープシティの Secure FTP for .NET を使ってみたいと思います。
Secure FTP for .NETの利用
Secure FTP for .NETとは
グレープシティから提供されているFTP処理のツールです。これを利用することにで、FTP処理を作成する開発工数が削減できます。
また、セキュリティにも強固であり、文字化け、大容量等の問題を、このツールが解決してくれます。
※今回は、大容量ではありませんが。
また、利用するにあたりヘルプ・サンプルが提供されていますので、それを参考に作成してみます。
FTPのロジック
使用するにあたり、参照設定を行います。
Power TCP FTP にチェックを入れます。
設定後、usingステートメントを記載します。
using Dart.Ftp;
実際にFTPするロジックを作成します。
基本処理は、以下の通りです。
// ファイルリストを取得するための変数 Dart.Ftp.Listing listing; // 生成 Ftp _ftp = new Ftp(); // 接続するFTPサーバー名、ユーザー名、パスワードを設定します。 _ftp.Session.RemoteEndPoint.HostNameOrAddress = Constants.FtpServer; _ftp.Session.Username = Constants.FtpUser; _ftp.Session.Password = Constants.FtpPassword; // FTPサーバーに接続します。 _ftp.Connect(); // 設定したユーザー名とパスワードでログインします。 try { // 設定したユーザー名とパスワードでログインします。 _ftp.Authenticate(); } catch { // SSL証明書の検証結果が不正(false)だった場合は、強制的に接続を閉じます。 _ftp.Abort(); } try { //+------------------------------- // << ファイルを作成 >> //+------------------------------- // FTP先に同じファイルがある場合は、処理中止 listing = _ftp.List(Constants.FtpLADDir, "*.txt", Dart.Ftp.ListType.Full); foreach (Dart.Ftp.ListEntry flelist in listing) { _delfle = flelist.FullName; if (flelist.Name == _flenm + ".txt") _chk = true; } // 同じファイル名がなかったら、UPする if (_chk == false) { // UP前にすでにあるファイルを削除する if (_delfle != string.Empty ) _ftp.Delete(_delfle); // 添付ファイルをアップロードする _ftp.Put(_flepath, Constants.FtpLADDir + "/" + _flenm + ".txt", Dart.Ftp.Synchronize.Off); } // FTPサーバーからログアウトし、接続を閉じます。 _ftp.Close(); } catch (Exception _ex) { // SSL証明書の検証結果が不正(false)だった場合は、強制的に接続を閉じます。 _ftp.Abort(); }
今回のFTP処理では、FTPを行う前に、サーバ側にファイルが既にUPしているかをチェックしています。
ファイルが存在する場合は、サーバ側のファイルを削除してから、新たにファイルをUPするようにしています。
これを定期的にサーバにファイルをUPさせます。
ファイルの定期UpLoad
サーバにフィアルを定期定期にUPするのですが、これの間隔をどうするか検討する必要があります。
今回の仕様として以下の方法をとることにします。
監視対象サーバ → サーバ : 3分毎にUPロード
サーバ → UpLoadしたファイルの監視 : 5分毎に監視
このタイミングにすることで、前回UPしたファイルと、今回UPしたファイルのタイムスタンプは、必ず180秒前後になります。
サーバ側の監視タイミングを5分で見た場合、少なくとも、5分以上タイムスタンプの差が出ることはありません。
5分以上のタイムスタンプの差が出た場合は、それは正常にFTPができなかった。
つまり、監視対象サーバが停止している可能性があるということになります。
これで、死活監視を実現させます。
上記の方法で、監視対象側のロジックは作成できます。
次は、サーバ側のファイル監視ロジックの仕組み作りを掲載します。