Example #1
0
 def run(self):
     try:
         server_name = main_fonf.get_prop("server", "name")
         target_urls = main_fonf.get_prop("monitor", "urls")
         target_hosts = main_fonf.get_prop("monitor", "hosts")
         html_info = self.monitor_urls(target_urls)
         html_info += self.monitor_hosts(target_hosts)
         if html_info.strip() != '':
             mail_head = '<table border="0" cellspacing="0" cellpadding="0" ' \
                         'style="font-family:"微软雅黑",Helvetica,Arial,sans-serif;font-size:14px " width="100%"> \
                      <tbody> \
                                 <tr> \
                                     <td style="font-family:Helvetica,Arial,sans-serif;font-size:14px;"> \
                                     <table width="100%" border="3" cellpadding="5" cellspacing="0" > \
                                             <tbody> \
                                                 <tr><td>监控地址</td><td>状态</td><td>描述</td></tr>'
             mail_foot = '</tbody> \
                                                 </table> \
                                                </td> \
                                           </tr> \
                                </tbody> \
                             </table>'
             mail_info = mail_head + html_info + mail_foot
             self.send_mail(server_name, mail_info)
     except Exception, runEx:
         LogUtil.error(runEx)
Example #2
0
def _execute(command):
    try:
        config = FileUtils.get_instance('config.ini')
        containerId = command["serverId"]
        c = docker.Client(base_url='unix://var/run/docker.sock',
                          version=config.get_prop("docker-config", "api"),
                          timeout=10)
        c.remove_container(container=containerId)
        time.sleep(5)
        log = "true"
        output = base64.encodestring(log)
        state = '1'
        param = [
            "{\"id\":\"" + command["id"] + "\",\"state\":\"" + state +
            "\",\"mac\":\"" + MachineUtil.get_mac_address() + "\",\"msg\":\"" +
            output + "\",\"version\":\"" + command["version"] + "\"}"
        ]
        AosServerService.route_service("ThriftApiService", "editState", param)
    except Exception, ex:
        LogUtil.error(ex)
        log = ("Error {0}".format(str(ex)))
        output = base64.encodestring(log)
        state = '1'
        param = [
            "{\"id\":\"" + command["id"] + "\",\"state\":\"" + state +
            "\",\"mac\":\"" + MachineUtil.get_mac_address() + "\",\"msg\":\"" +
            output + "\",\"version\":\"" + command["version"] + "\"}"
        ]
        AosServerService.route_service("ThriftApiService", "editState", param)
Example #3
0
 def _docker_containers():
     try:
         line = commands.getstatusoutput(
             "docker ps -a  | grep -v 'CONTAINER'")
         r = json.dumps(line[1].replace("\n", "xiaodoufenge"))
         return r
     except Exception, ex:
         LogUtil.error(ex)
         return "[]"
Example #4
0
 def _docker_status(api):
     try:
         c = docker.Client(base_url='unix://var/run/docker.sock',
                           version=api,
                           timeout=10)
         r = c.version()
         return "1"
     except Exception, ex:
         LogUtil.error(ex)
         return "2"
Example #5
0
 def _docker_images(api):
     try:
         c = docker.Client(base_url='unix://var/run/docker.sock',
                           version=api,
                           timeout=10)
         r = json.dumps(c.images())
         return r
     except Exception, ex:
         LogUtil.error(ex)
         return "[]"
Example #6
0
 def connect(self):
     try:
         if self.timeout:
             self._socket.setTimeout(self.timeout)
         if not self.is_open():
             self._transport = self._transport_factory.getTransport(
                 self._socket)
             self._transport.open()
     except Exception, e:
         LogUtil.error(e)
         self.close()
Example #7
0
 def nginx_run(self):
     try:
         server_response = self._nginx_conf()
         if server_response is None:
             return
         server_responses = server_response.split("#EDIT#")
         if len(server_responses) < 1:
             return
         server_response_nginx = json.loads(server_responses[0])
         self._do_action(server_response_nginx)
     except Exception, ex:
         LogUtil.error(ex)
Example #8
0
 def route_service(service, method, param):
     try:
         aos_client = AosServer(
             AosServerService.config.get_prop("aos-config", "server_ip"),
             AosServerService.config.get_prop("aos-config", "server_port"))
         result = aos_client.route_service(service, method,
                                           json.dumps(param))
         if result is None or result.model is None:
             return None
         LogUtil.in_out(service, method, param, result.model)
         return result.model
     except Exception, ex:
         LogUtil.error(ex)
