いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.069 / 読者数:867名

こんばんは、うすだです。

おそらく 99% くらいの読者の方はお気づきだと思いますが、記事を書くときは、 先週の記事をコピーして、使い回しています。

ですから、次の週をおやすみすることがあって、最後のあいさつを、

  それでは、来々週に、お会いしましょう!

と書き換えたら、次回には、元に戻さなければいけません。
しかし、そのことを忘れてしまいますと、

  それでは、来々週に、お会いしましょう!

のまま、毎週発行してしまったりするわけですね。

…ええ、まあ、実は、Vol.065 から今まで、そうなっていました。

仕事の文書でも、日付を古いままで出してしまったりなど、 たまにやってしまうことがありますが、仕事でもそうでなくても、 最後まで目を通してから出す、ということを、今後は徹底しようと思います。

懺悔がおわりましたので、それでは今週も、はりきってまいりましょう!

今週のお題 - WWW サーバを監視する

前回、Apache のエラーログをメールする方法を、ご紹介しました。

Vol.068 - Apache のエラーログをメールする
http://www.usupi.org/sysad/068.html

これで、エラーログを、すばやく知ることができるようになりました。
しかし、WWW サーバ自体が停止してしまったときなど、 メールの送信すらままならないときには、上記の方法はあまり役に立たなさそうです。

それでは…と、ping コマンドを定期的に実行して、サーバの生存確認を行う方法を、 刹那的に思いつく貴兄がたくさんいらっしゃるのではないかと思います。

  % ping -c 1 www.usupi.org > /dev/null 2>&1 \
  || (echo "www.usupi.org is down" | /usr/bin/Mail -s Alert root)

しかし、ping では、 そのマシンのカーネルとネットワークの生存確認にはなりますが、 WWW というサービスの生存確認にはなりません。
ちゃんと、WWW サーバとして動作していることを、監視したいですよね。

というわけで、今週は、WWW サーバを監視する方法を、ご紹介します。


つまり、きちんと HTTP でアクセスして、 動作することを確認すればいいってことですね。
そして、うまくアクセスできないときに、 その旨をメールで通知するようにしておけば、異常をいち早く知ることができる、 と考えられます。

 

今回、HTTP のアクセスには、wget コマンドを用いようと思います。
wget コマンドは、HTTP でファイルをダウンロードするためのものです。
wget コマンドを使って、WWW サーバの動作確認を行うには、以下のように実行します。

  % wget -O /dev/null http://www.usupi.org/sysad/
  --01:27:43--  http://www.usupi.org/sysad/
             => `/dev/null'
  www.usupi.org をDNSに問いあわせています... 59.106.23.151
  www.usupi.org[59.106.23.151]:80 に接続しています... 接続しました。
  HTTP による接続要求を送信しました、応答を待っています... 200 OK
  長さ: 28,165 [text/html]

  100%[====================================>] 28,165        --.--K/s

  01:27:43 (227.18 KB/s) - `/dev/null' を保存しました [28165/28165]

ここでは、http://www.usupi.org/sysad/ にアクセスして、 www.usupi.org の WWW サーバが動作していることを、確認しています。
wget は、本来ダウンロードが目的ですが、-O オプションを用いて、 出力ファイルを /dev/null に指定することで、 ダウンロードしたファイルを保存せずに確認だけ行わせています。

ただ、このままではメッセージが冗長ですので、-q オプションで抑制し、 wget コマンドの終了ステータスで判断するようにしてみましょう。

  % wget -q -O /dev/null http://www.usupi.org/sysad/ || echo NG

終了ステータスが 0 以外だと、NG と出力されるはずですが、 今は正常に動作していますので、何も出力されません。
試しに、存在しない URL を指定すると、ちゃんと NG と出力されます。

  % wget -q -O /dev/null http://a.b.c/ || echo NG
  NG

あとは、NG の出力を、メールによる通知に差し替えれば、完成です。

  % wget -q -O /dev/null http://www.usupi.org/sysad/ || \
  (echo httpd is down. | /usr/bin/Mail -s '[httpd] Alert' root)

上記を実行して、wget コマンドで正常にアクセスできないときに、 メールが root に送られるようになります。
これを cron で定期的に実行すれば、WWW サーバの監視になります。

あ、cron の設定方法は、以下などをご参照ください。

Vol.002 - 簡易バックアップ リローデッド
http://www.usupi.org/sysad/002.html


というわけで今週は…といいたいところですが、 これでは wget コマンドが実行されるたびに、 アクセスログに記録されてしまいます。
アクセスログを集計している貴兄にとっては、うれしくないお話です。

