diff --git a/compass_metrics/api/api.py b/compass_metrics/api/api.py index 3eb49dc..e942483 100755 --- a/compass_metrics/api/api.py +++ b/compass_metrics/api/api.py @@ -35,6 +35,7 @@ from datetime import timedelta #from flask import Flask from flask.ext import restful + from flask import redirect, request, current_app, jsonify import csv, itertools, json from pprint import pprint @@ -46,6 +47,8 @@ from compass_metrics.utils import logsetting from compass_metrics.utils import setting_wrapper as setting +## Globals + ## Comment out this line for standalone testing #app = Flask(__name__) @@ -60,18 +63,26 @@ MONITOR_IP = setting.MONITOR_IP ## Hardcode this line for standalone testing KAIROS_URL = setting.KAIROS_URL #KAIROS_URL = "http://10.1.4.71:8080" -#KAIROS_URL = "http://10.145.89.165:8088" +#KAIROS_URL = "http://10.145.89.16:8088" ## Hardcode this line for standalone testing COMPASS_IP = setting.COMPASS_IP #COMPASS_IP = "10.1.4.70" -#COMPASS_IP = "10.145.89.165" - +#COMPASS_IP = "10.145.89.16" # Login token - long lived so it's global token = None tokenTs = None +# A dictionary for upto 10 clusters +compass_dict = [None]*10 + +# A dictionary for upto 10 clusters +metricsList = None +metricsTree = None + +## End Globals + # Support routines @@ -79,24 +90,51 @@ tokenTs = None def apiLogin(): global token global tokenTs + global compass_dict if tokenTs != None: delta_time = datetime.now() - tokenTs - #print "Timeout: " + str(delta_time.seconds) + #print "Exipration: " + str(delta_time.seconds) if delta_time.seconds > 50*60: + print "Regen token " + str(delta_time.seconds) token = None + else: + print "New token" + compass_dict = [None]*10 + metricsList = None + metricsTree = None if token == None: - (resp, content) = webl.request("http://"+ COMPASS_IP + "/api/users/token", - "POST", body="{\"email\" : \"admin@huawei.com\", \"password\" : \"admin\" }", - headers={'Content-Type':'application/json'} ) - #print "Response ="+str(resp) - #print "Content ="+content + my_uri = "http://"+ COMPASS_IP + "/api/users/token" + #my_method = 'method="POST"' + my_method = "POST" + my_body = "{\"email\" : \"admin@huawei.com\", \"password\" : \"admin\" }" + my_headers = {'Content-Type':'application/json'} + print "Compass request: "+my_uri+" "+my_method+" "+my_body+" "+str(my_headers) + (resp, content) = webl.request(my_uri, method=my_method, body=my_body, headers=my_headers) + print "Response: "+str(resp) + #print "Content: "+content data = json.loads(content) token = data['token'] tokenTs = datetime.now() +def clusterData(clusterid): + global compass_dict + clusterid = int(clusterid) + if compass_dict[clusterid] == None: + clusteridname = str(clusterid) + my_uri = "http://"+ COMPASS_IP + "/api/clusters/"+ clusteridname + "/hosts" + my_body = "" + my_method = "GET" + my_headers = {'X-Auth-Token': token, 'Content-Type':'application/json'} + print "Compass request: "+my_uri+" "+my_method+" "+my_body+" "+str(my_headers) + (resp, content) = webl.request(my_uri, method=my_method, headers=my_headers) + print "Response: "+str(resp) + #print "Content: "+content + compass_dict[clusterid] = json.loads(content) + return compass_dict[clusterid] + # Finds the IP address on the management network for a node def hostMgmtNetIP(net_dict): @@ -122,19 +160,21 @@ def metricGather(rows, title_root): s = s.replace(" (used)", ".used") if len(group_rows[0]) == 2: - if title_root != None: - uid = title_root+'.'+s - else: - uid = s - result.append({u"title": key, u"id": uid, u"nodes": [] }) +# if title_root != None: +# uid = title_root+'.'+s +# else: +# uid = s +# result.append({u"title": key, u"id": uid, u"nodes": [] }) + result.append({u"title": key, u"nodes": [] }) elif len(group_rows[0]) < 2: continue else: - if title_root != None: - uid = title_root+'.'+s - else: - uid = s - result.append({u"title": key, u"id": uid, u"nodes": metricGather(group_rows, uid)}) +# if title_root != None: +# uid = title_root+'.'+s +# else: +# uid = s +# result.append({u"title": key, u"id": uid, u"nodes": metricGather(group_rows, uid)}) + result.append({u"title": key, u"nodes": metricGather(group_rows, None)}) return result @@ -200,7 +240,6 @@ def pingCheck(host_or_ip): return "unknown" - class HelloInfo(restful.Resource): def get(self): # return {'info': 'Select host, hostgroup, topology, service from here'} @@ -229,12 +268,10 @@ api.add_resource(Proxy, '/proxy/') #, defaults={'url': '/HelloWorld'}) class Hosts(restful.Resource): def get(self, clusterid): + """This returns a JSON Host list structure.""" apiLogin() - clustername = str(clusterid) - (resp, content) = webl.request("http://"+ COMPASS_IP + "/api/clusters/"+ clustername + "/hosts", "GET", headers={'X-Auth-Token': token, 'Content-Type':'application/json'}) - #print "Response ="+str(resp) - #print "Content ="+content - host_dict = json.loads(content) + host_dict = clusterData(clusterid) + s = "{\"hosts\": [\"" for i, v in enumerate(host_dict): @@ -245,16 +282,21 @@ class Hosts(restful.Resource): #return s.json() return json.loads(s) -api.add_resource(Hosts, '/clusters//hosts' +api.add_resource(Hosts, '/clusters//hosts' #, defaults={'clusterid': '1'} ) ) class MetricNames(restful.Resource): def get(self): + global metricsList + """ Returns a list of collected metric names.""" # we need to tune this to host specific - req = requests.get(KAIROS_URL +"/api/v1/metricnames") - names_dict = req.json() + if metricsList == None: + # This is a comprehensive list of metrics not per host due to limitations + req = requests.get(KAIROS_URL +"/api/v1/metricnames") + metricsList = req + names_dict = metricsList.json() return names_dict["results"] api.add_resource(MetricNames, '/metricnames') @@ -262,36 +304,51 @@ api.add_resource(MetricNames, '/metricnames') class Metrics(restful.Resource): def get(self): - # This is a comprehensive list of metrics not per host due to limitations - r = requests.get(KAIROS_URL +"/api/v1/metricnames") - return r.json() + global metricsList + if metricsList == None: + # This is a comprehensive list of metrics not per host due to limitations + metricsList = requests.get(KAIROS_URL +"/api/v1/metricnames") + return metricsList.json() api.add_resource(Metrics, '/metrics') +class DeleteMetric(restful.Resource): + def get(self, metricname): + resp = requests.delete(KAIROS_URL +"/api/v1/metric/"+metricname) + #return json(resp) + return + +api.add_resource(DeleteMetric, '/deletemetric/') + + class MetricTree(restful.Resource): def get(self): - # This is a comprehensive list of metrics not per host due to limitations - req = requests.get(KAIROS_URL +"/api/v1/metricnames") + global metricsList + global metricsTree + if metricsList == None: + # This is a comprehensive list of metrics not per host due to limitations + metricsList = requests.get(KAIROS_URL +"/api/v1/metricnames") - names_dict = req.json() + if metricsTree == None: + names_dict = metricsList.json() + # Compress some of the leafnodes of the tree for usability + s = '.nodes.\n'.join(names_dict["results"]) - s = '.nodes.\n'.join(names_dict["results"]) + s = s.replace(".value", " (value)") + s = s.replace(".rx", " (rx)") + s = s.replace(".tx", " (tx)") + s = s.replace(".read", " (read)") + s = s.replace(".write", " (write)") + s = s.replace(".free", " (free)") + s = s.replace(".used", " (used)") - s = s.replace(".value", " (value)") - s = s.replace(".rx", " (rx)") - s = s.replace(".tx", " (tx)") - s = s.replace(".read", " (read)") - s = s.replace(".write", " (write)") - s = s.replace(".free", " (free)") - s = s.replace(".used", " (used)") - #s.replace(".", ".node.") + rows = list(csv.reader(s.splitlines(), delimiter='.')) + metricsTree = metricGather(rows, None) - rows = list(csv.reader(s.splitlines(), delimiter='.')) - rws = metricGather(rows, None) - return rws - #return json.dumps(rws) - #return rws.json() + return metricsTree + #return json.dumps(metricsTree) + #return metricsTree.json() api.add_resource(MetricTree, '/metrictree') @@ -304,7 +361,7 @@ class TsGenerateAlarmData: report = ("ok", "warning", "critical", "unknown") buildStr = '[' - #print str(elements) + print str(elements) for h in range(0, 4): for j in range(1, 30): elementid = random.randint(0,len(elements)-1) @@ -333,14 +390,17 @@ class TsPostQuery: class TsQueryBuilder: - def __init__(self, clustername, host_s, metric, multi): + def __init__(self, clusteridname, host_s, metric, multi): self.params = " " self.statusStr = "failure" + self.resp_dict = None + buildStr = '{ "metrics":[' - repeatStr = '{ "tags": { "cluster": [ "CLUSTERID" ], "host": [ "HOSTNAME" ] }, "name": "METRIC", "group_by": [ { "name":"tag", "tags": ["host"] } ], "aggregators": [{ "name": "avg", "align_sampling": True, "sampling": { "value": "1", "unit": "seconds" } }] }' + ###repeatStr = '{ "tags": { "cluster": [ "CLUSTERID" ], "host": [ "HOSTNAME" ] }, "name": "METRIC", "group_by": [ { "name":"tag", "tags": ["host"] } ], "aggregators": [{ "name": "avg", "align_sampling": true, "sampling": { "value": "1", "unit": "seconds" } }] }' + repeatStr = '{ "tags": {}, "name": "METRIC", "group_by": [ { "name":"tag", "tags": ["host"] } ], "aggregators": [{ "name": "avg", "align_sampling": true, "sampling": { "value": "1", "unit": "seconds" } }] }' finStr = '],"cache_time": 1, "start_relative": { "value": "1", "unit": "months" } }' - repeatStr = repeatStr.replace("METRIC", metric).replace("CLUSTERID", clustername) + repeatStr = repeatStr.replace("METRIC", metric).replace("CLUSTERID", clusteridname) if multi == True: i = len(host_s); @@ -350,9 +410,11 @@ class TsQueryBuilder: if i != 0: buildStr += ',' elif host_s == None: - #print "Host: None" - repeatStr = repeatStr.replace('"group_by": [ { "name":"tag", "tags": ["host"] } ],',' ') - buildStr += repeatStr.replace(', "host": [ "HOSTNAME" ]', ' ') + print "Host: None" + ###repeatStr = repeatStr.replace('"group_by": [ { "name":"tag", "tags": ["host"] } ],',' ') + ###buildStr += repeatStr.replace(', "host": [ "HOSTNAME" ]', ' ') + buildStr += repeatStr ### remove this later + print "Build: " + buildStr else: buildStr += repeatStr.replace("HOSTNAME", host_s) @@ -363,29 +425,31 @@ class TsQueryBuilder: # check the POST status and return success or fail here if r.status_code == requests.codes.ok: self.statusStr = "success" - self.resp_dict = r.json() - #print "Result: " + str(r.json) + self.resp_dict = r.json() + print "Result: " + str(r.json) class Datapoints(restful.Resource): def post(self, clusterid): - clustername = str(clusterid) + clusteridname = str(clusterid) myReq = request.get_json(force=True, silent=False, cache=False) #print "posting datapoints" qb = TsPostQuery("/api/v1/datapoints/query", myReq) - return qb.resp_dict + if qb.resp_dict != None: + return qb.resp_dict -api.add_resource(Datapoints, '/clusters//datapoints') +api.add_resource(Datapoints, '/clusters//datapoints') class DatapointTags(restful.Resource): def post(self, clusterid): - clustername = str(clusterid) + clusteridname = str(clusterid) myReq = request.get_json(force=True, silent=False, cache=False) qb = TsPostQuery("/api/v1/datapoints/query/tags", myReq) - return qb.resp_dict + if qb.resp_dict != None: + return qb.resp_dict -api.add_resource(DatapointTags, '/clusters//datapointtags') +api.add_resource(DatapointTags, '/clusters//datapointtags') class ClusterMetric(restful.Resource): @@ -394,12 +458,14 @@ class ClusterMetric(restful.Resource): # Create and execute the query qb = TsQueryBuilder(clusteridname, None, metricname, False) + if qb.resp_dict == None: + return "" + resultStr = str(qb.resp_dict['queries'][0]['results'][0]['values']) #print "Z res: "+str(qb.resp_dict['queries'][0]['results'][0]) # Create JSON Prefix - #valStr = '{"result":[{"metrics":[{"id":"' + clustername + '","data":[' valStr = '{ "clusterid": "' + clusteridname + '", "key": "' + metricname + '", "values":' valStr += resultStr @@ -424,45 +490,35 @@ class ClusterMetric(restful.Resource): valStr = valStr[:-1] """ - - - api.add_resource( ClusterMetric, '/clusters//metrics/' #, defaults={'clusterid': '1', 'hostname': 'test-controller', 'metricname': 'load.load.shortterm'} ) + class HostMetric(restful.Resource): def get(self, clusterid, hostname, metricname): - clustername = str(clusterid) + clusteridname = str(clusterid) # Create and execute the query - qb = TsQueryBuilder(clustername, hostname, metricname, False) + qb = TsQueryBuilder(clusteridname, hostname, metricname, False) + if qb.resp_dict == None: + return "" + resultStr = str(qb.resp_dict['queries'][0]['results'][0]['values']) + + #print "Z res: "+str(qb.resp_dict['queries'][0]['results'][0]) # Create JSON Prefix - valStr = '{"result":[{"metrics":[{"id":"' + hostname + '","data":[' + valStr = '{ "clusterid": "' + clusteridname + '", "host": "' + hostname + '", "key": "' + metricname + '", "values":' + valStr += resultStr - # add all time series data - for key, value in qb.resp_dict["queries"][0]["results"][0]["values"]: - # round this value down - digits = str(key) - key = key - (int(digits[8]) * 10000) - key = key - (int(digits[9]) * 1000) - key = key - (int(digits[10]) * 100) - valStr += '{"time":' + str(key) + ',"value":' + str(value) + '},' - - #remove a comma - valStr = valStr[:-1] - - #a = TsGenerateAlarmData() #add final braces - valStr += ']}],' - #valStr += a.resultStr - valStr += ',"id":"' + hostname + '"}],"status":"' + qb.statusStr + '"}' + valStr += '}' - return valStr - #return json.loads(valStr) + #return valStr + #return json.dumps(valStr) + return json.loads(valStr) api.add_resource( @@ -481,6 +537,8 @@ class HostGroupMetric(restful.Resource): # Create and execute the query qb = TsQueryBuilder(clusteridname, MyList, metricname, True) + if qb.resp_dict == None: + return "" # Create JSON Prefix valStr = '{"result":[' @@ -524,7 +582,7 @@ class HostGroupMetric(restful.Resource): api.add_resource( HostGroupMetric, - '/clusters//hostgroups//metrics/' + '/clusters//hostgroups//metrics/' #,defaults={'clusterid': '1', 'hostname': '', 'metricname': ''} ) @@ -533,10 +591,7 @@ class Alarms(restful.Resource): def get(self, clusterid): apiLogin() elements = [] - clusteridname = str(clusterid) - (resp, content) = webl.request("http://"+ COMPASS_IP + "/api/clusters/"+ clusteridname + "/hosts", "GET", headers={'X-Auth-Token': token, 'Content-Type':'application/json'}) - host_dict = json.loads(content) - + host_dict = clusterData(clusterid) for i, v in enumerate(host_dict): elements.append(host_dict[i]['hostname']) @@ -547,8 +602,8 @@ class Alarms(restful.Resource): #return r return json.loads(r) -api.add_resource(Alarms, '/clusters//alarms' - #, defaults={'clusterid': '1'} +api.add_resource(Alarms, '/clusters//alarms' + #, defaults={'clusterid': '1'} ) @@ -559,7 +614,7 @@ class Services(restful.Resource): #return r.json() return r -api.add_resource(Services, '/clusters//services' +api.add_resource(Services, '/clusters//services' #, defaults={'clusterid': '1'} ) ) @@ -568,14 +623,9 @@ api.add_resource(Services, '/clusters//services' class Topology(restful.Resource): def get(self, clusterid): apiLogin() - clustername = str(clusterid) + host_dict = clusterData(clusterid) - (resp, content) = webl.request("http://"+ COMPASS_IP + "/api/clusters/"+ clustername + "/hosts", "GET", headers={'X-Auth-Token': token, 'Content-Type':'application/json'}) - #print "Response ="+str(resp) - #print "Content ="+content - host_dict = json.loads(content) s = "" - for i, v in enumerate(host_dict): mgmt_ip = hostMgmtNetIP(host_dict[i]['networks']) if mgmt_ip == None: @@ -584,12 +634,12 @@ class Topology(restful.Resource): s = s + str(host_dict[i]['os_installer']['settings']['cobbler_url'].split('/')[2]) + "," + str(host_dict[i]['switch_ip']) + "," + str(host_dict[i]['hostname']) + "@" + mgmt_ip + "\n" rows = list(csv.reader(s.splitlines())) - #print rows + print rows r = serviceGather(rows) #return json.dumps(r) return r[0] -api.add_resource(Topology, '/clusters//topology' +api.add_resource(Topology, '/clusters//topology' #, defaults={'clusterid': '1'} ) ) @@ -597,13 +647,9 @@ api.add_resource(Topology, '/clusters//topology' class ServiceTopology(restful.Resource): def get(self, clusterid): apiLogin() - clusteridname = str(clusterid) - (resp, content) = webl.request("http://"+ COMPASS_IP + "/api/clusters/"+ clusteridname + "/hosts", "GET", headers={'X-Auth-Token': token, 'Content-Type':'application/json'}) - #print "Response ="+str(resp) - #print "Content ="+content - host_dict = json.loads(content) - s = "" + host_dict = clusterData(clusterid) + s = "" for i, v in enumerate(host_dict): clustername = host_dict[i]['clustername'] s = s + "Cluster: " + clustername + "," + str(host_dict[i]['hostname']) + "," + "Disk"+ "\n" @@ -615,7 +661,7 @@ class ServiceTopology(restful.Resource): s = s + "Cluster: " + clustername + "," + str(host_dict[i]['hostname']) + "," + "Role" + "," + str(host_dict[i]['roles'][k]['display_name']) + "\n" rows = list(csv.reader(s.splitlines())) - #print rows + print rows r = serviceGather(rows) #return json.dumps(r) return r[0] @@ -624,7 +670,7 @@ class ServiceTopology(restful.Resource): valStr = '[{"id":"Huawei-Lab-C","name":"Huawei-Lab-C","children":[ {"id":"10.145.81.219","name":"10.145.81.219","state":"warning","resource":"services","type":"service","children":[ {"name":"server-1.huawei.com","id":"host1.huawei.com","state":"running","resource":"hosts","type":"server", "children":[]}, {"name":"server-2.huawei.com","id":"host2.huawei.com","state":"running","resource":"hosts","type":"server", "children":[]}, {"name":"server-3.huawei.com","id":"host3.huawei.com","state":"running","resource":"hosts","type":"server", "children":[]}, {"name":"server-4.huawei.com","id":"host4.huawei.com","state":"running","resource":"hosts","type":"server", "children":[]}, {"name":"server-5.huawei.com","id":"host5.huawei.com","state":"warning","resource":"hosts","type":"server", "children":[]}, {"name":"server-6.huawei.com","id":"host6.huawei.com","state":"running","resource":"hosts","type":"server", "children":[]}, {"name":"server-7.huawei.com","id":"host7.huawei.com","state":"critical","resource":"hosts","type":"server", "children":[]}, {"name":"monit-server-1.huawei.com","id":"10_145_81_205","state":"running","resource":"hosts","type":"server", "children":[]}]}]}]' return json.loads(valStr) -api.add_resource(ServiceTopology, '/clusters//servicetopology' +api.add_resource(ServiceTopology, '/clusters//servicetopology' #, defaults={'clusterid': '1'} ) ) @@ -634,10 +680,10 @@ class Overview(restful.Resource): apiLogin() clusteridname = str(clusterid) - valStr = '[{ "name": "cluster_summary", "display_name": "Cluster Summary", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Metrics%20Dashboard", "state": "ok" }, { "name": "controller", "display_name": "Controller", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Controller", "state": "error" }, { "name": "alert", "display_name": "Alert", "base_url": "/#/cluster/2/monitoring/alerts", "dash": "", "state": "", "alerts": [{ "type": "critical", "name": "os-keystone" }, { "type": "warning", "name": "os-mq" }, { "type": "warning", "name": "os-db-node" }, { "type": "critical", "name": "os-network" }, { "type": "warning", "name": "os-keystone" }, { "type": "warning", "name": "os-compute2" }] }, { "name": "compute", "display_name": "Compute", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Compute", "state": "ok" }, { "name": "security", "display_name": "Security", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Security", "state": "warning" }, { "name": "database", "display_name": "Database", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Database", "state": "warning" }, { "name": "image", "display_name": "Image", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Image", "state": "warning" }, { "name": "store", "display_name": "Store", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Storage", "state": "ok" }, { "name": "messagebus", "display_name": "Message Bus", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Message%20Bus", "state": "ok" }, { "name": "processes", "display_name": "Processes", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Processes", "state": "ok" }, { "name": "monitoring", "display_name": "Monitoring", "base_url": "/#/cluster/2/monitoring/charts", "dash": "Metrics%20Dashboard", "state": "ok" }, { "name": "users", "display_name": "Users", "base_url": "/#/users", "dash": "", "state": "ok" }]' + valStr = '[{ "name": "cluster_summary", "display_name": "Cluster Summary", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Metrics%20Dashboard", "state": "ok" }, { "name": "controller", "display_name": "Controller", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Controller", "state": "error" }, { "name": "alert", "display_name": "Alert", "base_url": "/#/cluster/'+clusteridname+'/monitoring/alerts", "dash": "", "state": "", "alerts": [{ "type": "critical", "name": "os-keystone" }, { "type": "warning", "name": "os-mq" }, { "type": "warning", "name": "os-db-node" }, { "type": "critical", "name": "os-network" }, { "type": "warning", "name": "os-keystone" }, { "type": "warning", "name": "os-compute2" }] }, { "name": "compute", "display_name": "Compute", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Compute", "state": "ok" }, { "name": "security", "display_name": "Security", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Security", "state": "warning" }, { "name": "database", "display_name": "Database", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Database", "state": "warning" }, { "name": "image", "display_name": "Image", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Image", "state": "warning" }, { "name": "store", "display_name": "Store", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Storage", "state": "ok" }, { "name": "messagebus", "display_name": "Message Bus", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Message%20Bus", "state": "ok" }, { "name": "processes", "display_name": "Processes", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Processes", "state": "ok" }, { "name": "monitoring", "display_name": "Monitoring", "base_url": "/#/cluster/'+clusteridname+'/monitoring/charts", "dash": "Metrics%20Dashboard", "state": "ok" }, { "name": "users", "display_name": "Users", "base_url": "/#/users", "dash": "", "state": "ok" }]' return json.loads(valStr) -api.add_resource(Overview, '/clusters//overview' +api.add_resource(Overview, '/clusters//overview' #, defaults={'clusterid': '1'} ) ) diff --git a/conf/setting b/conf/setting index ce174f3..563944c 100644 --- a/conf/setting +++ b/conf/setting @@ -1,6 +1,6 @@ DEFAULT_LOGLEVEL = 'debug' DEFAULT_LOGDIR = '/var/log/compass_monit' WEB_LOGFILE = 'compass_monit.log' -MONITOR_IP = '$monitor_ipaddr' -KAIROS_URL = 'http://$monitor_ipaddr:$kairosdb_port' -COMPASS_IP = '$ipaddr' +MONITOR_IP = '$ipaddr' +KAIROS_URL = 'http://$ipaddr:$kairosdb_port' +COMPASS_IP = '$compass_ipaddr' diff --git a/install/install.sh b/install/install.sh index 20d28d3..2b44f7b 100755 --- a/install/install.sh +++ b/install/install.sh @@ -92,8 +92,8 @@ loadvars() } loadvars NIC "eth0" -loadvars KAIROSDB_PORT "8080" -loadvars MONITOR_NODE_IP "10.1.1.1" +loadvars KAIROSDB_PORT "8088" +loadvars COMPASS_NODE_IP "10.145.89.1" sudo ifconfig $NIC if [ $? -ne 0 ]; then echo "There is no nic '$NIC' yet" @@ -180,10 +180,12 @@ sudo sed -e 's|$PythonHome|'$VIRTUAL_ENV'|' -i /var/www/compass_monit/compass_mo sudo sed -i "s/\$ipaddr/$ipaddr/g" /etc/compass_monit/setting sudo sed -i "s/\$kairosdb_port/$KAIROSDB_PORT/g" /opt/kairosdb/conf/kairosdb.properties sudo sed -i "s/\$kairosdb_port/$KAIROSDB_PORT/g" /etc/compass_monit/setting -sudo sed -i "s/\$monitor_ipaddr/$MONITOR_NODE_IP/g" /etc/compass_monit/setting +sudo sed -i "s/\$compass_ipaddr/$COMPASS_NODE_IP/g" /etc/compass_monit/setting deactivate +sudo service kairosdb stop + sudo service cassandra restart sudo service cassandra status if [[ "$?" != "0" ]]; then