def collect_data(self, bucketname, cluster, user, password, inputfile, statsfile, scale_val, opts, output_dir): scale_set = [] if scale_val == 'all': scale_set = ['minute', 'hour', 'day', 'week', 'month', 'year'] else: scale_set = [scale_val] if not inputfile: server, port = util.hostport(cluster) #get node list info nodes = self.get_hostlist(server, port, user, password, opts) self.log.debug(util.pretty_print(stats_buffer.nodes)) #get bucket list bucketlist = self.get_bucketlist(server, port, user, password, bucketname, opts) self.log.debug(util.pretty_print(stats_buffer.bucket_info)) self.log.debug(util.pretty_print(stats_buffer.buckets_summary)) #get stats from ep-engine self.get_mc_stats(server, bucketlist, nodes, bucketname) self.log.debug(util.pretty_print(stats_buffer.node_stats)) collected_data = {} for scale in scale_set: #get stats from ns-server self.get_ns_stats(bucketlist, server, port, user, password, bucketname, scale, opts) self.log.debug(util.pretty_print(stats_buffer.buckets)) collected_data["scale"] = scale_val collected_data["nodes"] = stats_buffer.nodes collected_data["bucket_info"] = stats_buffer.bucket_info collected_data["buckets_summary"] = stats_buffer.buckets_summary collected_data["node_stats"] = stats_buffer.node_stats collected_data["buckets"] = stats_buffer.buckets self.write_file(os.path.join(output_dir, statsfile), collected_data) else: json_data=open(inputfile) collected_data = json.load(json_data) json_data.close() stats_buffer.nodes = collected_data["nodes"] stats_buffer.bucket_info = collected_data["bucket_info"] stats_buffer.buckets_summary = collected_data["buckets_summary"] stats_buffer.node_stats = collected_data["node_stats"] self.get_mc_stats_fromfile(bucketname, collected_data["buckets"], collected_data["nodes"]) stats_buffer.buckets = collected_data["buckets"] scale_val = collected_data["scale"] return scale_val
def run_report(self, txtfile): dict = { "globals": globals, "cluster_symptoms": cluster_symptoms, "bucket_symptoms": bucket_symptoms, "bucket_node_symptoms": bucket_node_symptoms, "node_symptoms": node_symptoms, "node_list": node_list, "bucket_list": bucket_list, } f = open(txtfile, 'w') report = {} report["Report Time"] = datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S") report["Nodelist Overview"] = node_list report["Cluster Overview"] = cluster_symptoms report["Node Metrics"] = node_symptoms report["Bucket Metrics"] = bucket_symptoms report["Bucket Node Metrics"] = bucket_node_symptoms print >> f, util.pretty_print(report) f.close() sys.stderr.write( "The run finished successfully. Please find output result at '{0}'" .format(txtfile))
def collect_data(self,cluster, user, password, opts): server, port = util.hostport(cluster) #get node list info nodes = self.get_hostlist(server, port, user, password, opts) self.log.debug(util.pretty_print(stats_buffer.nodes)) #get bucket list bucketlist = self.get_bucketlist(server, port, user, password, opts) self.log.debug(util.pretty_print(stats_buffer.bucket_info)) #get stats from ep-engine self.get_mc_stats(server, bucketlist, nodes) self.log.debug(util.pretty_print(stats_buffer.node_stats)) #get stats from ns-server self.get_ns_stats(bucketlist, server, port, user, password, opts) self.log.debug(util.pretty_print(stats_buffer.buckets))
def run_report(self, txtfile, htmlfile, verbose): dict = { "globals" : globals, "cluster_symptoms" : cluster_symptoms, "bucket_symptoms" : bucket_symptoms, "bucket_node_symptoms" : bucket_node_symptoms, "bucket_node_status" : bucket_node_status, "node_symptoms" : node_symptoms, "node_list" : node_list, "bucket_list" : bucket_list, "indicator_warn" : indicator_warn, "indicator_warn_exist" : len(indicator_warn) > 0, "indicator_error" : indicator_error, "indicator_error_exist" : len(indicator_error) > 0, "verbose" : verbose, } # read the current version number try: f = open('VERSION.txt', 'r') globals["versions"] = string.strip(f.read()) f.close() except Exception: pass f = open(txtfile, 'w') report = {} report["Report Time"] = globals["report_time"].strftime("%Y-%m-%d %H:%M:%S") report["Nodelist Overview"] = node_list report["Cluster Overview"] = cluster_symptoms report["Bucket Metrics"] = bucket_symptoms report["Bucket Node Metrics"] = bucket_node_symptoms report["Key indicators"] = (indicator_error, indicator_warn) report["Node disparate"] = node_disparate print >> f, util.pretty_print(report) f.close() mydir = os.path.dirname(sys.argv[0]) f = open(htmlfile, 'w') print >> f, Template(file=os.path.join(mydir, "report-htm.tmpl"), searchList=[dict]) f.close() sys.stderr.write("\nThe run finished successfully. Please find html output at '{0}' and text output at '{1}'.\n".format(htmlfile, txtfile))
def collect_data(self, bucketname, cluster, user, password, inputfile, opts): if not inputfile: server, port = util.hostport(cluster) #get node list info nodes = self.get_hostlist(server, port, user, password, opts) self.log.debug(util.pretty_print(stats_buffer.nodes)) #get bucket list bucketlist = self.get_bucketlist(server, port, user, password, bucketname, opts) self.log.debug(util.pretty_print(stats_buffer.bucket_info)) self.log.debug(util.pretty_print(stats_buffer.buckets_summary)) #get stats from ep-engine self.get_mc_stats(server, bucketlist, nodes, bucketname) self.log.debug(util.pretty_print(stats_buffer.node_stats)) #get stats from ns-server self.get_ns_stats(bucketlist, server, port, user, password, bucketname, opts) self.log.debug(util.pretty_print(stats_buffer.buckets)) collected_data = {} collected_data["nodes"] = stats_buffer.nodes collected_data["bucket_info"] = stats_buffer.bucket_info collected_data["buckets_summary"] = stats_buffer.buckets_summary collected_data["node_stats"] = stats_buffer.node_stats collected_data["buckets"] = stats_buffer.buckets self.write_file("stats.json", collected_data) else: import json json_data=open(inputfile) collected_data = json.load(json_data) json_data.close() stats_buffer.nodes = collected_data["nodes"] stats_buffer.bucket_info = collected_data["bucket_info"] stats_buffer.buckets_summary = collected_data["buckets_summary"] stats_buffer.node_stats = collected_data["node_stats"] stats_buffer.buckets = collected_data["buckets"]
def run_report(self, txtfile, htmlfile, verbose): dict = { "globals" : globals, "cluster_symptoms" : cluster_symptoms, "bucket_symptoms" : bucket_symptoms, "bucket_node_symptoms" : bucket_node_symptoms, "bucket_node_status" : bucket_node_status, "node_symptoms" : node_symptoms, "node_list" : node_list, "bucket_list" : bucket_list, "indicator_warn" : indicator_warn, "indicator_error" : indicator_error, "verbose" : verbose, } f = open(txtfile, 'w') report = {} report["Report Time"] = globals["report_time"].strftime("%Y-%m-%d %H:%M:%S") report["Nodelist Overview"] = node_list report["Cluster Overview"] = cluster_symptoms report["Bucket Metrics"] = bucket_symptoms report["Bucket Node Metrics"] = bucket_node_symptoms report["Key indicators"] = (indicator_error, indicator_warn) report["Node disparate"] = node_disparate print >> f, util.pretty_print(report) f.close() f = open(htmlfile, 'w') print >> f, Template(file="report-htm.tmpl", searchList=[dict]) f.close() sys.stderr.write("\nThis run finishes successfully. Please find output result at " + htmlfile)
def run_report(self, txtfile): dict = { "globals" : globals, "cluster_symptoms" : cluster_symptoms, "bucket_symptoms" : bucket_symptoms, "bucket_node_symptoms" : bucket_node_symptoms, "node_symptoms" : node_symptoms, "node_list" : node_list, "bucket_list" : bucket_list, } f = open(txtfile, 'w') report = {} report["Report Time"] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") report["Nodelist Overview"] = node_list report["Cluster Overview"] = cluster_symptoms report["Node Metrics"] = node_symptoms report["Bucket Metrics"] = bucket_symptoms report["Bucket Node Metrics"] = bucket_node_symptoms print >> f, util.pretty_print(report) f.close() sys.stderr.write("The run finished successfully. Please find output result at '{0}'".format(txtfile))
def write_file(self, filename, info): f = open(filename, 'w') print >> f, util.pretty_print(info) f.close()
def run_report(self, verbose, scale_set, scale, debug, output_dir): reports_dir = os.path.join(os.path.dirname(sys.argv[0]), 'reports') txtfile = os.path.join(output_dir, scale + ".txt") htmlfile = os.path.join(output_dir, scale + ".html") dict = { "util": UtilTool(), "globals" : globals, "cluster_symptoms" : cluster_symptoms, "bucket_symptoms" : bucket_symptoms, "bucket_node_symptoms" : bucket_node_symptoms, "bucket_node_status" : bucket_node_status, "node_symptoms" : node_symptoms, "sizing_symptoms": sizing_symptoms, "node_list" : node_list, "bucket_list" : bucket_list, "indicator_warn" : indicator_warn, "indicator_warn_exist" : len(indicator_warn) > 0, "indicator_error" : indicator_error, "indicator_error_exist" : len(indicator_error) > 0, "verbose" : verbose, "scale_set" : scale_set, "debug" : debug, "sizing": None, } globals["scale"] = scale # read the current version number for fname in [os.path.join(os.path.dirname(sys.argv[0]), '..', '..', 'VERSION.txt'), \ os.path.join(os.path.dirname(sys.argv[0]), '..', 'VERSION.txt'), \ os.path.join(os.path.dirname(sys.argv[0]), 'VERSION.txt')]: try: f = open(fname, 'r') globals["versions"] = string.strip(f.read()) f.close() except Exception: pass f = open(txtfile, 'w') report = {} report["Report Time"] = globals["report_time"].strftime("%Y-%m-%d %H:%M:%S") report["Nodelist Overview"] = node_list report["Sizing Report"] = sizing_symptoms report["Cluster Overview"] = cluster_symptoms report["Bucket Metrics"] = bucket_symptoms report["Bucket Node Metrics"] = bucket_node_symptoms report["Key indicators"] = (indicator_error, indicator_warn) report["Node disparate"] = node_disparate print >> f, util.pretty_print(report) f.close() #print util.pretty_print(bucket_node_symptoms) f = open(htmlfile, 'w') print >> f, Template(file=os.path.join(reports_dir, TEMPLATE_FILE), searchList=[dict]) f.close() #generate charts if any for node in node_list: for category, values in sizing_symptoms[node].iteritems(): for sizing in values: if sizing["chart"]: dict["sizing"] = sizing htmlfile = os.path.join(output_dir, sizing["chart_id"] + ".html") f = open(htmlfile, "w") print >> f, Template(file=os.path.join(reports_dir, CHART_FILE), searchList=[dict]) f.close() # generate array/list of available reports for use via AJAX available_reports = [os.path.splitext(n)[0] for n in fnmatch.filter(os.listdir('./reports/'), '*.html')] f = open(os.path.join(output_dir, 'all.json'), 'w') print >> f, util.pretty_print(available_reports) f.close() #Need to copy support files for final report normalize_report_dir = os.path.normpath(reports_dir) normalize_output_dir = os.path.normpath(os.path.dirname(output_dir)) if normalize_output_dir != normalize_report_dir: for item in os.listdir(normalize_report_dir): if not item in [TEMPLATE_FILE, CHART_FILE]: s = os.path.join(normalize_report_dir, item) d = os.path.join(normalize_output_dir, item) try: if os.path.isfile(s): shutil.copy2(s, d) else: shutil.copytree(s, d) except Exception: pass sys.stderr.write("\nThe run finished successfully. \nPlease find html output at '%s' and text output at '%s'.\n" % \ (htmlfile, txtfile))