ですので、監視のためだけのファイルを用意して、 アクセスをログに記録しないように設定してみましょう。

まずは、どこからもリンクされていない、監視用のファイルを置きます。
以下では、ドキュメントルートが /home/httpd/html だとして、 その直下に keepalive.txt というファイルを置いています。

  % cd /home/httpd/html
  % touch keepalive.txt

そして、httpd.conf の設定を変更します。
たとえば、今、ログの設定が、以下のようになっているとします。

  CustomLog /var/log/httpd/access_log combined

これを、mod_setenvif を使って、以下のように変更します。

  <IfModule mod_setenvif.c>
      SetEnvIf Request_URI "^/keepalive\.txt$" keepalive
  </IfModule>
  CustomLog /var/log/httpd/access_log combined env=!keepalive

要求されたファイルが /keepalive.txt のときに、 keepalive という環境変数を設定します。
そして、環境変数 keepalive が設定されていないときだけ、 アクセスログに記録するようにしています。

あとは、いつものように設定を反映して、確認するだけです。

  # /etc/init.d/httpd configtest  (必須ではありません)
  # /etc/init.d/httpd reload

以上、WWW サーバを監視する方法について、ご紹介しました。

先週のと併用すれば、たいていの異常には、すぐに気づけると思います。
ただし、メールの宛先を、WWW サーバとなるべく関係のないところにしておかないと、 マシンやネットワークごとおかしくなったときに、メールが読めなくなる、 という状況に陥るかもしれません。ご注意ください。

また、余力のあるかたは、 wget コマンドのエラーメッセージもあわせてメールするなど、 いろいろカスタマイズしてみてください。

宿題の答え

先週の宿題は、

  Apache のエラーログをメールする際に、ある程度集約させて、メール
  の数を減らしてください。

でした。

というわけで、alarm を使うことで、Perl でも実現できました。

  #!/usr/bin/perl

  $addr = $ARGV[0] ? shift:"root";
  $tout = $ARGV[0] ? shift:5;
  $msgs = "";
  $|=1;
  $SIG{ALRM} = \&timedout;
  while(<>) {
      alarm($tout);
      $msgs .= $_ unless /File does not exist:/;
      print $_;
  }

  sub timedout {
      if($msgs &&
         open(MAIL, "|/usr/bin/Mail -s \'[httpd] Error Log\' $addr")) {
          print MAIL $msgs;
          close MAIL;
      }
      $msgs = "";
      alarm($tout);
  }

まず最初に、送信先のメールアドレス($addr)と、 タイムアウト($tout)を決定しています。 いずれも、引数で指定されたらその値を使用し、 そうでなければデフォルト値(それぞれ root, 5)を使用します。

次に、ログを貯めておく変数 $msgs の初期化と、 即座に標準出力へ出力するための呪文($|=1)を唱えています。

そして、アラーム(SIGALRM シグナル)の発生時に timedout サブルーチンが呼び出されるようにしています。

あとは、無限ループで、標準入力からひたすらエラーログを取得して、 例の "File does not exist:" でない場合に $msgs に追加するとともに、 標準出力に同内容を出力しています。
また、alarm で $tout 秒後に timedout が呼び出されるようにします。

timedout サブルーチンでは、$msgs に何かが入っていれば、メールを送信します。 そして、$msgs を空にし、alarm の再設定を行います。

 

以上、それだけです。
あとは、httpd.conf に、前回と同様の設定を行います。

  ErrorLog "| /usr/local/sbin/errorlogmail.pl >> /var/log/httpd/error_log"

エラーログファイルのパスは、お使いの環境に合わせてください。
(Fedora や Vine の場合、上記でよかったと思います。)

宛先のメールアドレスや、タイムアウト値を変更したければ、 ErrorLog の指定のところに引数を追加してください。

上記の意味がさっぱりわからなければ、まず先週の記事をご覧ください。

Vol.068 - Apache のエラーログをメールする
http://www.usupi.org/sysad/068.html

今週の宿題

今週の宿題は、

  Anonymous FTP サーバを監視してください。

です。

wget コマンドは、FTP にも対応していますので、簡単にできますよね。
あ、そうそう、ログのことは、今回は気にしないでおきましょう。

あとがき

最近、サランラップ(正確には「食品包装用ラップフィルム」でしょうか) を切らしていたのですが、いろいろイベント続きだったり買い忘れたりとしていたため、 1週間くらい、ラップなしの生活をしていました。

