未验证 提交 08c76edf 编写于 作者: D Darcy 提交者: GitHub

Merge pull request #10542 from putcn/add-metric-to-csv1

save metrics data to csv file
...@@ -20,6 +20,7 @@ import time ...@@ -20,6 +20,7 @@ import time
import threading import threading
import logging import logging
import copy import copy
import csv
import netaddr import netaddr
import boto3 import boto3
...@@ -136,6 +137,12 @@ parser.add_argument( ...@@ -136,6 +137,12 @@ parser.add_argument(
parser.add_argument( parser.add_argument(
'--master_server_ip', type=str, default="", help="master server private ip") '--master_server_ip', type=str, default="", help="master server private ip")
parser.add_argument(
'--metric_data_identifier',
type=str,
default="**metrics_data: ",
help="key string to identify metrics data")
parser.add_argument( parser.add_argument(
'--no_clean_up', '--no_clean_up',
type=str2bool, type=str2bool,
...@@ -155,6 +162,11 @@ logging.basicConfig( ...@@ -155,6 +162,11 @@ logging.basicConfig(
log_files = ["master.log"] log_files = ["master.log"]
metrics = {}
metrics_csv_file_name = "metrics.csv"
is_metrics_file_created = False
def create_subnet(): def create_subnet():
# if no vpc id provided, list vpcs # if no vpc id provided, list vpcs
...@@ -329,12 +341,42 @@ def create_pservers(): ...@@ -329,12 +341,42 @@ def create_pservers():
cleanup(args.task_name) cleanup(args.task_name)
def save_metrics_data(str_msg):
#parse msg
logging.info("found metrics data, saving it to csv file")
global is_metrics_file_created
metrics_raw = str_msg.split(",")
with open(args.log_path + metrics_csv_file_name, 'a') as csvfile:
csv_fieldnames = []
csv_write_data = {}
for metric in metrics_raw:
metric_data = metric.split("=")
metric_key = metric_data[0].strip()
metric_val = float(metric_data[1].strip())
if not metric_key in metrics:
metrics[metric_key] = []
metric_repo = metrics[metric_key]
metric_repo.append(metric_val)
csv_fieldnames.append(metric_key)
csv_write_data[metric_key] = metric_val
writer = csv.DictWriter(csvfile, fieldnames=csv_fieldnames)
if not is_metrics_file_created:
writer.writeheader()
is_metrics_file_created = True
writer.writerow(csv_write_data)
logging.info("csv file appended")
def log_to_file(source, filename): def log_to_file(source, filename):
if not filename in log_files: if not filename in log_files:
log_files.append(filename) log_files.append(filename)
with open(args.log_path + filename, "a") as log_file: with open(args.log_path + filename, "a") as log_file:
for line in iter(source.readline, ""): for line in iter(source.readline, ""):
log_file.write(line) log_file.write(line)
if (line.startswith(args.metric_data_identifier)):
#found key data, trying to add to csv
line = line.replace(args.metric_data_identifier, "")
save_metrics_data(line)
def parse_command(command_raw, defaults={}): def parse_command(command_raw, defaults={}):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册