RCC2013年度執行委員長のmotです(トゥイッターは@programmerMOTです.)

4回生として卒論に追われつつ本記事を書かせて頂いております.研究室関係者各位は卒論書けなどという暴言を吐かないようによろしくお願いします.

さて卒論に追われている私ですが,RCCのWebサーバについて色々と述べさせていただきます.
今回このアドベントカレンダーをホスティングしているRCCのWebサーバですが,元管理者としてエンジニアとして客観的に言えることとして,

Webサーバがよく落ちます

これに関しては非常に深いわけがあるのですが,まあ色々と大変なんです.どうやら本アドベントカレンダー期間中にも死んだことがある模様です.

さて管理者の皆様ならサーバが落ちた際には通知がやってきますよね.非常に憂鬱な気分になることでしょう.
そんなあなたにRCCを非常におすすめします.なぜかというとサーバ陥落時の通知システムは存在しません

おおっと嘘をつきました.RCCでは,サーバ陥落時にどこからともなく管理者たちのTwitterに通知がやってくる通知システムを採用しております.
しかしこれではおちおち卒論も書いていられません.そこで今回サーバの状態をチェックして通知するスクリプトを適当に書いてみました.

まず,サーバ監視は普通にcurlコマンドでやれば行けそうです.今回はステータスコードを取得して200以外なら落ちてる判定をするようにしましょう.

curl -LI www.rcc.ritsumei.ac.jp-o /dev/null -w '%{http_code}\n' -s

これを実行しますと(サーバが元気なら)200という文字列が帰ってきます.これでWebが生きていることを確認できましたね.

次に通知部分です.今回はim.kayac.comを利用しました.これ自体の利用法はim.kayac.comを参照ください.
非常にシンプルなAPIでiPhoneに通知を飛ばすことができるので,ちょっとした通知をしたいときには重宝しています.

これらの仕組みを組み合わせこのようなスクリプトを書きました.

#!/bin/bash
#http_checker.sh

HOST=www.rcc.ritsumei.ac.jp

CODE=curl -LI $HOST -o /dev/null -w '%{http_code}\n' -s

if [ “${CODE}” != “200” ]; then
/home/mot/im-kayac.sh mot private_key “RCC死んだ”
fi

#!/bin/bash
#im-kayac.sh

if [ $# -ne 3 ]; then
echo “$0 ”
exit 1
fi

USER=$1
KEY=$2
MESSAGE=$3

SIG=echo -n $MESSAGE$KEY | openssl sha1 | sed -e 's/(stdin)= //g'

curl -d “message=$MESSAGE&sig=$SIG” http://im.kayac.com/api/post/$USER

im-kayac.shはユーザ名,秘密鍵,メッセージを渡すといい感じに通知を送ってくれます.
http_checker.shを叩くと,curlで200チェックを行い,もし200じゃなければ,「RCC死んだ」とメッセージを送らせるようにしました.

あとはhttp_checker.shをcronに登録していい感じにチェックさせればおkです.やったー!


さてこのシステムですがまだ動作テストを行っておりません
それぞれのスクリプトごとの単体テストは行ったのですが,,,結合テストは行ってないです.

つまり,結合テストは今始まっていると言っても過言ではない!!!!それではみなさんよろしくお願いします.

追伸)
システム管理局へ,ぼくのホームディレクトリにあるので煮るなり焼くなり消すなりお好きにどうぞ


次の記事は@bitter_foxさんです。

Twitterでフォローしよう

おすすめの記事