ライン

ポイント:導入設定の容易さ

ライン

 はじめに

 個人的な問題により突如時間ができたため、普段放置だった部分に手を入れることにしました。

 シンプルにプロセス監視を実施したくて、今回 MonitでのApache監視をすることにしました。
これまで使っていたスクリプトでやっても良かったのですが、Monitも使ってみたかったのです。
(過去を含め、ブログ・ホームページ上でも取り上げてきていなかったので、この機会に試したいと思います)

 導入

sysutils/monit

 portsがありますので、これから導入してしまいます。

# cd  /usr/ports/sysutils/monit
# make clean install clean

 コマンドとして投入したら終わり。

 これは、デフォルトのままで進めました。

..
===> Installing rc.d startup script(s)
install -m 600 /usr/ports/sysutils/monit/work/monit-5.3.1/monitrc /usr/local/etc/monitrc.sample
/bin/mkdir -p /usr/local/share/doc/monit
cd /usr/ports/sysutils/monit/work/monit-5.3.1 && install -m 644 CHANGES COPYING README /usr/local/share/doc/monit/
**************************************************************************

USAGE:

To enable monit you need to add monit_enable="YES" to rc.conf file.
Before running monit you have to configure monitrc file. There is
example configuration file monitrc.sample.

/usr/local/etc/monitrc.sample

**************************************************************************
===>   Compressing manual pages for monit-5.3.1
===>   Registering installation for monit-5.3.1

のように終了。上記のような後作業が必要のようです。

/etc/rc.conf に追加

 1行を追加します。

# ########################################### #
# # Ports                                   # #
# ########################################### #
...
# 2011-11-08
monit_enable="YES"

これで終了。

 設定

初期動作確認

 /usr/local/etc/monitrc が設定ファイルみたいなので、これを作成していきます。

# cd /usr/local/etc; cp  monitrc.sample  monitrc

初期で指定されているのは、以下のみ。

set daemon  60
set httpd port 2812
    allow localhost
    allow admin:monit 
    allow @monit
    allow @users readonly

とりあえず、起動してしまうことにしました。

# /usr/local/etc/rc.d/monit start
Starting monit.
Starting monit daemon with http interface at [localhost:2812]
# ps -ax | grep monit
54273  ??  S      0:00.02 /usr/local/bin/monit -c /usr/local/etc/monitrc

…というイメージですが、問題なさそうです。

このままだと、自ホストからのみのアクセスになってしまうので、修正。表示されるところまではみておきたいと思います。

    # allow localhost
    allow 192.168.1.41

のように修正し、スクリプトrestartでアクセスします。
認証が来ますので、admin/monit を入力します。

のように表示されてきました。

 このままだとセキュリティ上やばいので、まずSSLにし、ポート番号を変え、そしてIDパスワードも変更しましょう。

SSL

 今回は、なるべく簡単に済ませることにしたいので、ちゃっちゃとやります。

# openssl req -new -x509 -days 3650 -nodes -out ./monit.pem -keyout ./monit.pem
# openssl gendh 512 >> ./monit.pem
# openssl x509 -subject -dates -fingerprint -noout -in ./monit.pem
# chmod 600 /usr/local/etc/monit.pem

設定ファイルを追加しましょう。

set httpd port 18184
        SSL ENABLE
        PEMFILE  /usr/local/etc/monit.pem

設定ファイルを変更しましょう。
https://~:18184/ で表示されることを確認しました。

Apacheのプロセス監視

 設定ファイルのコメント行をみていきます。

## Check that a process is running, in this case Apache, and that it respond
## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,
## and number of children. If the process is not running, Monit will restart
## it by default. In case the service is restarted very often and the
## problem remains, it is possible to disable monitoring using the TIMEOUT
## statement. This service depends on another service (apache_bin) which
## is defined above.
#
#  check process apache with pidfile /usr/local/apache/logs/httpd.pid
#    start program = "/etc/init.d/httpd start" with timeout 60 seconds
#    stop program  = "/etc/init.d/httpd stop"
#    if cpu > 60% for 2 cycles then alert
#    if cpu > 80% for 5 cycles then restart
#    if totalmem > 200.0 MB for 5 cycles then restart
#    if children > 250 then restart
#    if loadavg(5min) greater than 10 for 8 cycles then stop
#    if failed host www.tildeslash.com port 80 protocol http
#       and request "/somefile.html"
#       then restart
#    if failed port 443 type tcpssl protocol http
#       with timeout 15 seconds
#       then restart
#    if 3 restarts within 5 cycles then timeout
#    depends on apache_bin
#    group server

必要な部分のコメントを外して設定をします。

 check process apache with pidfile /var/run/httpd.pid
   start program = "/usr/local/etc/rc.d/apache22 start" with timeout 60 seconds
   stop program  = "/usr/local/etc/rc.d/apache22 stop"

FreeBSDのportsだとこんな感じ。
メールの設定も加えておきます。

set mailserver localhost

set alert foo@gmail.com

この状態で再度リスタートしておきます。

プロセスを切ってみるとちゃんとステータスがあがっています。
1分後にはちゃんとリスタートがかかっていました。いい感じです。メールも上記のような感じで飛んできていました。

詳細は、< M-Monit Wiki >の通りです。
また、同ページの Configuration Examples にあるように、いろんな使い方で設定ができますので、便利です。
Named SpamAssassin SSH FTPなど、デーモンで動作させているものはすべていけそうです。

しばらく、様子見で動作させておこうと思います。
何かあっても、サービスを自動であげてくれるのは便利です。


【改訂履歴】作成:2011/11/08  改訂: -/-/-
【参考リンク】

Monit Monitor processes, files, devices and remote systems オフィシャルページ

*
Copyright © 1996,1997-2006,2007- by F.Kimura,