Skip to content

Commit 934f765

Browse files
authored
Merge pull request bitcoin-dev-project#425 from willcl-ark/better-grepper
better log-grepper
2 parents e5c7df2 + 5a32cee commit 934f765

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

src/warnet/backend/kubernetes_backend.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -313,34 +313,33 @@ def get_messages(
313313
messages.sort(key=lambda x: x["time"])
314314
return messages
315315

316-
def logs_grep(self, pattern: str, network: str):
316+
def logs_grep(self, pattern: str, network: str, k8s_timestamps=False, no_sort=False):
317317
compiled_pattern = re.compile(pattern)
318318
matching_logs = []
319-
320319
pods = self.client.list_namespaced_pod(self.namespace)
321-
322-
# TODO: Can adapt to only search lnd or bitcoind containers?
323320
relevant_pods = [pod for pod in pods.items if "warnet" in pod.metadata.name]
324321

325-
# Iterate through the filtered pods to fetch and search logs
326322
for pod in relevant_pods:
327323
try:
328324
log_stream = self.client.read_namespaced_pod_log(
329325
name=pod.metadata.name,
330326
container=BITCOIN_CONTAINER_NAME,
331327
namespace=self.namespace,
332-
timestamps=True,
328+
timestamps=k8s_timestamps,
333329
_preload_content=False,
334330
)
335-
336331
for log_entry in log_stream:
337332
log_entry_str = log_entry.decode("utf-8").strip()
338333
if compiled_pattern.search(log_entry_str):
339-
matching_logs.append(log_entry_str)
334+
matching_logs.append((log_entry_str, pod.metadata.name))
340335
except ApiException as e:
341336
print(f"Error fetching logs for pod {pod.metadata.name}: {e}")
342337

343-
return "\n".join(matching_logs)
338+
sorted_logs = matching_logs if no_sort else sorted(matching_logs, key=lambda x: x[0])
339+
# Prepend pod names
340+
formatted_logs = [f"{pod_name}: {log}" for log, pod_name in sorted_logs]
341+
342+
return "\n".join(formatted_logs)
344343

345344
def generate_deployment_file(self, warnet):
346345
"""

src/warnet/cli/bitcoin.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,21 @@ def messages(node_a, node_b, network):
4747

4848
@bitcoin.command()
4949
@click.argument("pattern", type=str, required=True)
50+
@click.option("--show-k8s-timestamps", is_flag=True, default=False, show_default=True)
51+
@click.option("--no-sort", is_flag=True, default=False, show_default=True)
5052
@click.option("--network", default="warnet", show_default=True)
51-
def grep_logs(pattern, network):
53+
def grep_logs(pattern, network, show_k8s_timestamps, no_sort):
5254
"""
5355
Grep combined logs via fluentd using regex <pattern>
5456
"""
55-
print(rpc_call("logs_grep", {"network": network, "pattern": pattern}))
57+
print(
58+
rpc_call(
59+
"logs_grep",
60+
{
61+
"network": network,
62+
"pattern": pattern,
63+
"k8s_timestamps": show_k8s_timestamps,
64+
"no_sort": no_sort,
65+
},
66+
)
67+
)

src/warnet/server.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,13 +570,15 @@ def generate_deployment(self, graph_file: str, network: str = "warnet") -> str:
570570
self.logger.error(msg)
571571
raise ServerError(message=msg) from e
572572

573-
def logs_grep(self, pattern: str, network: str = "warnet") -> str:
573+
def logs_grep(
574+
self, pattern: str, network: str = "warnet", k8s_timestamps=False, no_sort=False
575+
) -> str:
574576
"""
575577
Grep the logs from the fluentd container for a regex pattern
576578
"""
577579
try:
578580
wn = self.get_warnet(network)
579-
return wn.container_interface.logs_grep(pattern, network)
581+
return wn.container_interface.logs_grep(pattern, network, k8s_timestamps, no_sort)
580582
except Exception as e:
581583
msg = f"Error grepping logs using pattern {pattern}: {e}"
582584
self.logger.error(msg)

0 commit comments

Comments
 (0)