diff --git a/cfg_checker/modules/ceph/info.py b/cfg_checker/modules/ceph/info.py
index 0eb1f15..a3006af 100644
--- a/cfg_checker/modules/ceph/info.py
+++ b/cfg_checker/modules/ceph/info.py
@@ -6,7 +6,7 @@
 import tarfile
 import io
 from time import sleep
-
+from datetime import datetime
 
 from cfg_checker.common import logger_cli
 from cfg_checker.common.exception import KubeException
@@ -25,6 +25,22 @@
         self.env_config = config
         return
 
+    def get_info_archive_filename(self, client, project):
+        # prefill known data
+        _tags = ["CephCollectData"]
+        _tags.append(client)
+        _tags.append(project)
+
+        # generate date for tgz
+        _file_datetime_fmt = "%Y-%m-%d"
+        _dt = datetime.now().strftime(_file_datetime_fmt)
+        _tags.append(_dt)
+
+        # extension
+        _tags.append("tar")
+        _tags.append("gz")
+        return ".".join(_tags)
+
     def get_transposed_latency_table(self):
         _table = {
             "<dev>": []
@@ -164,6 +180,9 @@
             self.ceph_info = json.load(_f)
 
     def generate_archive(self, tgzfilename):
+        def _ensure_fname(ext):
+            return key + ext if _fname is None else _fname
+
         if not self.ceph_info:
             logger_cli.warning(
                 "WARNING: Ceph Info Data not detected. "
@@ -178,18 +197,23 @@
             )
             # Iterate every key and write data to tar file
             for key, d in self.ceph_info.items():
-                _filename = None
+                _fname = None
                 # Cast buf to a proper type
                 _buf = None
+                if "filename" in d:
+                    _fname = d["filename"]
                 if isinstance(d["data"], dict) or isinstance(d["data"], list):
                     _buf = json.dumps(d["data"], indent=2)
-                    _filename = key + ".json"
+                    # _filename = key + ".json" if _fname is not None else _fname
+                    _filename = _ensure_fname(".json")
                 elif isinstance(d["data"], str):
                     _buf = d["data"]
-                    _filename = key + ".txt"
+                    # _filename = key + ".txt"
+                    _filename = _ensure_fname(".txt")
                 else:
                     _buf = str(d["data"])
-                    _filename = key + ".txt"
+                    # _filename = key + ".txt"
+                    _filename = _ensure_fname(".txt")
                 logger_cli.debug("... writing '{}'".format(_filename))
                 _tgz.add_file(_filename, buf=_buf, replace=True)
 
@@ -332,7 +356,8 @@
             logger_cli.debug("... found '{}'".format(_names[0]))
         return _names[0]
 
-    def _add_ceph_info_item(self, key, title, data):
+    def _add_ceph_info_item(self, key, title, data, filename=None):
+        # handle data
         if key in self.ceph_info:
             self.ceph_info[key]["title"] = title
             self.ceph_info[key]["data"] = data
@@ -341,6 +366,8 @@
                 "title": title,
                 "data": data
             }
+        if filename:
+            self.ceph_info[key]["filename"] = filename
 
     def _parse_dev_classes(self, deviceClasses):
         _devClasses = []
@@ -439,13 +466,15 @@
         self._add_ceph_info_item(
             "crushmap_json",
             "Crush Map (json)",
-            _cj("crushtool -i " + _cmap_tmp_path + " --dump")
+            _cj("crushtool -i " + _cmap_tmp_path + " --dump"),
+            filename="crushmap.json"
         )
         # _crushmap = _cj("crushtool -i " + _cmap_tmp_path + " --dump")
         self._add_ceph_info_item(
             "crushmap_text",
             "Crush Map (text)",
-            _c("crushtool -d " + _cmap_tmp_path)
+            _c("crushtool -d " + _cmap_tmp_path),
+            filename="crushmap.json"
         )
 
         logger_cli.info("-> Collecting ceph osd crush dump")
