From 2ea002a3c58671bb309cc58851d2b6c5e82156b3 Mon Sep 17 00:00:00 2001 From: Eugenio Marzo Date: Tue, 1 Nov 2022 14:51:27 +0100 Subject: [PATCH] fix --- html5/index.html | 14 +++++++ scripts/logs_loop/start.py | 79 ++++++++++++++++++++++---------------- 2 files changed, 59 insertions(+), 34 deletions(-) diff --git a/html5/index.html b/html5/index.html index ffbe8ae..53d1ec5 100644 --- a/html5/index.html +++ b/html5/index.html @@ -291,6 +291,20 @@ experiments: +
+
-----------------------
+
Namespace:{pod.metadata.namespace}
+
Pod:{pod.metadata.name}
+
Container:{pod.metadata.name}
+
+
+ >>>{api_response_line} +
+
-----------------------
+ + + + diff --git a/scripts/logs_loop/start.py b/scripts/logs_loop/start.py index 461d11e..59d1abd 100644 --- a/scripts/logs_loop/start.py +++ b/scripts/logs_loop/start.py @@ -19,11 +19,20 @@ import time import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) -def compute_line(api_response_line, api_instance): +def compute_line(api_response_line, api_instance, container): logging.info(f"[logid:{logid}] API Response: {api_response_line}") - - logrow = f"
[namespace:{pod.metadata.namespace}][pod:{pod.metadata.name}]
>>>{api_response_line}
" - + logrow = f"""" +
+
-----------------------
+
Namespace:{pod.metadata.namespace}
+
Pod:{pod.metadata.name}
+
Container:{container}
+
+
+ >>>{api_response_line} +
+
-----------------------
+ """ #store = False sha256log = sha256(logrow.encode('utf-8')).hexdigest() @@ -124,7 +133,7 @@ while True: logging.info(f"[logid:{logid}] The Redis key log_pod_regex exists...") else: logging.info(f"[logid:{logid}] The Redis key log_pod_regex does NOT exists...") - r.set(f"log_pod_regex:{logid}", '{"pod":".*", "namespace":".*", "labels":".*", "annotations":".*"}') + r.set(f"log_pod_regex:{logid}", '{"pod":".*", "namespace":".*", "labels":".*", "annotations":".*", "containers": ".*"}') if r.exists(f"logs_enabled:{logid}"): logging.info(f"[logid:{logid}] The Redis key logs_enabled exists...") @@ -173,6 +182,7 @@ while True: namespace_re = json_re["namespace"] annotations_re = json_re["annotations"] labels_re = json_re["labels"] + containers_re = json_re["containers"] logging.info(f"[logid:{logid}] Gobal Json Regex is {json_re}") logging.info(f"[logid:{logid}] Regex for pod name is {pod_re}") @@ -202,40 +212,41 @@ while True: for pod in final_pod_list: container_list = [] for container in pod.spec.containers: - container_list.append(container.name) - logging.info(container_list) - r.set("containers:{pod.metadata.name}", str(container_list)) - if webtail_switch or (pod.metadata.labels.get('approle') != None and pod.metadata.labels['approle'] == 'chaosnode' and pod.status.phase != "Pending"): - try: - latest_log_tail = r.get(f"log_time:{pod.metadata.name}") - #logging.info(f"[logid:{logid}] Reading logs of {pod.metadata.name} on {pod.metadata.namespace}") - - if r.exists(f"log_time:{logid}:{pod.metadata.name}"): - latest_log_tail_time = r.get(f"log_time:{logid}:{pod.metadata.name}") - else: - latest_log_tail_time = time.time() - #logging.info(f"[logid:{logid}] Latest latest_log_tail for {pod.metadata.name} is {latest_log_tail_time}. Current Unix Time is {time.time()}") + if re.search(f"{containers_re}", container.name): + container_list.append(container.name) - since = int(time.time() - float(latest_log_tail_time)) + 1 + for container in container_list: + if webtail_switch or (pod.metadata.labels.get('approle') != None and pod.metadata.labels['approle'] == 'chaosnode' and pod.status.phase != "Pending"): + try: + latest_log_tail = r.get(f"log_time:{pod.metadata.name}") + #logging.info(f"[logid:{logid}] Reading logs of {pod.metadata.name} on {pod.metadata.namespace}") + + if r.exists(f"log_time:{logid}:{pod.metadata.name}"): + latest_log_tail_time = r.get(f"log_time:{logid}:{pod.metadata.name}") + else: + latest_log_tail_time = time.time() + #logging.info(f"[logid:{logid}] Latest latest_log_tail for {pod.metadata.name} is {latest_log_tail_time}. Current Unix Time is {time.time()}") - #logging.info(f"[logid:{logid}] Diff from time.time() and latest_log_tail_time for {pod.metadata.name} is {since}") + since = int(time.time() - float(latest_log_tail_time)) + 1 - if since == 0: - since = 1 + #logging.info(f"[logid:{logid}] Diff from time.time() and latest_log_tail_time for {pod.metadata.name} is {since}") - api_response = api_instance.read_namespaced_pod_log(name=pod.metadata.name, namespace=pod.metadata.namespace, since_seconds=since) - r.set(f"log_time:{logid}:{pod.metadata.name}", time.time()) + if since == 0: + since = 1 - if api_response == "": - continue + api_response = api_instance.read_namespaced_pod_log(name=pod.metadata.name, namespace=pod.metadata.namespace, since_seconds=since, container=container) + r.set(f"log_time:{logid}:{pod.metadata.name}", time.time()) - if type(api_response) is list: - for api_response_line in api_response: - compute_line(api_response_line, api_instance) - else: - for api_response_line in api_response.splitlines(): - compute_line(api_response_line, api_instance) + if api_response == "": + continue - except ApiException as e: - logging.info(e) + if type(api_response) is list: + for api_response_line in api_response: + compute_line(api_response_line, api_instance, container) + else: + for api_response_line in api_response.splitlines(): + compute_line(api_response_line, api_instance, container) + + except ApiException as e: + logging.info(e) time.sleep(1)