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

Last-Modified: 2009/6/21

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

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

というわけで、クリエーターズマーケットで燃えつきてまいりました。

やっぱり目立たないといかんよねとか、今回は高い商品を用意しようとか (平均購入価格が上がるそうです)、いろいろ考えていたわりには、あっと いう間に月日が流れ、いつものように前日まで突貫工事となりました。

結局、ブースは地味に仕上ってしまい、全部栗の絵なんです、と説明して はじめて面白さに気づいてもらえるという、前回と同じ轍をふんでしまい ました。

…が、それでも、概ね好意的に反応していただき、中にはテンション高く 喜んでいただくこともできまして、とても有意義な一日を過ごせました。

とはいえ、まだまだいろいろ改善の余地があります。
とりあえず、毎回、人件費をゼロにして計算しても「赤字」になるため、 次回こそは「黒字」になるよう、がんばりたいと思います。

自分が何屋さんか忘れたところで、今回も、はりきってまりましょう!

今回のお題 - monit でいろいろ監視する

前回、monit を使って、プロセスといいますかサービスといいますか、を 監視して、止まっていたら起動させる、ということを行いました。

Vol.158 - monit でプロセスを監視する http://www.usupi.org/sysad/158.html

とはいえ、monit は、プロセスだけではなくファイルなどの監視にも使用 できますし、ただ単に動いているかどうか以外の確認もできます。

実際、とりあえずサービスが動いていればいいなんていうことはまれで、 たとえば、CPU パワーを浪費していたり、メモリをばか食いしていた場合 には、なんらかの対策を講じる必要があると思います。

というわけで、今回は、monit を使ったさまざまな監視の仕方を、ご紹介 したいと思います。

− − − − − − − − − − − − − − − − − −

最初は、前回に引き続き、プロセスの監視です。

まず、確認のために、ウソウソなサービスをでっちあげます。
/etc/init.d/usouso というファイルを作成してください。
中身は、以下の通りです。

#!/bin/sh   
PIDFILE=/var/run/usouso.pid   
case "$1" in   
  start)   
      yes > /dev/null 2>&1 &   
      echo $! > $PIDFILE;;   
  stop)   
      [ -f $PIDFILE ] && kill `cat $PIDFILE`   
      rm -f $PIDFILE;;   
  *)   
      echo "Usage: $0 {start|stop}"   
      exit 1   
esac   
exit $?   

以下のように、実行可能にしてから start を引数に渡して実行すると、 yes コマンドがめいいっぱい走ります。

# chmod +x /etc/init.d/usouso   
# /etc/init.d/usouso start   

そして、stop を引数にして実行すると、yes コマンドが終了します。

# /etc/init.d/usouso stop   

ではまず、CPU利用率が 60% を越えたら、メールで通知させるための設定 を、以下に示します。

check process usouso with pidfile "/var/run/usouso.pid"   
  start = "/etc/init.d/usouso start"   
  stop = "/etc/init.d/usouso stop"   
  if cpu usage > 60% then alert   

これを、たとえば /etc/monit.d/usouso.conf という名で保存し、monit を起動(もしくは再起動)しますと、監視を開始します。
当然、yes コマンドがめいいっぱい走行していますので、CPU利用率 60% を軽く越える状況になり、メールがぽんぽん飛んでくることになります。

通知ではなく、再起動させたければ、最後の1行を以下のようにします。

  if cpu usage > 60% then restart   

これはどうしようもないよねということで、CPU利用率が 60% を越えたら 監視対象から外すには、最後の1行を以下のようにします。

  if cpu usage > 60% then unmonitor   

ちなみに、cpu usage の他に、mem usage を使用すると、メモリ使用率の 監視が可能です。

− − − − − − − − − − − − − − − − − −

次に、ファイルやディレクトリを監視してみましょう。

まずはファイルです。
/etc/apache2/conf/httpd.conf の内容が変わったら、httpd にその設定 を反映してもらいましょう。設定例を以下に示します。

check file httpd.conf with path /etc/apache2/conf/httpd.conf   
  if changed checksum then exec "/etc/init.d/apache2 graceful"   

これを、/etc/monit.d/httpd.conf という名前で保存して、monit を起動 (もしくは再起動)します。
そして、/etc/apache2/conf/httpd.conf を適当に編集しますと、apache2 のログに以下が出力され、/etc/init.d/apache2 graceful が実行された ことが確認できます。

