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 のプロセスも、死んだらちゃんと検知して連絡と、再起動してくれました。やったー。