X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=nfvbench%2Ffluentd.py;h=a9bda62a80b0cab62088d454179f32a6cac7fa06;hb=refs%2Fchanges%2F81%2F45981%2F1;hp=5bfcebedaa743e2c034ff98dfcd5e40b77c0153a;hpb=00410ac4f2b167af4d6cd01072c791ac6804ce5a;p=nfvbench.git diff --git a/nfvbench/fluentd.py b/nfvbench/fluentd.py index 5bfcebe..a9bda62 100644 --- a/nfvbench/fluentd.py +++ b/nfvbench/fluentd.py @@ -15,6 +15,7 @@ from datetime import datetime from fluent import sender import logging +import pytz class FluentLogHandler(logging.Handler): @@ -40,7 +41,7 @@ class FluentLogHandler(logging.Handler): def start_new_run(self): '''Delimitate a new run in the stream of records with a new timestamp ''' - self.runlogdate = str(datetime.now()) + self.runlogdate = self.__get_timestamp() # reset counters self.__warning_counter = 0 self.__error_counter = 0 @@ -49,13 +50,21 @@ class FluentLogHandler(logging.Handler): def emit(self, record): data = { - "runlogdate": self.runlogdate, "loglevel": record.levelname, - "message": self.formatter.format(record) + "message": self.formatter.format(record), + "@timestamp": self.__get_timestamp() } + # if runlogdate is 0, it's a log from server (not an nfvbench run) so do not send runlogdate + if self.runlogdate != 0: + data["runlogdate"] = self.runlogdate + self.__update_stats(record.levelno) self.sender.emit(None, data) + # this function is called by summarizer + def record_send(self, record): + self.sender.emit(None, record) + # send START record for each run def __send_start_record(self): data = { @@ -64,7 +73,8 @@ class FluentLogHandler(logging.Handler): "message": "NFVBENCH run is started", "numloglevel": 0, "numerrors": 0, - "numwarnings": 0 + "numwarnings": 0, + "@timestamp": self.__get_timestamp() } self.sender.emit(None, data) @@ -72,13 +82,17 @@ class FluentLogHandler(logging.Handler): def send_run_summary(self, run_summary_required): if run_summary_required or self.__get_highest_level() == logging.ERROR: data = { - "runlogdate": self.runlogdate, "loglevel": "RUN_SUMMARY", "message": self.__get_highest_level_desc(), "numloglevel": self.__get_highest_level(), "numerrors": self.__error_counter, - "numwarnings": self.__warning_counter + "numwarnings": self.__warning_counter, + "@timestamp": self.__get_timestamp() } + # if runlogdate is 0, it's a log from server (not an nfvbench run) + # so don't send runlogdate + if self.runlogdate != 0: + data["runlogdate"] = self.runlogdate self.sender.emit(None, data) def __get_highest_level(self): @@ -102,3 +116,7 @@ class FluentLogHandler(logging.Handler): self.__warning_counter += 1 elif levelno == logging.ERROR: self.__error_counter += 1 + + def __get_timestamp(self): + return datetime.utcnow().replace(tzinfo=pytz.utc).strftime( + "%Y-%m-%dT%H:%M:%S.%f%z")