[日時] [notice] Graceful restart requested, doing restart 

チェックサムの変化ではなく、タイムスタンプでチェックするには、上記 の2行目を以下のように変更します。

  if changed timestamp then exec "/etc/init.d/apache2 graceful"   

では、ディレクトリに対しても、同様の設定を行ってみましょう。
設定例を以下に示します。

check directory httpd.conf.dir with path /etc/apache2/conf.d   
  if changed timestamp then exec "/etc/init.d/apache2 graceful"   

同様の手順で上記設定を有効にしますと、/etc/apache2/conf.d のタイム スタンプが変更された時点で、/etc/init.d/apache2 graceful を呼出し ます。

− − − − − − − − − − − − − − − − − −

最後に、オマケ? です。

monit は、WWWサーバの機能も持っており、HTTP 経由で設定を参照したり サービスの制御を行ったりすることができます。

そのためには、以下のような設定を加えます。

set httpd port ポート番号 and use address アドレス 
  allow アクセスを許可する相手 
  allow ユーザ名:パスワード 
  allow @グループ名 

2行目以降の allow に関しては、すべて必要というわけではありません。
ただ、複数用いたほうが、セキュリティ的に好ましいと思います。

「ポート番号」には、HTTP のポート番号を指定します。
「アドレス」には、listen する自分のアドレスを指定します。省略する とすべてのインターフェースから待ち受けますが、その際は use address アドレス を外してください。
「アクセスを許可する相手」には、ホスト名 や IPアドレスだけでなく、 IPアドレス/マスク である範囲に許可をあたえることも可能です。
「ユーザ名:パスワード」には、HTTP の Basic認証で使用されるユーザ名 とパスワードを指定します。
「@グループ名」には、許可するグループを指定します。PAM を使います ので、あらかじめ /etc/pam.d/monit を作成しておく必要があります。

設定例を以下に示します。
ポート番号に 2812 を使用し、192.168.1.0/24 からのみ接続を受け付け ます。ただし、ユーザ名が monit でパスワードが password か、もしく は adm グループに属するユーザである必要があります。

set httpd port 2812 and   
  allow 192.168.1.0/255.255.255.0   
  allow monit:password   
  allow @adm   

ちなみに、/etc/pam.d/monit ですが、Vine では以下のようにすることで 使えることを確認しております。

#%PAM-1.0   
auth       include      system-auth   
account    required     pam_nologin.so   
account    include      system-auth   
password   include      system-auth   
session    include      system-auth   

実行例などは省略しますが、現在の設定の確認に使うだけでも重宝します ので、一度お試しくださいませ。

− − − − − − − − − − − − − − − − − −

以上、monit によるさまざまな監視について、ご紹介しました。

monit に関する詳しい情報が、検索などしても意外と見つかりませんが、 そんなときは、ソースコードを覗いてみるとよいかもしれません。

たとえば、doc/ 以下には、ドキュメントがいくつか存在します。
presentation.odp には monit に関する全般的な説明が、examples.html にはいろいろな設定例が記述されています。

また、protocols/ 以下には、対応するプロトコルとそのチェックの方法 が、記述されています。
前回〜今回を通して、結局 HTTP しか扱いませんでしたが、具体的にどの ようなやりとりをするのか、気になる貴兄は、中身を覗いてみるとよいと 思います。(C言語で書かれていますけどね…。)

宿題の答え

前回の宿題は、

メールでの通知が一切行われないよう monit を設定してみましょう。   

でした。

オンラインマニュアルを見ますと、変化が起きたときに警告メールを送信 してほしければ set alert を設定してね、と書いてあります。
じゃあ、書かなければいいんですね。コメントアウトしてみましょう。

# set alert usu@usupi.org   

これで、monit を再起動してみますと、

# /etc/init.d/monit restart   

monit 自身の停止や起動を知らせるメールが来なくなりました。
メールを送る必要がなくなりましたので、set mailserver の設定も不要 になります。(あるとまずい、というわけでもないですが。)

# set mailserver localhost   

…以上、あっけない答えをお送りしました。

今回の宿題

今回の宿題は、

Monit で、同じ条件で複数の処理を行わせてみましょう。   

です。

たとえば、CPU利用率が 80% を越えたときに、再起動しつつメールで通知 したい、といったときに、どのような設定を行えばよいか、試行錯誤して みてくださいませ。

あとがき

すみません、クリマの話の続きです。

