2017-05-11 7 views
1

サーバがダウンしているときに小さなアラーム(HTTP reqまたはany)が必要です。私はNagios、サーバーチェックなどのような多くのアプリケーションをチェックしました...これらのアプリケーションはすべてリモートサーバーだけを監視します。私は監視するサーバーが2つしかありません。私のサーバー(10.172.65.124)がダウンしてしまうと、アラームが送信されます。私はこれを監視するもう一つのサーバーを維持したくない。私はrhel6 & centos7を使用しています。任意の提案システムがダウンしているときに警告が必要

答えて

0

私はマシンをpingする(彼らはお互いを監視することができます)と、pingタイムアウトが電子メールを送信するように単純なスクリプトを作成することをお勧めします。それは回答を得られないならば、あなたがメールを取得するので、サーバーのhttpリクエストやその他のサービス要求を監視するために、通常のbashスクリプトを設定することができ、スクリプト上で与えられたように、この

#!/bin/bash 
SERVERIP=IP ADDRESS 
[email protected] 

ping -c 3 $SERVERIP > /dev/null 2>&1 
if [ $? -ne 0 ] 
then 
    # Use your favorite mailer here: 
    mailx -s "Server $SERVERIP is down" -t "$NOTIFYEMAIL" < /dev/null 
fi 
+0

私はすでに、私のサーバーを外部から監視したくないと述べました。私たちはサーバー内の何かを行うことができます。 –

+0

ネットワークの停止やマシンがクラッシュすると、少なくとも私の知る限り、クラッシュするとは言えません。あなたが2台のサーバしか持っていないと、互いに監視するように設定できるので、他のサーバが死んでも、別のサーバが通知を送ることができると言ったのです。 –

+0

私の場合、両方のシステムが同じスイッチ、同じ電源カード、および同じ負荷に接続されています。 1つがダウンすると最終的に両方ともダウンします –

0

よう

何か。

ウェブサービスを監視するための通常のアプリケーションがあります。これは、ユーザーごとに限られた数のサイトで無料で利用できます。スクリプト以下

http://uptimerobot.com/

0

あなたには、いくつかのインターフェイスを追加する必要がある場合はインタフェースの動作状態をチェックします、あなたの願い

#!/bin/bash 
while true 
do 
     if [ $(cat /sys/class/net/eth0/operstate) != "up" ]; then 
       sleep 1 
       #send mail for logging 
     fi 
done 
1

ごとに警告を行うここでの目的を果たしますPythonスクリプトです。 sendmailを使用して電子メールを送信します。この場合、sendmailが有効になっているLinuxサーバーから電子メールを実行する必要があります。監視しているURLを指すようにURLを変更します。このスクリプトを実行すると、stackoverflowがチェックされます。

これは、urllibを使用して、URLを読み込もうとしたときに受け取るステータスコードをチェックします。 HTTP要求から200以外のステータスが取得された場合は、サイトがダウンしていることが予想されます。

サーバーを監視するには、Webホストとは独立したサーバーまたはデスクトップでスクリプトを実行する必要があります。そうしないと、さまざまな理由でサーバーがクラッシュしたときに警告されません。

#Import time to allow you to sleep the script, urllib to load the site, subprocess will allow you to run a process on the machine outside of the script (in this instance it's send mail) 
import time 
import urllib 
from email.mime.text import MIMEText 
from subprocess import Popen, PIPE 

#The url being monitored. 
url = "http://www.stackoverflow.com" 

#The contents of the email 
msg = MIMEText(url + " is not responding. Please investigate.") 
msg["From"] = "[email protected]" 
msg["To"] = "[email protected]" 
msg["Subject"] = url + "is not responding" 

#This loops while the script is running. 
# It gets the status returned from the urllib call, if it's not 200 it will email the email contents above. 
while True: 
    status = urllib.urlopen(url).getcode() 

    if status <> 200: 
     #This is what sends the email. If you don't have sendmail then update this. 
     p = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE) 
     p.communicate(msg.as_string()) 
    #The number of seconds the loop will pause for before checking again. I set it to 60. 
    time.sleep(60) 
+0

非常に良い答えです。そして非常に良い説明。返信いただきありがとうございます。しかし、私はシステムの内部から監視する必要があります。しかし、システムの外部ではありません。それはできますか? –

+0

問題はありません。システムの内部から監視したいと言っているときを明確にすることはできますか? httpサービスがクラッシュしたとき、または正常にシャットダウンしたときに、httpサービスに通知することを意味しますか?私が持っている提案の1つは、サービスで何が起きているのかを示すerror.logをgrepするためのログパーサーを作成することですが、それはシステム外にあります。または、ここで参照されているもののようなものを行うことができます:https://serverfault.com/questions/16243/shell-script-to-execute-something-when-one-of-the-daemon-dies – Dom

関連する問題