def metrics( self, metric_type: MetricType = MetricType.TIMESTAMP, statistic: MetricStatistic = MetricStatistic.MAX, ) -> Dict[str, List[Any]]: """Gets all the metrics data, where the keys are the column names, and the values are a list containing the values in each row. For example, the table: timestamp energy 0 0.1 1 0.2 would be represented as: { "timestamp" : [0, 1], "energy" : [0.1, 0.2] } values may be integers, floats, strings or None. Args: metric_type (MetricType): The type of metrics to get. Default: MetricType.TIMESTAMP. statistic (MetricStatistic): The statistic to determine which metric value to use when there is a conflict. Default: MetricStatistic.MAX. Returns: Dict[str, List[Union[str, float, int]]] : The metrics data. """ parser = LogMetricsParser() current_time = str(time.time()) for line in self.run_log.splitlines(): if line.startswith("Metrics -"): parser.parse_log_message(current_time, line) return parser.get_parsed_metrics(metric_type, statistic)
def _parse_log_query_results( self, results: List[Any], metric_type: MetricType, statistic: MetricStatistic ) -> Dict[str, List[Union[str, float, int]]]: """ Parses CloudWatch Insights results and returns all found metrics. Args: results (List[Any]): A structured result from calling CloudWatch Insights to get logs that contain metrics. metric_type (MetricType): The type of metrics to get. statistic (MetricStatistic): The statistic to determine which metric value to use when there is a conflict. Returns: Dict[str, List[Union[str, float, int]]] : The metrics data. """ parser = LogMetricsParser() for result in results: self._parse_log_line(result, parser) return parser.get_parsed_metrics(metric_type, statistic)
def get_metrics_for_job( self, job_name: str, metric_type: MetricType = MetricType.TIMESTAMP, statistic: MetricStatistic = MetricStatistic.MAX, ) -> Dict[str, List[Union[str, float, int]]]: """ Synchronously retrieves all the algorithm metrics logged by a given Job. Args: job_name (str): The name of the Job. The name must be exact to ensure only the relevant metrics are retrieved. metric_type (MetricType): The type of metrics to get. Default is MetricType.TIMESTAMP. statistic (MetricStatistic): The statistic to determine which metric value to use when there is a conflict. Default is MetricStatistic.MAX. Returns: Dict[str, List[Union[str, float, int]]] : The metrics data, where the keys are the column names and the values are a list containing the values in each row. Example: timestamp energy 0 0.1 1 0.2 would be represented as: { "timestamp" : [0, 1], "energy" : [0.1, 0.2] } values may be integers, floats, strings or None. """ timeout_time = time.time() + self._poll_timeout_seconds parser = LogMetricsParser() log_streams = self._get_log_streams_for_job(job_name, timeout_time) for log_stream in log_streams: self._parse_metrics_from_log_stream(log_stream, timeout_time, parser) return parser.get_parsed_metrics(metric_type, statistic)