系统停机时需要提醒

时间:2017-05-11 12:01:46

标签: linux linux-kernel operating-system centos7 rhel6

当服务器出现故障时,我需要一个小警报(HTTP req或any)。我查了很多应用程序,比如nagios,servercheck等......所有这些应用程序只监控远程服务器。我只有两台服务器要监控。因此,如果我的服务器(10.172.65.124)发生故障,它就会发出警报。我不想再维护一台服务器来监控它。我正在使用rhel6& centos7。任何建议

3 个答案:

答案 0 :(得分:1)

这是一个用于此目的的python脚本。它使用sendmail发送您的电子邮件,这将需要从启用了sendmail的Linux服务器运行它。更改网址以指向您正在监控的网址。如果您运行此脚本,它将检查stackoverflow。

这使用urllib检查尝试加载网址时收到的状态代码。如果从HTTP请求获得200以外的状态,则预计该站点将关闭。

要监视服务器,您应该在独立于您的虚拟主机的服务器或桌面上运行该脚本,否则当您的服务器由于多种原因而崩溃时,您将不会收到警报。

#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"] = "me@youremail.com"
msg["To"] = "me@youremail.com"
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)

答案 1 :(得分:0)

我建议创建简单的脚本来ping机器(他们可以互相监控),如果ping超时发送电子邮件。

类似这样的事情

#!/bin/bash
SERVERIP=IP ADDRESS
NOTIFYEMAIL=test@example.com

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

答案 2 :(得分:0)

如上面给出的脚本,您可以配置普通的bash脚本来监控服务器http请求或任何其他服务请求,这样如果它没有得到答复,那么你将收到邮件。

监控网络服务的正常应用程序是免费的,每个用户的网站数量有限,您也可以使用此服务。

http://uptimerobot.com/