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

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


いますぐ実践! 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 システム管理」の解除は、以下からできます。
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://usupi.org/k/ (モバイル栗日記)


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

トップ

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

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本