404または403ページでHTTPステータスを監視しようとしています。ご存じのように、Monitはこれらのページを接続の失敗と見なしますが、どうすれば変更できますか。 404または403ページが表示されることを監視したいだけです。
可能であれば、この構成で確認する必要があります。
これは私のチェック設定です:
check process httpd with pidfile /var/run/httpd.pid
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed Host hostname port 80
protocol HTTP request "/"
then exec "/bin/bash -c '/bin/echo -e "hostname\thttpd\t3\tFAILED" | /usr/sbin/send_nsca -H nagiosserver -c /etc/send_nsca.cfg; /usr/bin/monit restart nginx;'"
バージョン5.8以降、Monitには status
オプション があります。
[〜#〜] status [〜#〜]オプションを使用して、HTTPサーバーから返されたHTTPステータスコードを明示的にテストできます。使用しない場合、返されるステータスコードが400以上の場合、httpプロトコルテストは失敗します。ステータス修飾子を使用して、この動作を上書きできます。
たとえば、ページが存在しないことをテストするには(この場合は404を返す必要があります):
if failed port 80 protocol http request "/non/existent.php" status = 404 then alert
status
は私には機能しませんでした(monit 5.6)。 5.8からサポートされていると思いますか?
Curlを使用するスクリプトが作成されました。
#!/bin/bash
# source: /etc/monit/bin/http-check.sh
url="http://user:[email protected]/test_link/index.php"
response=$(curl -sL -w "%{http_code}\\n" $url | grep 404)
if [ "$response" = "404" ]
then
exit 0
else
exit 1
fi
次に、次のモニター構成を追加しました
check program http-check with path "/etc/monit/bin/http-check.sh"
if status != 0
then alert