Linux(CentOS7)でWebサイトの状態をcron+シェルスクリプトで監視する方法

Linux(CentOS7)でWebサイトの状態をcron+シェルスクリプトで監視する方法

インターネットに公開しているWebサーバーを運営している場合、Webサーバーが正常に稼働していてWebサイトをユーザーが閲覧可能な状態かを定期的にチェックしておきたいですが、本格的な監視環境を用意するほど費用や手間をかけられないことも多いでしょう。

そのようなときの監視方法の一つに、Linuxマシンでシェルスクリプト(curlコマンド)とcronを使って、WebサイトのHTTPレスポンスをチェックする方法があります。

そこでここでは、CentOS7でWebサイトの状態を簡単に監視する方法を紹介します。

Linux環境でCPU/メモリ/ディスクの使用率をCron+シェルスクリプトで監視する方法
Linuxサーバーを監視する場合、しっかりと監視するなら監視対象マシンとは別に監視サーバーを構築して監視ツールを利用するのが一般的ですが...

動作環境

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS Linux7.9.2009

Webサイトの状態を監視する

インターネットに公開しているWebサイトの状態を監視する場合、定期的にWebサイトに実際にアクセスしてHTTPレスポンスコードをチェックするのがおすすめです。

Linuxで環境から監視するシンプルな方法としては、curlコマンドを使って監視したいWebサイトにアクセスし、HTTPレスポンスコードに問題がないか確認するシェルスクリプトを作成し、作成したシェルスクリプトをcronを使って定期実行させる方法があります。

Memo

可能であれば、Webサイトを閲覧する利用者と同じネットワーク経路で監視するのが良いでしょう。

手順は、次のとおりです。

シェルスクリプトの作成

まずは、curlコマンドを使って監視したいWebサイトにアクセスし、HTTPレスポンスコードに問題がないか確認するシェルスクリプトを作成します。

シェルスクリプトの保存先は、管理しやすい場所でOKです。

# vi /usr/local/bin/web_check.sh

#!/bin/bash

#チェックするURLを指定します。
target_url="https://4thsight.xyz"

#target_urlへアクセスし、HTTPレスポンスコードを取得します。
message=`curl -o /dev/null -s -w %{http_code} $target_url`

#HTTPレスポンスコードが200以外のときは標準出力にメッセージを表示します。
if [ "$message" != 200 ]; then
 echo "$target_url is down!! HTTP_code is $message"
fi

cronの設定

次に、作成したシェルスクリプトをcronで5分おきに実行するよう設定します。

# vi /etc/crontab

*/5 * * * * root bash /usr/local/bin/web_check.sh

以上で、WebサイトへアクセスしたときにHTTPレスポンスコートが200以外だったときは、標準出力にメッセージが表示され、メッセージはシェルスクリプトの実行ユーザーであるroot宛にメール送信されます。

Memo

cronで処理が実行された時に標準出力や標準エラーに表示されたメッセージは、実行ユーザー(ここではroot)宛にメール送信されます。

あとはroot宛メールを外部のメールアドレスなどに転送するよう設定しておけば、何かあったときにいち早く気づくことができるでしょう。

あとがき

ここで紹介したシェルスクリプトはとてもシンプルですが、チェックするURLを引数で指定するようにしたり、直接mailコマンドを使って指定したメールアドレス宛にメッセージを送信するといった工夫をすれば、より使いやすくなるでしょう。

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