示例#1
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)
示例#2
0
class NginxLifeTime(object):
    config = FileUtils.get_instance('config.ini')

    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)

    def _do_action(self, server_response_command):
        LogUtil.info("执行指令:%s" % (server_response_command))
        ApiUtil.execute_api("2111", server_response_command)

    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)
示例#3
0
class NodeLifeTime(object):
    config = FileUtils.get_instance('config.ini')
    api = config.get_prop("docker-config", "api")

    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)

    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)

    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)

    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)
示例#4
0
class LogMonitor(object):
    config = FileUtils.get_instance("config.ini")

    header = {"messageType": "log"}

    @staticmethod
    def send_log(log_info):
        try:
            flume_client = FlumeClient(LogMonitor.config.get_prop("flume-config", "server_ip"),
                                       int(LogMonitor.config.get_prop("flume-config", "server_port")))
            event = ThriftFlumeEvent(LogMonitor.header, log_info)
            flume_client.send(event)
        except Exception, ex:
            print "%s" % ex.message
        finally:
示例#5
0
class AosServerService(object):
    config = FileUtils.get_instance("config.ini")

    @staticmethod
    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)
        finally:
示例#6
0
#!/usr/bin/env python
# coding=utf-8

import sys, os

sys.path.append(os.path.join(sys.path[0], '../../lib'))
import json
import time
import base64
from util.mutil import FileUtils, MachineUtil, LogUtil
from api.api_engine import ApiUtil, AosServerService

config = FileUtils.get_instance('config.ini')

class NodeLifeTime(object):
    def monitoring(self):
        while True:
            LogUtil.info("开始定时任务检测生命周期")
            ApiUtil.execute_api("6000",[])
            LogUtil.info("结束定时任务检测生命周期")
            time.sleep(5)


if __name__ == '__main__':
    node_lifetime = NodeLifeTime()
    node_lifetime.monitoring()

示例#7
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)
示例#8
0
#!/usr/bin/env python
# coding=utf-8

from util.mutil import FileUtils

main_fonf = FileUtils.get_instance('config.ini')

import os
import urllib, urllib2
import smtplib
import datetime
import threading
import time
from email.mime.text import MIMEText
from twill.commands import *
from util.mutil import LogUtil


class TwillMonitor(threading.Thread):
    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> \