TOPサーバ構築・運用> 各種ツールで運用・監視の手間を削減
格安!自社サーバ
格安!ベンチャー流サーバ構築法

第3回:運用管理を各種ツールで自動化

著者:ウノウ  佐藤 大樹   2007/3/14
1   2  3  次のページ
各種ツールで運用・監視の手間を削減

   Webサービスは、サービスそのものを作るよりも運用の方がコストがかかるといわれています。このため、コストを削減するには運用部分を極力自動化する必要があります。

   そこで今回はオープンソースソフトウェアを利用し、コスト削減と運用監視の両面を目的とした手法を紹介します。

どこに着目してサーバを監視するのか

   一口に「監視」といっても、サーバを運用する際に注目すべき点は様々です。実際にウノウでは、以下のような項目を監視しています。

日々のパッケージのアップデート
アプリケーションの脆弱性などの確認やアップデートを行います。
サーバの生存監視
正常にサービスが提供されているかの、サーバの死活を監視します。異常があった場合は即座に通知されるのがベストです。
サーバのリソース監視
サーバがどの程度のリソースを使用しているかを監視します。サーバの負荷測定、ボトルネック検証や増強計画などで効果を発揮します。
アプリケーションのログ監視
アプリケーションが出力するログの監視を行います。

表1:サーバ運用に最低限必要な監視項目

   ではそれぞれの監視を行う際のポイントについて、Red Hat系のディストリビュージョンを例にみていきます。

日々のアップデートの監視

   最近のLinuxは、オンラインでパッケージをアップデートできる仕組みを持っています。Red Hat系のディストリビュージョンでは「yum」、Debian系では「apt」といったソフトウェアがそれにあたります。

   これらのソフトウェアを利用し、日々のアップデートを自動監視するにはcronジョブに登録を行います。

   RedHat系のOSでは、毎日1回実行されるcronジョブは以下のように/etc/cron.daily/に保存されています。

% ls /etc/cron.daily/
0anacron 0logwatch certwatch logrotate makewhatis.cron mlocate.cron
prelink rpm tetex.cron tmpwatch yum.cron

   このディレクトリにはログのローテーションやlocateコマンドのデータベースをアップデートするといったプログラムが含まれています。日々のアップデートの監視には「yum.cron」を利用します。以下は標準的な設定です。

% cat /etc/cron.daily/yum.cron
#!/bin/sh
if [ -f /var/lock/subsys/yum ]; then
   /usr/bin/yum -R 120 -e 0 -d 0 -y update yum
   /usr/bin/yum -R 10 -e 0 -d 0 -y shell /etc/yum/yum-daily.yum
fi

   それぞれの行で指定されているオプションについては以下のような意味があります。

-R タイムアウトまでの時間
-e、-d エラーやデバッグの出力レベル
-y 更新があった際に、確認を取らずにすべてのパッケージをアップデート

表2:yumのオプション

   このようにアップデート確認を自動化しておけば、必要なときに管理者権限でyum updateコマンドを実行することでアップデートを行うことができます。

   しかし、アップデートの際にはglibcなどのアップデートを行った後に再起動を要するライブラリなどもあるため、ウノウでは以下のように変更しています。

% cat /etc/cron.daily/yum.cron
if [ -f /var/lock/subsys/yum ]; then
   #/usr/bin/yum -R 120 -e 0 -d 0 -y update yum
   #/usr/bin/yum -R 10 -e 0 -d 0 -y shell /etc/yum/yum-daily.yum
   /usr/bin/yum -e 0 -d 0 check-update
fi

   「check-update」はアップデートをチェックして表示してくれます。cronでの出力は通常メールとして配信されるため、あらかじめroot宛のメールを管理者が通常利用するメールアドレス宛に送信するように設定しておきます。

% cat /etc/aliases
......
root:   ← 送信したいアドレス

   このように設定しておくことで、以下のような更新すべきパッケージの情報が毎朝メールされるようになります。

メールの内容
/etc/cron.daily/yum.cron
crontabs.noarch                          1.10-8.fc5             updates
rsync.i386                               2.6.9-2.fc5            updates

   内容を確認したら、以下のように実際のアップデートを行います。

% yum update -y crontab rsync

1   2  3  次のページ


ウノウ株式会社  佐藤 大樹
著者プロフィール
ウノウ株式会社  佐藤 大樹
1981年生まれ。中学2年のときにN88Basicを習得して以来、大きく道を踏み外す。大学卒業後、2003年より株式会社ドワンゴ入社。オンラインゲームや基幹システムのコーディング、携帯電話向け大規模コンテンツ配信システムの主任設計などを担当。2005年12月、同社を退社。フリーランスを経て2006年4月よりウノウに参画。


INDEX
第3回:運用管理を各種ツールで自動化
各種ツールで運用・監視の手間を削減
  サーバの生存監視
  サーバのリソース監視