예제 #1
0
    def metric():
        metrics = []
        su = SqlUtil()
        # 获取监控表
        dt_now = datetime.now()
        dt = DateTools.update_time(dt_now,
                                   minutes=conf.monitor_frequency,
                                   add=False)
        monitors, err = su.get_monitor_data_gt_time(Monitor, time=dt)
        if err:
            print "%s Error: %s" % (DateTools.date_format(dt), err)
        else:
            for monitor in monitors:
                metrics.append(
                    'private_monitor_env{cluster="%s",type="%s", time="%s", detail="%s"} %d'
                    % (monitor.cluster, monitor.type, monitor.time,
                       monitor.detail, monitor.status))

        # 获取服务主动监控表
        clusters, err = su.get_cluster()
        if err:
            print "%s Error: %s" % (DateTools.date_format(dt), err)
        else:
            for cluster in clusters:
                metrics.append(
                    'private_monitor_env{cluster="%s",type="connect", time="%s", detail="%s"} %d'
                    % (cluster.name, cluster.last_update, cluster.detail,
                       cluster.status))
        return metrics
예제 #2
0
 def add_cluster(data):
     cluster = Cluster()
     cluster.name = data['name']
     cluster.detail = data['detail']
     cluster.alias = data['alias']
     cluster.ip = data['ip']
     cluster.port = data['port']
     cluster.normal_ports = data['normal_ports']
     cluster.create_time = DateTools.date_format(datetime.now())
     cluster.last_update = DateTools.date_format(datetime.now())
     return sql.insert_one_sql(cluster)
예제 #3
0
def test_insert_cluster():
    sql = SqlUtil()
    cluster = Cluster()
    cluster.name = "HuaweiCloudera"
    cluster.detail = "华为数融大数据集群"
    cluster.alias = "华为数融大数据集群"
    cluster.ip = "116.63.229.215"
    cluster.port = "7180"
    cluster.normal_ports = "ALL"
    cluster.create_time = DateTools.date_format(datetime.now())
    cluster.last_update = DateTools.date_format(datetime.now())
    print sql.insert_one_sql(cluster)
예제 #4
0
def test_insert_monitor():
    sql = SqlUtil()
    monitor = Monitor()
    monitor.time = DateTools.date_format(datetime.now())
    monitor.cluster = "test"
    monitor.type = "port"
    monitor.status = True
    monitor.detail = "测试"
    print sql.insert_one_sql(monitor)
예제 #5
0
def test_update():
    su = SqlUtil()
    obj, err = su.get_cluster(8)
    if err:
        print err
        return
    print obj
    obj.status = False
    obj.last_update = DateTools.date_format(datetime.now())
    su.update_cluster_sql(obj)
예제 #6
0
 def update_cluster(cluster_id, data):
     cluster = Cluster()
     cluster.id = cluster_id
     cluster.name = data['name']
     cluster.detail = data[
         'detail'] + "update Time: " + DateTools.date_format(datetime.now())
     cluster.alias = data['alias']
     cluster.ip = data['ip']
     cluster.port = data['port']
     cluster.normal_ports = data['normal_ports']
     return sql.update_cluster_sql(cluster)
예제 #7
0
 def exec_check_port(cluster):
     if not isinstance(cluster, Cluster):
         return
     try:
         telnetlib.Telnet(host=cluster.ip, port=cluster.port)
         cluster.status = True
     except Exception as e:
         cluster.status = False
         cluster.detail = e.message
     cluster.last_update = DateTools.date_format(datetime.now())
     su = CronCluster.su
     su.update_cluster_sql(cluster)
예제 #8
0
 def get_status(cluster, data):
     if data['cluster'] != cluster:
         raise Exception(u"传入参数有误,请重新传入")
     if not data['detail'] or not data['type']:
         raise Exception(u"传入参数有误,请重新传入")
     if data['status'] != "success" and data['status'] != "fail":
         raise Exception(u"传入参数有误,请重新传入")
     monitor = Monitor()
     monitor.cluster = cluster
     monitor.detail = data['detail']
     monitor.status = True if data['status'] == "success" else False
     monitor.type = data['type']
     monitor.time = DateTools.date_format(datetime.now())
     ct = CronMonitor()
     ct.insert_monitor(monitor)
     return "Well"
예제 #9
0
 def exec_check_firewalld(cluster):
     if not isinstance(cluster, Cluster):
         return
     # 如果是全开放,则退出
     if cluster.normal_ports == "ALL":
         return
     # 定义monitor类
     monitor = Monitor()
     monitor.status = True
     monitor.detail = "%s" % cluster.ip
     monitor.cluster = cluster.name
     monitor.time = DateTools.date_format(datetime.now())
     monitor.type = "firewalld"
     # 定义检查端口
     normal_ports = []
     out_ports = cluster.normal_ports.split(",")
     for port in out_ports:
         if '-' in port:
             start, end = port.split('-')
             normal_ports.append(range(int(start), int(end) + 1))
         else:
             normal_ports.append(int(port))
     ports = [
         22, 80, 443, 7180, 8088, 8888, 11000, 10000, 8998,
         random.randint(15000, 65535),
         random.randint(15000, 65535),
         random.randint(15000, 65535)
     ]
     [ports.remove(port) for port in normal_ports if port in ports]
     for port in ports:
         try:
             telnetlib.Telnet(host=cluster.ip, port=port)
             if monitor.status:
                 monitor.status = False
                 monitor.detail += u"%s 可以正常连接,与预期状态不符合" % port
         except Exception:
             pass
     monitor.detail += u"非法端口检查正常" if monitor.status else u"非法端口检查不正常"
     CronCluster.su.insert_one_sql(monitor)
예제 #10
0
def test_date_format():
    dt = datetime.now()
    print DateTools.date_format(dt)