やってみればわかると思いますが、これが、結構不便なんですよ。
あまった食べものを残しておきたいときや、電子レンジでご飯を温めたいときなど、 ラップを必要とする状況が、頻繁に訪れます。
今までなにげなく送っていた生活が、ラップにべったり依存していたことを、 存分に思い知らされました。

しかしながら、にんげんは学ぶことのできる生きものです。
数日過ぎると、ラップなしでもなんとかする術を、見につけます。
あまった食べものはビニール袋に入れたり、 レンジで温めるときはラップなしで直接やっちゃうなど、 なんとでもなることがわかりました。

というわけで、今でもラップなしの生活を…というわけではなく、 さすがに今日買ってきました。あー、やっぱりラップがあると便利ですね。

 

とまあ、結局なにが言いたいかといいますと、 すべてが満たされた生活を過ごすよりも、なにか足りないほうが、 にんげんは賢くなれるのではないか、ということです。
ときどきは、普段使っているもののうちなにかを使わずに、 一日過ごしてみようかと思います。(ls を使わないとか…うわぁ不便そう…。)

…ラップごときで、こんなことをちょっと思ってしまいました。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また『来週』に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−盆も正月も関係なく、毎日描きます。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 5 をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューションや、Solaris10の例も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
Ubun通
Linux(主にUbuntu)と自作PCに関する投稿型情報サイトです。 私の知らない最新のソフトなどが紹介されています。
日本の Linux 情報
日本の、Linux 総本山的なところです。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
Open Tech Press
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

シッダールタ シッダールタ
Hermann Hesse
  何度も読んで理解したい本
新宿駅最後の小さなお店ベルク 新宿駅最後の小さなお店ベルク
井野朋也
  食べてみたくって仕方がありません
第五の山 第五の山
Paulo Coelho
  不可避なことから学べるようになりたい
入門LDAP/OpenLDAP 入門LDAP/OpenLDAP
デージーネット
  超具体的でわかりやすいです
エイジレス革命 エイジレス革命
Deepak Chopra
  固定観念にとらわれないで生きます
免疫革命 免疫革命
安保徹
  免疫力を高めて自力で治すべし!
悪い笛 悪い笛-エハイク2
吉田戦車
  エハイク第二弾。評が絶妙!
ハリー・ポッターと死の秘宝 ハリー・ポッターと死の秘宝
J.K.Rowling
  とうとう最後に…全部読んでよかった
ハリー・ポッターと謎のプリンス ハリー・ポッターと謎のプリンス
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと不死鳥の騎士団 ハリー・ポッターと不死鳥の騎士団
J.K.Rowling
  ハリポ月刊なので読み直してます
.....

[X]
「賢者の書」 喜多川 泰
「セキュリティウォリア」 Cyrus Peikari, Anton Chuvakin
「CORE MEMORY」 John Alderman, Mark Richards
「新訳 星の王子さま」 サン=テグジュベリ / 倉橋 由美子
「センネン画報」 今日 マチ子
「粟津潔 デザインする言葉」 粟津潔
「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸
「Make: Volume01」 オライリー・ジャパン
「セーラが町にやってきた」 清野 由実
「手紙屋」 喜多川 泰
「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久
「人蕩し術」 無能 唱元
「子育てハッピーアドバイス2」 明橋 大二, 太田 知子
「ラッセル幸福論」 B. Russell
「それでも人生にイエスと言う」 Viktor Emil Frankl
「子育てハッピーアドバイス」 明橋 大二, 太田 知子
「考具」 加藤 昌治
「北欧デザイン<3>」 渡部 千春
「北斎の謎を解く」 諏訪 春雄
「体感美術館」 平野 暁臣
「チベット永遠の書」 Theodore Illion
「リナックスの革命」 Pekka Himanen
「人月の神話」 Frederick Phillips,Jr. Brooks
「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner
「小布施ッション<2001-2002>」 セーラ・マリ カミングス
「アンパンマン伝説」 やなせ たかし
「夢をかなえるゾウ」 水野 敬也
「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann
「北欧デザイン<2>」 渡部 千春
「北欧デザイン<1>」 渡部 千春
「ヒューマン2.0」 渡辺 千賀
「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯
「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦
「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき
「デザインのデザイン」 原 研哉
「マキアヴェッリ語録」 塩野 七生
「ハンバーガーを待つ3分間の値段」 斎藤 由多加
「星の旅人-スペイン「奥の細道」-」 黛 まどか
「食品の裏側」 安部 司
「On Lisp」 Paul Graham
「ぼくが医者をやめた理由 つづき」 永井 明
「あなたならどうする?」 Jack Nikolaschka
「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」
      Mark G. Graff, Kenneth R. van Wyk
