20
20
import threading
21
21
import logging
22
22
import copy
23
+ import csv
23
24
24
25
import netaddr
25
26
import boto3
@@ -136,6 +137,12 @@ def str2bool(v):
136
137
parser .add_argument (
137
138
'--master_server_ip' , type = str , default = "" , help = "master server private ip" )
138
139
140
+ parser .add_argument (
141
+ '--metric_data_identifier' ,
142
+ type = str ,
143
+ default = "**metrics_data: " ,
144
+ help = "key string to identify metrics data" )
145
+
139
146
parser .add_argument (
140
147
'--no_clean_up' ,
141
148
type = str2bool ,
@@ -155,6 +162,11 @@ def str2bool(v):
155
162
156
163
log_files = ["master.log" ]
157
164
165
+ metrics = {}
166
+
167
+ metrics_csv_file_name = "metrics.csv"
168
+ is_metrics_file_created = False
169
+
158
170
159
171
def create_subnet ():
160
172
# if no vpc id provided, list vpcs
@@ -329,12 +341,42 @@ def create_pservers():
329
341
cleanup (args .task_name )
330
342
331
343
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
+
332
370
def log_to_file (source , filename ):
333
371
if not filename in log_files :
334
372
log_files .append (filename )
335
373
with open (args .log_path + filename , "a" ) as log_file :
336
374
for line in iter (source .readline , "" ):
337
375
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 )
338
380
339
381
340
382
def parse_command (command_raw , defaults = {}):
0 commit comments