Example #9
0
 def run(self):
     try:
         server_response = self._regist_node()
         if server_response is None:
             return
         server_responses = server_response.split("#ADDNODE#")
         if len(server_responses) < 2:
             return
         server_response_command = json.loads(server_responses[0])
         server_response_config = json.loads(server_responses[1])
         self._do_config(server_response_config)
         self._do_action(server_response_command)
     except Exception, ex:
         LogUtil.error(ex)
Example #10
0
 def _docker_restart(mac, api):
     try:
         output = os.popen("/bin/bash " + sys.path[0] +
                           "/docker.sh ").read()
         c = docker.Client(base_url='unix://var/run/docker.sock',
                           version=api,
                           timeout=10)
         r = c.version()
         param = ["{\"mac\":\"" + mac + "\"}"]
         AosServerService.route_service("ThriftApiService", "startAll",
                                        param)
         return "1"
     except Exception, ex:
         LogUtil.error(ex)
         return "2"
Example #11
0
 def monitor_urls(self, target_urls):
     html_info = ""
     if target_urls is None or len(target_urls) == 0:
         return
     for target_url in target_urls.split(","):
         try:
             result = self.monitor_url(target_url)
             if result is not None :
                 self.alarm("監控Url地址失敗:[%s]" % target_url)
                 html_info += "<tr><td><a href='%s'><span style='color:#F44336;'>%s</span></a></td><td>" \
                              "<span style='color:#F44336;'>%s</span></td><td><span style='color:#F44336;'>" \
                              "%s</span></td></tr>" % (target_url, target_url, "Fail", result.message)
         except Exception, moUsEx:
             LogUtil.error(moUsEx)
             self.alarm("監控Url地址失敗:[%s]" % target_url)
             html_info += "<tr><td><a href='%s'><span style='color:#F44336;'>%s</span></a></td><td>" \
                          "<span style='color:#F44336;'>%s</span></td><td><span style='color:#F44336;'>" \
                          "%s</span></td></tr>" % (target_url, target_url, "Fail", moUsEx.message)
Example #12
0
 def monitor_hosts(self, target_hosts):
     html_info = ""
     if target_hosts is None or len(target_hosts) == 0:
         return
     for target_host in target_hosts.split(","):
         try:
             result = self.monitor_host(target_host)
             if result:
                 self.alarm("監控IP地址失敗:[%s]" % target_host)
                 html_info += "<tr><td><a href='%s'><span style='color:#F44336;'>%s</span></a></td><td>" \
                              "<span style='color:#F44336;'>%s</span></td><td><span style='color:#F44336;'>" \
                              "%s</span></td></tr>" % (target_host, target_host, "Fail", result)
         except Exception, moHsEx:
             LogUtil.error(moHsEx)
             self.alarm("監控IP地址失敗:[%s]" % target_host)
             html_info += "<tr><td><a href='%s'><span style='color:#F44336;'>%s</span></a></td><td>" \
                          "<span style='color:#F44336;'>%s</span></td><td><span style='color:#F44336;'>" \
                          "%s</span></td></tr>" % (target_host, target_host, "Fail", moHsEx.message)
Example #13
0
def _execute(command):
    LogUtil.info("程序检测中")
    mac = MachineUtil.get_mac_address()
    param = ["{\"mac\":\"" + mac + "\"}"]
    s1 = AosServerService.route_service("ThriftApiService",
                                        "getMonitoringData", param)
    d1 = json.loads(s1)
    for k1 in d1:
        if k1["serverType"] == "5001":
            os.popen("sh " + sys.path[0] + "/api/extend/6000/mysql.sh " +
                     k1["serverUserName"] + ' ' + k1["serverPassword"] + ' ' +
                     k1["projectDir"] + ' ' + k1["projectPort"]).read()
        if k1["serverType"] == "5002":
            os.popen("su - " + k1["user"] + " -s /bin/bash " + sys.path[0] +
                     "/api/extend/6000/redis.sh " + k1["serverUserName"] +
                     ' ' + k1["serverPassword"] + ' ' + k1["projectDir"] +
                     ' ' + k1["projectPort"]).read()
        if k1["serverType"] == "5003":
            os.popen("su - " + k1["user"] + " -s /bin/bash " + sys.path[0] +
                     "/api/extend/6000/mongodb.sh " + k1["serverUserName"] +
                     ' ' + k1["serverPassword"] + ' ' + k1["projectDir"] +
                     ' ' + k1["projectPort"]).read()
        if k1["serverType"] == "5004":
            os.popen("su - " + k1["user"] + " -s /bin/bash " + sys.path[0] +
                     "/api/extend/6000/flume.sh " + k1["serverUserName"] +
                     ' ' + k1["serverPassword"] + ' ' + k1["projectDir"] +
                     ' ' + k1["projectPort"]).read()
        if k1["serverType"] == "5005":
            LogUtil.info("检测rabbitMQ")
            os.popen("sh " + sys.path[0] + "/api/extend/6000/rabbitmq.sh " +
                     k1["serverUserName"] + ' ' + k1["serverPassword"] + ' ' +
                     k1["projectDir"] + ' ' + k1["projectPort"]).read()
        if k1["serverType"] == "5006":
            os.popen("su - " + k1["user"] + " -s /bin/bash " + sys.path[0] +
                     "/api/extend/6000/zookeeper.sh " + k1["serverUserName"] +
                     ' ' + k1["serverPassword"] + ' ' + k1["projectDir"] +
                     ' ' + k1["projectPort"]).read()
        if k1["serverType"] == "5007":
            os.popen("su - " + k1["user"] + " -s /bin/bash " + sys.path[0] +
                     "/api/extend/6000/jstorm.sh " + k1["serverUserName"] +
                     ' ' + k1["serverPassword"] + ' ' + k1["projectDir"] +
                     ' ' + k1["projectPort"]).read()
