完全無料でWordPressのサイトを死活監視する方法

WordPressでサイトを運用している時、時々、サイトがダウンしてしまっている場合があります。

アクセスすると、「データベース接続確立エラー」というエラーが発生し、まったくページが表示されない状態になることがあります。

すぐに気づくことが出来ればよいのですが、あまり更新頻度が高くないサイトの場合、気づくのに数日かかってしまうことさえあるでしょう。

そうすると、多くの損失がでてしまいます。

サイトの死活監視を自動で行いたいと思うのですが、個人レベルで運用しているサイトの場合、別の監視サーバーを立てることは容易ではありません

外部の監視サービスを使う

そこで、今回は、外部の無料の監視サービスを使って、Wordpressサイトの死活監視を行えるように設定したいと思います。

MySQLデータベースの死活監視まで行いたい

さらに、通常、無料の死活監視サービスは、Pingレベルの死活監視しか行ってくれませんが、ここで紹介する方法を用いると、MySQLのデータベースの死活監視も行うことが可能です。

実際、Wordpressのサイトダウンにおいては、MySQLのサービスがダウンしているケースが少なくありません

そのような場合は、Ping監視だけでは、サイトの死活を十分に把握することができません。

SecureStarというサービスを使う

今回は、GMOグループが提供しているSecureStarというサービスを利用します。
http://www.securestar.jp/

その中の、「AlertMe」というサービスの「フリープラン」を登録しましょう。

大手なので、安心感があります。

登録すると、まずは「契約者ID」というのもが発行されます。

しかし、契約者IDでは、監視の設定などを行うことができませんので、「利用者ID」を自分で作成して、それを利用します。

AlertMeにログインして監視設定を行う

①利用者IDでログインしたら、「監視対象管理」から、「監視対象ホスト名」を設定しましょう。「説明」欄は適当に埋めてください。

②次に、「通知先アドレス管理」から、アラートを飛ばす先のメールアドレスを登録します。すぐに対応できるアドレスを設定しましょう。

③最後に「監視設定管理」から、①で作成した監視対象ホストを選択し、URL監視(レスポンスタイム)を選択します。これがポイントです。

AlertMeの監視設定編集。URL監視(レスポンスタイム)を選択するのがポイント

AlertMeの監視設定編集。URL監視(レスポンスタイム)を選択するのがポイント

さらに、下図のように、パラメーターを設定してください。URLパスのcheck.phpというものは、この後作成しますので、その通りに入れておいてください。

URLパスはcheck.php。しきい値もこの図のように設定する。

URLパスはcheck.php。しきい値もこの図のように設定する。

MySQLデータベースの死活監視用にcheck.phpを作成する

空のファイルに、以下のコードをコピペして、check.phpというファイル名で保存します。

usernameとpasswordの部分は、ご自分の環境に置き換えてください。

そして、WordPressのトップ階層に配置します。

<?php
$link = mysql_connect("localhost", "username", "password");
        if (!$link) {
			sleep(7);
			exit;
        }else{
            echo "<head></head><body><p>Successfully connected to the server</p></body>";
        }
?>

この処理では、MySQLへの接続を試みて、もし失敗した場合は、7秒間のスリープ処理を行っています。

このスリープ処理によって、URLのレスポンスタイム監視のしきい値を超えさせることにより、アラートを発報させることができます。

もしスリープ処理をしなければ、ただの空白ページが表示されることになりますが、Ping監視やURL監視からすると、正常にレスポンスがあったとみなされてしまうのです。

DB接続エラーがあった場合の、エラー文字列を検出する「URL監視(キーワードチェック)」というものもあるのですが、それは有料プランでしか使うことができません。

ですので、URLのレスポンスタイム監視と、上記のPHPスクリプトを組み合わせることにより、ホストの健全性と、データベースの健全性まで監視できるという仕組みです。

以上、完全無料でWordpressのサイトをMySQLデータベースも含めて死活監視する方法でした。

さらに良い方法をご存知の方は、ぜひコメントでお知らせくだされば幸いです。

コメント