def execute(temporal): logger.info("Getting Kafka metrics descriptor from %s", KAFKA_METRICS_DESCRIPTOR_URL) a = AmbariHelper() kafka_metrics_descriptor = a.query_url(KAFKA_METRICS_DESCRIPTOR_URL) clusters_result = a.query_url("clusters") kafka_metrics = {} kafka_metrics_url = KAFKA_METRICS_BASE_URL.format(clusters_result["items"][0]["Clusters"]["cluster_name"]) idx = 0 end_epoch = calendar.timegm(time.gmtime()) start_epoch = end_epoch - temporal for i in kafka_metrics_descriptor["artifact_data"]["KAFKA"]["KAFKA_BROKER"]["Component"][0]["metrics"]["default"]: if (temporal > 0) and kafka_metrics_descriptor["artifact_data"]["KAFKA"]["KAFKA_BROKER"]["Component"][0][ "metrics" ]["default"][i]["temporal"]: metric = i + "[{0},{1},15]".format(start_epoch, end_epoch) else: metric = i if metric: if idx > 0: kafka_metrics_url += "," kafka_metrics_url += metric idx += 1 if temporal > 0: kafka_metrics_url += "&_{0}".format(1000 * end_epoch) logger.info("Querying Metrics Url: %s", kafka_metrics_url) kafka_metrics = a.query_url(kafka_metrics_url) logger.info("Kafka Metrics:\r\n%s", kafka_metrics) if "metrics" in kafka_metrics: return kafka_metrics else: error_msg = "Kafka metrics unavailable. Please check the status of Ambari Metrics Server or trying doing a temporal query using --temporal parameter." logger.error(error_msg) ambari_metrics_service = a.get_service_info(AMBARI_METRICS) logger.debug("Ambari metrics service:\r\n%s", ambari_metrics_service) raise RuntimeError(error_msg)