主要监控域名能否访问,还有redis服务是否正常
# coding: utf-8
__author__ = 'www.py3study.com'
import os
import time
import subprocess
import socket
class testing_server(object):
def __init__(self):
# 需要检测的域名,最后添加了一个不存在的域名,用来测试脚本的正确性,如有多个域名可往这个list里面添加
self.domain_name_list = ['www.py3study.com', 'py3study.com', 'm.py3study.com', 'zabbix.admin.com']
self.ping_server_call()
self.check_aliveness()
def ping_server_call(self):
fnull = open(os.devnull, 'w')
for i in self.domain_name_list:
domain_name = i
#使用subprocess模块,用来过滤掉命令输出和返回信息
result = subprocess.call('ping ' + domain_name + ' -n 3', shell=True, stdout=fnull, stderr=fnull)
current_time = time.strftime('%Y%m%d-%H%M%S', time.localtime())
time.sleep(1)
if result:
print('时间: {} 域名 {} ping fail'.format(current_time, domain_name))
else:
print('时间: {} 域名 {} ping ok'.format(current_time, domain_name))
fnull.close()
def check_aliveness(self):
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(1)
ip = '192.168.40.250' #ip对应redis服务器的ip地址
port = 6379 #端口默认是6379,如果修改了redis的端口,这里也必须改
try:
sk.connect((ip, port))
print('server:{} 端口:{} redis is OK !'.format(ip, port))
return True
except Exception:
print('sever:{} 端口:{} redis is NOT OK !'.format(ip, port))
return False
finally:
sk.close()
if __name__ == '__main__':
st = testing_server()
上面的脚本还做了redis状态监控,这里测试,开启本地的redis服务(windows下面的安装很简单,就不写了)
开启redis,使用命令redis-server.exe redis.windows.conf 如图
运行脚本
红色框是我添加的一个不存在的域名,这里很明显ping失败了,证明程序是没有问题,redis的状态也正常
再把redis关了,在运行一次脚本,看看redis的状态是否正常
关闭后,redis状态获取失败,脚本正常!
这个程序还比较简单,如有兴趣,也可以自己添加一些更多的服务进来监控