Example #14
0
def _execute(command):
    try:
        commandInfo = command["commandInfo"]
        line = commands.getstatusoutput(commandInfo)
        log = json.dumps(line[1])
        output = base64.encodestring(log)
        state = '1'
        param = [
            "{\"id\":\"" + command["id"] + "\",\"state\":\"" + state +
            "\",\"mac\":\"" + MachineUtil.get_mac_address() + "\",\"msg\":\"" +
            output + "\",\"version\":\"" + command["version"] + "\"}"
        ]
        AosServerService.route_service("ThriftApiService", "editState", param)
    except Exception, ex:
        LogUtil.error(ex)
        log = ("Error {0}".format(str(ex)))
        output = base64.encodestring(log)
        state = '1'
        param = [
            "{\"id\":\"" + command["id"] + "\",\"state\":\"" + state +
            "\",\"mac\":\"" + MachineUtil.get_mac_address() + "\",\"msg\":\"" +
            output + "\",\"version\":\"" + command["version"] + "\"}"
        ]
        AosServerService.route_service("ThriftApiService", "editState", param)
Example #15
0
 def _regist_node(self):
     mac = MachineUtil.get_mac_address()
     ip = NodeLifeTime.config.get_prop("aos-config", "client_ip")
     docker = NodeLifeTime.config.get_prop("docker-config", "docker")
     docker_status = "0"
     docker_images = "[]"
     docker_containers = "[]"
     if docker == "1":
         docker_status = DockerUtil._docker_status(NodeLifeTime.api)
     if docker_status == "2":
         docker_status = DockerUtil._docker_restart(mac, NodeLifeTime.api)
     if docker_status == "1":
         docker_images = base64.encodestring(
             DockerUtil._docker_images(NodeLifeTime.api))
         docker_containers = base64.encodestring(
             DockerUtil._docker_containers())
     param = [
         "{\"mac\":\"" + mac + "\",\"ip\":\"" + ip +
         "\",\"dockerStatus\":\"" + docker_status +
         "\",\"dockerImages\":\"" + docker_images + "\",\"containers\":\"" +
         docker_containers + "\"}"
     ]
     LogUtil.info("注册节点信息:%s" % (json.dumps(param)))
     return AosServerService.route_service("ThriftApiService", "add", param)
Example #16
0
 def _nginx_conf(self):
     mac = MachineUtil.get_mac_address()
     param = ["{\"mac\":\"" + mac + "\"}"]
     LogUtil.info("拉取Nginx配置信息:%s" % (json.dumps(param)))
     return AosServerService.route_service("ThriftApiService",
                                           "getNginxConf", param)
Example #17
0
 def nginx_dispatch(self):
     while True:
         LogUtil.info("开始拉取Nginx配置信息")
         self.nginx_run()
         LogUtil.info("结束Nginx配置")
         time.sleep(1800)
Example #18
0
 def route_service(self, service_name, func_name, param):
     try:
         return self.client.routeService(service_name, func_name, param)
     except Exception, e:
         LogUtil.error(e)
Example #19
0
 def monitoring(self):
     while True:
         LogUtil.info("开始定时任务检测生命周期")
         ApiUtil.execute_api("6000",[])
         LogUtil.info("结束定时任务检测生命周期")
         time.sleep(5)
