当服务器出现故障时,我需要一个小警报(HTTP req或any)。我查了很多应用程序,比如nagios,servercheck等......所有这些应用程序只监控远程服务器。我只有两台服务器要监控。因此,如果我的服务器(10.172.65.124)发生故障,它就会发出警报。我不想再维护一台服务器来监控它。我正在使用rhel6& centos7。任何建议
答案 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请求或任何其他服务请求,这样如果它没有得到答复,那么你将收到邮件。
监控网络服务的正常应用程序是免费的,每个用户的网站数量有限,您也可以使用此服务。