Hatena::Groupfreebsd

弧月いうの FreeBSD 的な何か このページをアンテナに追加 RSSフィード

2013-03-30おひさしぶりです

Monit を導入してみた 00:24 Monit を導入してみた - 弧月いうの FreeBSD 的な何か を含むブックマーク はてなブックマーク - Monit を導入してみた - 弧月いうの FreeBSD 的な何か Monit を導入してみた - 弧月いうの FreeBSD 的な何か のブックマークコメント

tiarra とか tig とか fig とか cron で起動してあとはほったらかし、だったのだけど、まあちょっとなんとかするかいと思い立ち*1、Monit から起動と監視をできるようにしてみた。


Monit のインストール

$ sudo portinstall sysutils/monit

/usr/local/etc/ に monitrc.sample というのができてるので、

$ cd /usr/local/etc
$ sudo mv monitrc.sample monitrc

などして、これを編集する。

set daemon 60
set logfile syslog facility log_daemon
set mailserver smtp.gmail.com port 587 username "youraccount@gmail.com" password "p@ssw0rd" using tlsv1
set alert youraccount@gmail.com
include /usr/local/etc/monit/*.conf

とりあえずこんな感じ。ちなみにこの set mailserver の行は GmailSMTP を使う設定例で、Monit を動かすサーバで SMTP サービスが動いてるなら "set mailserver localhost" だけでも OK。

※2013/03/31追記:2段階認証をオンにしてる場合、「アプリケーション固有のパスワード」を設定しないといけないので注意。

あと、動かしたいプロセス個別の設定ファイルの置き場所は /usr/local/etc/monit/ 以下にしてみた。ので、

$ sudo mkdir /usr/local/etc/monit

もお忘れなく。

あとは /etc/rc.conf に monit_enable="YES" を追記して、sudo /usr/local/etc/rc.d/monit start をすればとりあえず Monit 自体は動き始める。


プロセスの設定

例として TweetIrcGateway でやってみる。tig 自体の設定は割愛。

tig を start|stop したり、pid ファイルを作ったりするスクリプトを作る。どこでもいいけど $HOME/bin/tig-run にした。

環境変数をなんとかするのめんどくさいらしいので右にならえで絶対パス。

#!/bin/sh

# サーバ上のユーザ名 : yukogets
# tig のインストール先 : $HOME/bin/TwitterIrcGateway
# 適宜読み替えてくださいまし
case $1 in
  start)
    cd /home/yukogets/bin/TwitterIrcGateway && /usr/local/bin/mono ./TwitterIrcGatewayCLI.exe --encoding=utf-8  >/dev/null 2>&1 &
    echo $! > /home/yukogets/bin/TwitterIrcGateway/tig.pid
    ;;
  stop)
    kill -KILL `cat /home/yukogets/bin/TwitterIrcGateway/tig.pid`
    rm /home/yukogets/bin/TwitterIrcGateway/tig.pid
    ;;
  *)
    echo "usage: tig-run {start|stop}"
    ;;
esac
exit 0

これで tig-run start|stop してみて、ちゃんと tig が起動したり停止したり正しく pid ファイルが作られたりすることを確認しておく。

/usr/local/etc/monit/tig.conf を作成する。

check process TweetIrcGateway with pidfile /home/yukogets/bin/TwitterIrcGateway/tig.pid
every 2 cycle
group irc
start program = "/home/yukogets/bin/tig-run start"
  as uid yukogets and gid users
stop program = "/home/yukogets/bin/tig-run stop"
if failed port 16668 then restart

as uid hoge and gid fuga で実行するユーザを設定できる。省略すると root 権限で動作する。

16668番ポート(tig が使用するポート)の反応が無いと、死んだとみなして再起動させる。


反映

$ sudo /usr/local/etc/rc.d/monit reload

で設定ファイルを再読込。あとは自動的に tig を起動して監視してくれる。


まとめ

とりあえず動かすだけならわりと簡単だった。

他にも、メモリや CPU の使用量が閾値を超えたらアラートメールを飛ばすとか、プロセス以外にストレージの使用量やファイルのパーミッションなどいろんなものを監視したりもできるっぽい。

*1:久々に予定のない週末だったので

ゲスト



トラックバック - http://freebsd.g.hatena.ne.jp/yukogets/20130330