diff --git a/cfg_checker/modules/ceph/__init__.py b/cfg_checker/modules/ceph/__init__.py
index 85d4273..3f726f8 100644
--- a/cfg_checker/modules/ceph/__init__.py
+++ b/cfg_checker/modules/ceph/__init__.py
@@ -165,7 +165,8 @@
     ceph_bench_parser.add_argument(
         '--offset-increment',
         metavar="offset_increment", default="500M",
-        help="Offset to be used in 'read' and 'write' modes if multiple jobs used"
+        help="Offset to be used in 'read' and 'write' modes if multiple jobs "
+             "used"
         "Default: '500M'"
     )
 
@@ -184,6 +185,7 @@
 
     logger_cli.info("# Collecting Ceph cluster information")
     ceph_info.gather_info()
+    ceph_info.gather_osd_configs()
 
     # Debug, enable if needed to debug report generation
     # without actuall data collecting each time
@@ -211,6 +213,7 @@
     # ceph_info.load_info()
     # end debug
     ceph_info.gather_info()
+    ceph_info.gather_osd_configs()
     ceph_info.get_transposed_latency_table()
     ceph_info.get_latest_health_readout()
     ceph_info.create_html_report(_filename)
diff --git a/cfg_checker/modules/ceph/info.py b/cfg_checker/modules/ceph/info.py
index f6d5758..2a23936 100644
--- a/cfg_checker/modules/ceph/info.py
+++ b/cfg_checker/modules/ceph/info.py
@@ -594,3 +594,63 @@
         )
 
         return