Example #20
0
def _execute(command):
    config = FileUtils.get_instance('config.ini')
    nginx_conf_dir = config.get_prop("nginx-config", "nginx_conf_dir")
    nginx_conf_dir_bak = config.get_prop("nginx-config", "nginx_conf_dir_bak")
    os.system('mkdir -p ' + nginx_conf_dir)
    os.system('cp -r ' + nginx_conf_dir + nginx_conf_dir_bak)
    os.system('rm -rf ' + nginx_conf_dir + '*')
    state = '0'
    try:
        for k1 in command:
            upstreamName = k1["upstreamName"]
            upstreamNode = json.loads(k1["upstreamNode"])
            fileName = nginx_conf_dir + upstreamName + '.conf'
            os.system('touch ' + fileName)
            c = nginx.Conf()
            LogUtil.info("Node信息:%s" % (upstreamNode))
            t = ''
            for k2 in range(len(upstreamNode)):
                if (k2 == 0):
                    t = 'server' + ' ' + upstreamNode[k2][
                        "ipAdress"] + ' ' + upstreamNode[k2]["strategy"] + ';\n'
                if (0 < k2 < len(upstreamNode) - 1):
                    t = t + '     ' + 'server' + ' ' + upstreamNode[k2][
                        "ipAdress"] + ' ' + upstreamNode[k2]["strategy"] + ';\n'
                if (k2 == len(upstreamNode) - 1):
                    t = t + '     ' + 'server' + ' ' + upstreamNode[k2][
                        "ipAdress"] + ' ' + upstreamNode[k2]["strategy"]
            ipHash = k1["ipHash"]
            if (ipHash == '1'):
                u = nginx.Upstream(upstreamName, nginx.Key('', t),
                                   nginx.Key('', 'ip_hash'))
                c.add(u)
            if (ipHash == '0'):
                u = nginx.Upstream(upstreamName, nginx.Key('', t))
                c.add(u)
            s = nginx.Server()
            s.add(
                nginx.Key('listen', k1["nginxListenPort"]),
                nginx.Key('server_name', k1["nginxServerName"]),
                nginx.Key('access_log', k1["accessLog"]),
                nginx.Location(
                    '= /',
                    nginx.Key('proxy_pass', 'http://' + k1["upstreamName"]),
                    nginx.Key('proxy_redirect', 'off'),
                    nginx.Key('proxy_set_header', 'Host    $host'),
                    nginx.Key('proxy_set_header', 'X-Real-IP  $remote_addr'),
                    nginx.Key('proxy_set_header',
                              'X-Forwarded-For   $proxy_add_x_forwarded_for')))
            c.add(s)
            nginx.dumpf(c, fileName)
        LogUtil.info("完成Nginx配置")
        output = os.popen('service nginx restart').read()
        state = '1'
        param = [
            "{\"mac\":\"" + MachineUtil.get_mac_address() + "\",\"state\":\"" +
            state + "\",\"msg\":\"" + output + "\"}"
        ]
        os.system('rm -rf ' + nginx_conf_dir_bak)
        AosServerService.route_service("ThriftApiService", "nginxLog", param)
    except Exception, ex:
        LogUtil.error(ex)
        os.system('rm -rf ' + nginx_conf_dir)
        os.system('mv ' + nginx_conf_dir_bak + nginx_conf_dir)
        os.system('service nginx restart')
        output = ex.message
        state = '2'
        param = [
            "{\"mac\":\"" + MachineUtil.get_mac_address() + "\",\"state\":\"" +
            state + "\",\"msg\":\"" + output + "\"}"
        ]
        AosServerService.route_service("ThriftApiService", "nginxLog", param)
Example #21
0
 def dispatch(self):
     while True:
         LogUtil.info("开始生命周期")
         self.run()
         LogUtil.info("结束生命周期")
         time.sleep(5)
Example #22
0
 def _do_action(self, server_response_command):
     LogUtil.info("执行指令:%s" % (server_response_command))
     ApiUtil.execute_api("2111", server_response_command)
Example #23
0
 def _do_config(self, server_response_config):
     if len(server_response_config) == 0:
         return
     for config in server_response_config:
         LogUtil.info("执行配置项:%s" % (json.dumps(config)))
         ApiUtil.execute_api(config["commandId"], config)
Example #24
0
 def _do_action(self, server_response_command):
     if len(server_response_command) == 0:
         return
     for action in server_response_command:
         LogUtil.info("执行指令:%s" % (json.dumps(action)))
         ApiUtil.execute_api(action["commandId"], action)