2011-04-28 10 views
3

作成することがないhttpd.pidを起こしMONITは、ソリューションは、この行を置き換えることでした

check process httpd with pidfile /var/run/httpd/httpd.pid 

そして私はまた、 'グループのapache' を削除しました。

オリジナルのポスト:

CentOSの上Monitをインストール、およびApache(httpd)がサービスのアラートを設定した後、サービスはもはや/var/run/httpd.pidファイルを作成します。

httpdサービスが正しく動作しています。その上に

、それが十分ではない場合として、MONITは、サービスの状態を報告するよう:実行は当然

を失敗し、そのようなサービスを再起動する唯一の方法は、「再起動」以来、それを殺すことですスクリプトには実行中のプロセスは表示されません。

これらは/etc/monit.d/monitrcファイルの内容は以下のとおりです。 "サービスのhttpdの再起動" の

set daemon 10 
set logfile syslog facility log_daemon 
set mailserver localhost 
set mail-format { from: [email protected] } 
set alert [email protected] 
set httpd port 2812 and 
#  SSL ENABLE 
#  PEMFILE /var/certs/monit.pem 
allow user:password 

check process apache with pidfile /var/run/httpd.pid 
group apache 
start program = "/etc/init.d/httpd start" 
stop program = "/etc/init.d/httpd stop" 
if cpu is greater than 180% for 1 cycles then alert 
if totalmem > 1200 MB for 2 cycles then restart 
if children > 250 then restart 

check process sshd with pidfile /var/run/sshd.pid 
start program "/etc/init.d/sshd start" 
stop program "/etc/init.d/sshd stop" 
if failed port 22 protocol ssh for 5 cycles then restart 
if 5 restarts within 25 cycles then timeout 

出力:

Stopping httpd:           [FAILED] 
Starting httpd: (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 
no listening sockets available, shutting down 
Unable to open logs 
                 [FAILED] 

すべてのヘルプは大歓迎されます。

+0

「monit restart httpd」を意味しませんか? "monit stop httpd"と "monit start httpd"はどうですか? monit stop/start/restart sshdは問題ありませんか? –

+0

ありがとうございました。 再起動するときは、停止し、Monitからhttpdで起動してください。メッセージは表示されません。しかし、サービスは停止されていません。 sshdを停止しようとすることはできません。それは私のマシンから私を去ります:-) – bizna

+0

ここにあるアドバイスを使ってみてください:http://stackoverflow.com/questions/3356476/debugging-monit/4439403#4439403 monitコールが停止したときに何が起きているのかをよく見てください。 monitrcのstopコマンドは、コマンドラインから呼び出すときに動作すると仮定します。 "monit restart sshd"について私はまだ正気のチェックとしてそれを試してみることをお勧めしたいと思います。何らかの理由で、何らかの理由でサービスのMonitを再起動すると、最終的に新しいものを作成せずにプロセスIDファイルが削除されるという問題がありました:-) –

答えて

5

ストッププログラムを/usr/sbin/httpd -k stopに置き換えてください。それは私のために働く。

+0

はFedora 8で私のために働いた。ありがとう – ShadyKiller

+1

CentOS 5でも動作する – alanthing

0

私は同じ問題を抱えていましたが、/usr/sbin/httpd -k stopはこれがまだpidファイルからプロセスIDを検索しようとしているので、役に立たないようです。

私はstop program = "/usr/bin/killall httpd"を選択しました。私はこれが非常にエレガントな(おそらくオープンリクエストを殺す)とは思わないが、私はApacheを再起動し、pidファイルをmonitによって作り直すことができる唯一の方法でした。

0

私はmonitが 'stop'として再起動していると思います。新しいプロセスを開始する前に '停止'が完了するのを待っていないので、不適切な時間にpidファイルを削除しています。少なくとも、これはすべてのことで修正した後の私の結論です。

「stop」ステートメントの後にmonitをスリープさせることでこの問題を修正した人への参照が見つかりました。

個人的には、httpサーバがダウンしているときに「再起動」を「開始」に置き換えても問題ないとわかりました。

関連する問題