+
+    def gather_osd_configs(self):
+        _total_osd = len(self.ceph_info["ceph_osd_df"]["data"]["nodes"])
+        logger_cli.info(
+            "-> Gathering OSD configuration ({})".format(_total_osd)
+        )
+        # Shortcuts
+        # _c = self._safe_tools_cmd
+        _cj = self._safe_get_cmd_output_as_json
+        _progress = Progress(_total_osd)
+        _idx = 1
+        _cfgs = {}
+        for _osd in self.ceph_info["ceph_osd_df"]["data"]["nodes"]:
+            _progress.write_progress(_idx, note=_osd["name"])
+            _cfgs[_osd["name"]] = _cj(
+                "ceph config show-with-defaults -f json {}".format(
+                    _osd["name"]
+                )
+            )
+            _idx += 1
+        _progress.end()
+
+        # Process configs
+        _base = {}
+        _uniq = {}
+        logger_cli.info("-> Filtering config values")
+        _progress = Progress(_total_osd)
+        _idx = 1
+        for _osd, _data in _cfgs.items():
+            _progress.write_progress(_idx, note=_osd)
+            for _o in _data:
+                _name = _o.pop("name")
+                if not _o["value"]:
+                    _o["value"] = "-"
+                if _name not in _base:
+                    _base[_name] = _o
+                elif _base[_name]["value"] != _o["value"]:
+                    _progress.clearline()
+                    logger_cli.info(
+                        "...specific value for {} (src: '{}'): {}={}".format(
+                            _osd,
+                            _o["source"],
+                            _name,
+                            _o["value"]
+                        )
+                    )
+                    _uniq[_osd] = {
+                        _name: _o
+                    }
+            _idx += 1
+        _progress.end()
+        self._add_ceph_info_item(
+            "osd_config_data",
+            "OSD Configuration values",
+            {
+                "common": _base,
+                "uniq": _uniq
+            }
+        )
+        return
diff --git a/setup.py b/setup.py
index d409398..da4f628 100644
--- a/setup.py
+++ b/setup.py
@@ -38,7 +38,7 @@
 
 setup(
     name="mcp-checker",
-    version="0.67",
+    version="0.68",
     author="Alex Savatieiev",
     author_email="osavatieiev@mirantis.com",
     classifiers=[
diff --git a/templates/ceph_info_html.j2 b/templates/ceph_info_html.j2
index 9dca52a..ac4d83f 100644
--- a/templates/ceph_info_html.j2
+++ b/templates/ceph_info_html.j2
@@ -84,6 +84,8 @@
         }
         
         .row_content {
+			font-family: "LaoSangamMN", Monaco, monospace;
+			font-size: 0.8em;
             padding: 0 18px;
             background-color: white;
             max-height: 0;
@@ -138,6 +140,13 @@
             padding-right: 0px;
             margin: 1px;
         }
+        td > .osdconf_group {
+            display: inline-block;
+            grid-template-columns: repeat(3, auto);
+            padding-left: 0px;
+            padding-right: 0px;
+            margin: 1px;
+        }
         .item {
         	display: inline-grid;
   			border-width: 1px;
@@ -218,6 +227,9 @@
         .lat_apply { border-color: #a0c0c0; background-color: rgb(255, 250, 250); text-align: left;  width: 35px}
         .meta_name { border-color: #c4b890; background-color: #e7dbb6; text-align: left; width: 150px;}
         .meta_value { border-color: #c6c3ba;background-color: #d4d4d4; text-align: left; width: 480px;}
+        .conf_name { border-color: #c4b890; background-color: #e7dbb6; text-align: left; width: 295px; word-break: break-all;}
+        .conf_value { border-color: #c6c3ba;background-color: #d4d4d4; text-align: left; width: 280px; word-break: break-all;}
+        .conf_source { border-color: #c6c3ba;background-color: #a4a4a4; text-align: left; width: 50px;}
 
         .map_grid {
             display: grid;
@@ -334,6 +346,7 @@
         <button class="bar-item" onclick="openBar(event, 'status')">Status</button>
         <button class="bar-item" onclick="openBar(event, 'latency')">Latency</button>
         <button class="bar-item" onclick="openBar(event, 'crush')">CRUSH Map</button>
+        <button class="bar-item" onclick="openBar(event, 'osdconf')">OSD Conf</button>
         <button class="bar-item" onclick="openBar(event, 'mondump')">Monitors</button>
         <button class="bar-item" onclick="openBar(event, 'df')">Pools</button>
         <button class="bar-item" onclick="openBar(event, 'dfrados')">Rados</button>
@@ -630,6 +643,46 @@
 </div>
 {% endmacro %}
 
+<!-- OSD Configuration -->
+{% macro osdconf_page(info, id_label) %}
+<div id="{{ id_label }}" class="barcontent">
+    <h5>{{ caller() }}</h5>
+    <hr>
+    {% set cbase = info["osd_config_data"]["data"]["common"] %}
+    {% set cuniq = info["osd_config_data"]["data"]["uniq"] %}
+    <button type="button" class="row_button">{{ cbase | length }} common configuration values</button>
+    <div class="row_content">
+        <table class="ceph_status"><tbody>
+            <tr><td class="metadata">
+            {% for tname, tdata in cbase.items() %}
+                <div class="osdconf_group">
+                    <div class="item conf_name">{{ tname }}</div>
+                    <div class="item conf_value">{{ tdata["value"] }}</div>
+                    <div class="item conf_source">{{ tdata["source"] }}</div>
+                </div>
+            {% endfor %}
+            </td></tr>
+        </tbody></table>
+    </div>
+    {% for osdname in cuniq.keys() | sort %}
+    <button type="button" class="row_button">{{ osdname }}: {{ cuniq[osdname] | length }} uniq values</button>
+    <div class="row_content">
+        <table class="ceph_status"><tbody>
+            <tr><td class="metadata">
+            {% for tname, tdata in cuniq[osdname].items() %}
+                <div class="osdconf_group">
+                    <div class="item conf_name">{{ tname }}</div>
+                    <div class="item conf_value">{{ tdata["value"] }}</div>
+                    <div class="item conf_source">{{ tdata["source"] }}</div>
+                </div>
+            {% endfor %}
+            </td></tr>
+        </tbody></table>
+    </div>
+    {% endfor %}
+</div>
+{% endmacro %}
+
 <!-- Latency -->
 {% macro latency_page(lat, id_label) %}
 <div id="{{ id_label }}" class="barcontent">
@@ -942,6 +995,10 @@
     CRUSH map
 {% endcall %}
 
+{% call osdconf_page(info, "osdconf") %}
+    OSD configs
+{% endcall %}
+
 {% call latency_page(info['osd_latency_data'], "latency") %}
     Quick latency check for all OSDs
 {% endcall %}
