自宅でもできる「死活監視」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ができなかった。
つまり、監視対象サーバが停止している可能性があるということになります。
これで、死活監視を実現させます。

上記の方法で、監視対象側のロジックは作成できます。
次は、サーバ側のファイル監視ロジックの仕組み作りを掲載します。

[前の記事]No.1:仕組み作り