Skip to content

Commit 5583157

Browse files
committed
save metrics data to csv file
1 parent 0446220 commit 5583157

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

tools/aws_benchmarking/server/cluster_master.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import threading
2121
import logging
2222
import copy
23+
import csv
2324

2425
import netaddr
2526
import boto3
@@ -136,6 +137,12 @@ def str2bool(v):
136137
parser.add_argument(
137138
'--master_server_ip', type=str, default="", help="master server private ip")
138139

140+
parser.add_argument(
141+
'--metric_data_identifier',
142+
type=str,
143+
default="**metrics_data: ",
144+
help="key string to identify metrics data")
145+
139146
parser.add_argument(
140147
'--no_clean_up',
141148
type=str2bool,
@@ -155,6 +162,11 @@ def str2bool(v):
155162

156163
log_files = ["master.log"]
157164

165+
metrics = {}
166+
167+
metrics_csv_file_name = "metrics.csv"
168+
is_metrics_file_created = False
169+
158170

159171
def create_subnet():
160172
# if no vpc id provided, list vpcs
@@ -329,12 +341,42 @@ def create_pservers():
329341
cleanup(args.task_name)
330342

331343

344+
def save_metrics_data(str_msg):
345+
#parse msg
346+
logging.info("found metrics data, saving it to csv file")
347+
global is_metrics_file_created
348+
metrics_raw = str_msg.split(",")
349+
with open(args.log_path + metrics_csv_file_name, 'a') as csvfile:
350+
csv_fieldnames = []
351+
csv_write_data = {}
352+
for metric in metrics_raw:
353+
metric_data = metric.split("=")
354+
metric_key = metric_data[0].strip()
355+
metric_val = float(metric_data[1].strip())
356+
if not metric_key in metrics:
357+
metrics[metric_key] = []
358+
metric_repo = metrics[metric_key]
359+
metric_repo.append(metric_val)
360+
csv_fieldnames.append(metric_key)
361+
csv_write_data[metric_key] = metric_val
362+
writer = csv.DictWriter(csvfile, fieldnames=csv_fieldnames)
363+
if not is_metrics_file_created:
364+
writer.writeheader()
365+
is_metrics_file_created = True
366+
writer.writerow(csv_write_data)
367+
logging.info("csv file appended")
368+
369+
332370
def log_to_file(source, filename):
333371
if not filename in log_files:
334372
log_files.append(filename)
335373
with open(args.log_path + filename, "a") as log_file:
336374
for line in iter(source.readline, ""):
337375
log_file.write(line)
376+
if (line.startswith(args.metric_data_identifier)):
377+
#found key data, trying to add to csv
378+
line = line.replace(args.metric_data_identifier, "")
379+
save_metrics_data(line)
338380

339381

340382
def parse_command(command_raw, defaults={}):

0 commit comments

Comments
 (0)