「「左利き」は天才?−利き手をめぐる脳と進化の謎
      David Wolman
「自分の中に毒を持て」 岡本 太郎
「アトピーの薬を減らす本」 田中 貴子
「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留
「X51.ORG THE ODYSSEY」 佐藤 健寿
「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子
「沖縄文化論」 岡本 太郎
「「伝説の社員」になれ!」 土井 英司
「コンピュータの構成と設計(上)」 Patterson & Hennessy
「カラスのジョンソン」 明川 哲也
「ドリルを売るには穴を売れ」 佐藤 義典
「頭がよくなる照明術」 結城 未来
「クロフォードのインタラクティブデザイン論」 Chris Crawford
「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso
「非常識のすすめ―逆発想の仏教論」 ひろさちや
「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」
      デージーネット
「イノベーションの達人!」 Tom Kelly, Jonathan Littman
「クリエーター50人が語る創造の原点」 小原 啓渡
「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick
「楽しい気象観察図鑑」 武田 康男
「入門 Ajax」 高橋 登史朗
「リリカルな自画像」 岡本 太郎
「やぎの目ゴールデンベスト」 林 雄司
「初めてのPython 第2版」 Mark Lutz,David Ascher
「鼻兎」 小林 賢太郎
「なぜ、これがアートなの?」 Amelia Arenas
「芸術起業論」 村上 隆
「まほう色の瞳」 Enrique Barrios
「ラーメンズつくるひとデコ」 ラーメンズ
「R25 つきぬけた男たち」 R25編集部
「美の呪力」 岡本 太郎
「しろのあお」 上大岡 トメ
「ザ・ゴール」 Eliyahu M. Goldratt
「ハッカーと画家」 Paul Graham
「岡本太郎に乾杯」 岡本 敏子
「Fedore Core Expert」 Software Design
「誰も知らない男」 ブルース・バートン
「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト
「国家の罠」 佐藤 優
「夜回り先生」 水谷 修
「やぎの目絵日記」 林 雄司
「7つの習慣」 スティーブン・R. コヴィー
「まろ、ん?−大掴源氏物語」 小泉 吉宏
「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル
「ポストモダン・マーケティング」 スティーブン ブラウン
「機動戦士ガンダムさん」 大和田 秀樹
「小エロのひみつ - Webやぎの目研究発表」 林 雄司
「これ、誰がデザインしたの?」 渡部千春
「60分間・企業ダントツ化プロジェクト」 神田 昌典
「ガルシアへの手紙」 エルバート ハバード
「人生は素晴らしいものだ」 オグ・マンディーノ
「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン
「ワインバーグのシステム思考法」 G.M.ワインバーグ
「渋谷ではたらく社長の告白」 藤田 晋
「渋井真帆の日経新聞読みこなし隊」 渋井 真帆
「コラム息切れ」 小野 法師丸
「早朝起業」 松山 真之介
「変な人が書いた驚くほどツイてる話」 斎藤 一人
「35歳から仕事で大切にしたいこと」 村井 勉
「金融広告を読め」 吉本 佳生
「発想する会社!」 トム・ケリー,ジョナサン・リットマン
「エハイク」 吉田 戦車
「人生の旋律」 神田 昌典
「仕事の思想」 田坂 広志
「CPUの創りかた」 渡波 郁
「非常識な成功法則」 神田 昌典
…これ以前は記録してません…

▼ 気に入ってる本

夢をかなえるゾウ 夢をかなえるゾウ
水野 敬也
  いままでで最高の「笑える」成功本
Linuxデバイスドライバ Linuxデバイスドライバ
Alessandro Rubini,
Jonathan Corbet
  ドライバ作らなくてもためになる
Firefoxの改造テクニック! Firefoxの改造テクニック!
大浦 淳
  いま栗日記拡張を考えてます
Apacheモジュール プログラミングガイド Apacheモジュール プログラミングガイド
小山 浩之
  Apacheの中身もわかるよ
図解 実戦マーケティング戦略 図解 実戦マーケティング戦略
佐藤 義典
  栗日記も戦略的に行こう!
やぎの目ゴールデンベスト やぎの目ゴールデンベスト
林 雄司
  よめも爆笑してました
アルケミスト アルケミスト
パウロ・コエーリョ
  ヘコみそうなとき読みます
X51.ORG THE ODYSSEY X51.ORG THE ODYSSEY
佐藤 健寿
  X51.ORGの集大成
チベット永遠の書 チベット永遠の書
Theodore Illion
  いろんな意味ですごい!!
影響力の武器 影響力の武器
ロバート・B・チャルディーニ
  思わず納得します