diff --git a/log_helper/README.md b/log_helper/README.md
new file mode 100644
index 0000000..8957b7f
--- /dev/null
+++ b/log_helper/README.md
@@ -0,0 +1,30 @@
+CLI helper tool
+======================
+
+This CLI helper tool gathers all log lines related to resource | req-id from particular folder with logs.
+All related resources and their IDs used in Tempest tests are stored in machine-readable YAML file with the following format:
+
+<test identifier>:
+  status: PASSED|FAILED
+  resources:
+    <openstack-service name (nova|neutron|glance|keystone)>:
+       <resource-name (port|server|security-group|router)>:
+       <request-id (req-xxxx) >:
+         name: <resource name (test-port-mytest|test-vm-)>
+         id/uuid: <resource id>
+         request: <exact request>
+        http:
+           error: <if exists>
+           status_code: <>
+
+How to use
+----------
+
+- Extract/save all openstack pod logs to folder (ex. pod-logs)
+
+- Generate tempest report using report_parcer tool
+
+- Run log_helper tool with folder name and tempest report YAML file as input parameters:
+
+``python3 log_helper.py <folder-with-logs> <tempest-report-yaml>``
+
diff --git a/log_helper/__init__.py b/log_helper/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/log_helper/__init__.py
diff --git a/log_helper/log_helper.py b/log_helper/log_helper.py
new file mode 100644
index 0000000..076de3f
--- /dev/null
+++ b/log_helper/log_helper.py
@@ -0,0 +1,39 @@
+import subprocess
+import sys
+import os
+import yaml
+
+
+def log_gather(resource_id, sub_resource):
+    """ Get all log lines related to req-id
+       :param resource_id: ID of Request
+       :param: name of sub_resource log file, e.g subnet.log for neutron resource
+       """
+    try:
+        directory = os.walk(sys.argv[1])
+    except IndexError:
+        print('Argument <folder-with-logs> is not provided')
+        raise ValueError('Argument <folder-with-logs> is not provided')
+
+    for dirs in directory:
+        run_cmd = f"grep {resource_id} {dirs[0]}/* >> {sub_resource}"
+        subprocess.run(run_cmd, shell=True)
+
+
+with open(sys.argv[2]) as f:
+    test_resources = yaml.safe_load(f)
+
+for test in test_resources.items():
+    # Find all the failed tempest test from YAML file and gather logs for
+    # related resources in corresponded folders
+    if test[1]['status'] == 'failure':
+        print('Collecting logs for ' + test[0])
+        os.makedirs(test[0], exist_ok=True)
+        for resource in test[1]['resources']:
+            os.makedirs(os.path.join(test[0], resource), exist_ok=True)
+            for sub_resource in test[1]['resources'][resource]:
+                log_gather(list(test[1]['resources'][resource][sub_resource])[0],
+                           os.path.join(test[0], resource, sub_resource + '.' + 'log'))
+
+print('The logger is finished')
+