今回も、いろいろ気づいたことがありましたが、その中でも、モーレツに 感じたことが3つほどあります。

まず最初は、自分の得意な分野で勝負すべきだ、ということです。
これは、お客さんから指摘していただいて、気づいたことです。
その指摘とは、ポストカードの絵に比べて、栗ストラップのクオリティが 低い、というものでした。
樹脂粘土で栗のマスコットを作り、ストラップにしたものが栗ストラップ なのですが、よく考えますと、わたしが日々描いている栗の絵とは、栗と いうキーワード以外に接点がありません。
自分が日々がんばって作っているモノを活かすべきだ、と思いました。

そして次に、子どもの反応がとても素直でストレートだということです。
キラキラした目で「栗?」「栗だ!」と言ってもらえると、すごくうれしい ですし、大きい声で言ってもらえば、よい宣伝にもなります。
そして自らも、大人の醒めた目で見るのではなく、純粋に、感じたことを そのまま素直に表現できるようになりたい、と思いました。

そして最後は、ありきたりですが、自分一人の力だけで成し遂げたのでは ないんだ、ということです。
いつも、よめには、あれやこれやと手伝ってもらっているのですが、今回 はいとこにも手伝ってもらって、いろいろな準備が間に合いました。

以上をふまえて、次回は、もっといいモノにして、もっと多くの方に栗の よさを知っていただき、栗による世界征服に少しでも近づけられるよう、 がんばりたいと思います。(まじめに間違っている気もしますが…)

今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、7月5日(日) 未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」はこちらです。
メルマガの解除、バックナンバーなども、以下からどうぞ。
https://www.usupi.org/sysad/ (まぐまぐ ID:149633)

その他、作者に関するページは、概ね以下にございます。
https://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
https://twitter.com/kuriking/ (twitter)
https://facebook.com/kuriking3 (facebook)
https://jp.pinterest.com/kuriking/pinterest)
https://www.instagram.com/kuri_king_/ (instagram)


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


トップ

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

プロフィール

▼ 本が出ますよ(栗イラストも!)
   

▼ リンク

Server World
各種ディストリビューションの設定例がてんこ盛りです。
日経Linux
今や数少なくなってしまったLinuxの雑誌。
Linux & OSS − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
OSDN Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
Linux Development - IBM Developer
開発者向けですが、勉強になりますよ。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)

▼ 作ってみました

▼ 最近読んだ本

位置情報の基本と技術
谷口功
  わかりやすかったです。ちょい古いけど。
 
はじめてのバイクメンテナンス
?
  ざっくり理解できました。
 
仕事の思想
田坂広志
  再び。大事だと思います。
 
ドロヘドロ本
林田球
  作者の考えとかわかって面白い!
 
認知症の介護と手続き
遠藤英俊
  理解が深まりました。
 
くらべてわかる航空管制
園山耕司
  素人には難しかった…。
 
旅客機が飛ぶしくみ
チームFL370
  わかりやすくておもしろい。
 
リーダブルコード
Dustin Boswell,Trevor Foucher
  意識してコードを書いています。
 
介護の現場と業界のしくみ
高山善文
  介護する側の視点ですが参考になりました。
 
図解でわかるISO9001のすべて
大浜庄司
  一つ古いけど概要はわかりました。
 

▼ 気に入ってる本

Ship It! ソフトウェアプロジェクト成功のための達人式ガイドブック
Jared Richardson, William Gwaltney Jr.
  いろんな分野に適用したい
 
Java並行処理プログラミング
Brian Goetz, Joshua Bloch, Doug Lea
  Javaや並行処理を甘く見てました
 
ビジュアライジング・データ - Processingによる情報視覚化手法
Ben Fry
  Processingすごくよいです
 
センネン画報その2
今日マチ子
  前作もよいがもっといい!
 
出現する未来
Peter Senge, C. Otto Scharmer, Joseph Jaworski, Betty Sue Flowers
  難しいけど到達したいです
 
図解 実戦マーケティング戦略
佐藤 義典
  栗日記も戦略的に行こう!
 
百日紅(上)(下)
杉浦日向子
  どう書けばいいかわからないけどすばらしい!
 
アルケミスト
パウロ・コエーリョ
  擦り切れるほど読んでます
 
X51.ORG THE ODYSSEY
佐藤 健寿
  X51.ORGの集大成
 
影響力の武器
ロバート・B・チャルディーニ
  思わず納得します
 

▼ せんでん