あなたが管理するサーバーに異常があった場合、あなたはどのように気付いていますか?
- エンドユーザーからの問い合わせ
- クライアントからの連絡
- レンタルサーバーからの障害報告
など、受動的にはなっていませんか?
クライアントよりも早く異常に気付け!
プロフェッショナルとしてWeb制作を行っているのであれば、その技術と密接に関わり合っているサーバーの状態をケアすることは至極当然なことだと考えています。
異常検知の仕組みは必須
もし現状で異常を知る術を持っていないのであれば、知る仕組みを作ったほうがいいと思います。
あれっ、表示されませんね。確認してから折り返します。
では、信頼してもらえる存在には成り得ない気がします。
監視、異常があれば通知
監視というと、常にモニターを見て監視をしているというイメージをする方もいらっしゃると思うのですが、実はそうではありません。異常を検知すると、それを知らせる通知がメールが届きます。通知を受けたインフラエンジニアは該当サーバーにログインし、確認と対処するという流れになります。
監視すべき項目
監視をするためには、「監視サーバー」と「監視されるサーバー」が必要です。
まずは、一般的なレンタルサーバーでも監視できる内容から書いていきます。
サービス監視
監視サーバからネットワークを通じて、提供しているサービスに接続要求を行うことにより状態の監視を行うことができます。
HTTP(Webサーバーの応答監視)
HTTPリクエストを送信して、そのレスポンスコードや応答時間を計測します。
例えば、レスポンスコード「200」が正常値で、正常値以外の値が返ってきた、あるいはレスポンス自体が返ってこない場合に通知を行うように設定します。
各サービスの監視
SMTP、POP、IMAPなどメールサービスやFTPも同様に監視することができます。
サービス監視は外部からリクエストを送信してレスポンスの内容をチェックします。
だからブラウザやメーラーを使って24時間365日チェックしてもいいです… あとで体の不調を訴えられても困りますけど…
リソース監視
リソース監視は、一般的な管理者権限の無いレンタルサーバーでは監視できません。
サービス監視と違い、サーバー内部のリソースの状態は外部から分からないので一工夫が必要です。どういうことかと言うと、
パソコンのハードディスク容量を調べることを想像してみてください。
自分の目の前にあるパソコンなので、起動していてOSにログインすれば調べることができます。
遠隔地にあるサーバーだったらどうでしょう?
都度リモートログインして調べるのではなく、監視される側のサーバーにリソース情報を収集するエージェント(代理プログラム)を組み込みます。
監視サーバーが「ハードディスク容量を教えて」とそのエージェントにリクエストを送ると、エージェントが答えるという仕組みです。
Load Average(サーバー負荷監視)
一般的に、CPUの数よりもLoad Averageの値が高い時にレスポンスが悪くなります。使用しているサーバーのCPUがどういう構成になっているのかを意識して通知設定をします。
Disk(ディスク容量の監視)
ハードディスク容量については余程のことがない限り大きく変動するものではありませんが、可変領域ではデータベースのデータが更新されたり、ログが書き込まれたりしますので、監視すべき項目です。
Swap(スワップの状態監視)
RAM(物理メモリー)の容量が少なくなると、使用頻度の低いページがスワップ領域に移動されます。これをスワップアウトと言い、RAMの空き領域を確保するためにOSが持つ機能です。
ただしスワップはハードディスクに書き込まれるため、スワップアウトが頻発している場合はパフォーマンスが著しく低下します。
User(ログインユーザーの監視)
SSHまたは、FTPしているユーザー数を監視します。
通常は多くても同時に3ユーザーぐらいの接続なのに、10ユーザーを超えていると「招かざる客」がいらっしゃったのか?確認することができます。
Total Processes(総プロセス数の監視)
システム内のプロセス数が急激に増えることがあります。例えば、Webアクセスが集中すればWebサーバーのプロセスが増えます。
プロセス数が設定した閾値を越えた時に通知が届きます。
変化に気付くことの重要性
管理するサーバーの状態をケアしつつ変化に気付くことは重要。
ということだけをお伝えしたかったのですが、気付くのが遅くなり被害が大きくなってしまったなど、この手の話が年々増加傾向にあるので、ついつい話が長くなってしまいました。
変化には理由がある
変化が生じたことには必ず理由があります。
メディアに取り上げられてアクセスが集中することもありますし、サイバー攻撃を受けていることもあります。
その変化をリアルタイムにキャッチできるかが明暗を分けると言っても過言ではありません。
どうか、サーバーに「目を向けてください」「耳を傾けてください」。