web-dev-qa-db-ja.com

404ページのモニターモニターのhttpステータス

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;'"
12
mYzk

バージョン5.8以降、Monitには statusオプション があります。

[〜#〜] status [〜#〜]オプションを使用して、HTTPサーバーから返されたHTTPステータスコードを明示的にテストできます。使用しない場合、返されるステータスコードが400以上の場合、httpプロトコルテストは失敗します。ステータス修飾子を使用して、この動作を上書きできます。

たとえば、ページが存在しないことをテストするには(この場合は404を返す必要があります):

if failed
   port 80
   protocol http
   request "/non/existent.php"
   status = 404
then alert
13
n.st

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
6
czerasz