質問: あるサーバーがよく落ちるので、chrome拡張アプリで死活監視プログラムを書いてみました。 死活の判断はステータスコードが200でresponseURLがopenにセットしたのと同じ場合に生存と判断をして、それ以外は死亡としました。 これで一応動いたのですが、サーバーがDDNSから接続先が見つからないとDDNSの管理する警告画面に飛ばされます。 その時の違いは画像の通りで、ステータスコードが200でresponseURLは同じでした。 本来はDDNSの不具合でサーバーにつながらないので死亡中と判断をしたいのですが、ステータスコードとURLが同じなので生存と判断してしまっています。 ここで質問なのですが、DDNSにつながってしまった時死亡と判断するにはどうしたらよいでしょうか? HTMLの中身が違うのでその差を比較するしか無いのでしょうか? (例えばタイトルを抜き出して比較する等) github masakinihirota/GreenHeartRedCross_trial chrome拡張アプリの公開先 responseとresponseTextだけが違う。 !DDNSの警告画面に接続された時のXMLHttpRequestのデータ !サーバーに接続した時のXMLHttpRequestのデータ
回答: 質問の意図とは少し違いますが、 静的htmlを使って監視するなら、まだPINGで監視した方がマシでしょうね。 サーバーが返すhttpステータスコードはサーバー上で設定されたコードを返すだけです。 正常に設定をされていないと予測されたコードは返ってきませんし、対象のサーバーが返すとは限りません。 htmlは経路にあるキャッシュ等が邪魔することが多いので 正確な死活監視をするなら、CGIで日時データ等を返すxmlページを設置して それを確認してチェックした方がいいかと思います。 世の中には本物のサーバーのふりをして200okなのに旧いキャッシュを返すという 困ったキャッシュサーバーも存在します... ぇぇ。たった1分前後表示されただけの再起動中のhtmlを 1周間返し続けた某大手プロバイダの非公開キャッシュサーバーとかね←