あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

monit 5.12 を tar.gz になってるおソースからインストールした

むっちゃ久しぶりに monit インストールしたけどなんかウェブサイトがシャレオツになってて悲しい。昔の無骨なウェブサイトほんとすこ。M/MONIT と MONIT が区別つかないようなデザインだった頃の monit のウェブサイトはほんとひで。

ロケ地:CentOS 6.6 (Final)

monit をインストールする

monit インストール記事書いたの5年以上前だったんすねえ。MH3 発売日当日とか感慨もひとしおですよ。水中戦ほんとひで。

[root@localhost ~]# cd /usr/local/src
[root@localhost ~]# wget http://mmonit.com/monit/dist/monit-5.12.tar.gz
[root@localhost ~]# tar -zxvf monit-5.12.tar.gz
[root@localhost ~]# cd monit-5.12
[root@localhost ~]# ./configure --prefix=/usr/local
[root@localhost ~]# make
[root@localhost ~]# make install

prefix は好きな所指定するなりしてください、決まりがなければ prefix 指定せずに、configure だけでもいいよ。

PAM ないとかエラーメッセージ出てきたよ
configure: error: PAM enabled but headers or library not found, install the PAM development support or run configure --without-pam

pam-devel パッケージが無いのでだーめぽ、って起こられてます。yum list したら pam パッケージは入ってた。yum install しましょ。

[root@localhost ~]# yum install pam-devel.x86_64

こけた人はこれで ./configure からやりなおせばコンパイル終わるはずです。

monit-5.X/contrib/ がない!

contrib 以下に init.d 用に配置するスクリプトがあるのにないじゃん!どうすんの!と思ったけど、system/startup/ 以下に rc.monit がありました。これを配置すればいいですね。
ちなみに書庫解凍した直下にある monitrc は、monit 自身のコンフィグファイルでう。気をつけよう!

[root@localhost ~]# cp system/startup/rc.monit /etc/init.d/monit
[root@localhost ~]# chmod a+x /etc/init.d/monit

ちなみにこのファイル、monit の実行ファイルが「MONIT=/usr/bin/monit」にインストールされるもんだとして書いてあるので、prefix つけた人はそれぞれ記述変更してください。僕のように --prefix=/usr/local つけた人はこう。

vi /etc/init.d/monit
->
- 変更前 :
MONIT=/usr/bin/monit
+ 変更後 :
MONIT=/usr/local/bin/monit
設定ファイルを移動させて起動のじゅーんび

解凍した書庫の直下にある monitrc に従って

  • キューをためるディレクトリ : /var/monit
  • monit の監視サービス定義ファイル置き場 : /etc/monit.d
  • monit 自身のコンフィグファイル : /etc/monitrc
[root@localhost ~]# mkdir /var/monit
[root@localhost ~]# mkdir /etc/monit.d
[root@localhost ~]# touch /etc/monitrc
[root@localhost ~]# vi /etc/monitrc
-> へんしう
[root@localhost ~]# monit -c /etc/monitrc -t
-> syntax チェックしよう

これでコンフィグの内容が構文エラーでなければとりあえず init.d 以下のスクリプト叩けば動くはずですわ。

追記1:起動しない
[root@localhost monit.d]# monit -c /etc/monitrc -t
The control file '/etc/monitrc' must have permissions no more than -rwx------ (0700); right now permissions are -rw-r--r-- (0644).

は?

[root@localhost monit.d]# chmod 644 /etc/monitrc
[root@localhost monit.d]# monit -c /etc/monitrc
The control file '/etc/monitrc' must be owned by you.

は?(二度目
検索したら Stray Penguin - Linux Memo (monit) 兄貴が「つまり、普通は root で管理するので、root:root 600 が妥当だ。」と書かれてらっしゃったので従ってみました。

[root@localhost monit.d]# chmod 600 /etc/monitrc
[root@localhost monit.d]# monit -c /etc/monitrc -t
Control file syntax OK
[root@localhost monit.d]# /etc/init.d/monit start

やったぁ!

追記2:やれてない

起動して monit status 叩いたら /var/log/monit.log に。

[JST Mar  4 22:29:25] critical : AssertException: path at src/socket.c:228
aborting..

は?(´・ω・`)
mysql だけ監視してたので、mysql 手動で落としてみたけど通知メールも飛んでこないしなんかおかしいすねこれ。

追記3 :追記2の解決策

monit-5.6 までバージョン落としても解決せずなんでや!と思ってたけど、つまりこういうことか!

[root@localhost ~]# vi /etc/monitrc
->
# http status
set httpd port 2812 and
    use address 0.0.0.0
    allow localhost
    allow AUTH-USER:AUTH-PASS

元々上記のエラー出てた状態では、monitrc に http でステータス見れる機能なんざいらん!削除しとくやで!してたんですが、とにかく CLI だろうとなんdなろうと、monit コマンドから monit deamon に接続する必要がある機能は、この set httpd で monit の内部ウェブサーバ立ち上げておかないとだめなんすねえ。
という訳で、ウェブからステータス確認はできなくていいので、せめてもの抵抗で allow を localhost のみとする!これで CLI から monit status 叩いてステータス取得できるようになったし、定義ファイルで監視に追加した mysql のプロセスも、死んだらちゃんと検知して連絡と、再起動してくれました。やったー。

おまけ

monit 5.12 で set httpd を書いていない場合。

critical : AssertException: path at src/socket.c:228
aborting..

monit 5.6 で set httpd を書いていない場合。

error    : monit: error connecting to the monit daemon