python监控服务器状态

发布时间:2017-11-18 00:47:56编辑:Run阅读(7242)

    主要监控域名能否访问,还有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 如图blob.png

    运行脚本

    blob.png

    红色框是我添加的一个不存在的域名,这里很明显ping失败了,证明程序是没有问题,redis的状态也正常

    再把redis关了,在运行一次脚本,看看redis的状态是否正常

    blob.png

    关闭后,redis状态获取失败,脚本正常!

    这个程序还比较简单,如有兴趣,也可以自己添加一些更多的服务进来监控

关键字

上一篇: python调用ip查询接口

下一篇: Linux安装NFS