diff --git a/monitor/main.cpp b/monitor/main.cpp
index 9ab6d15..fbdcd0d 100644
--- a/monitor/main.cpp
+++ b/monitor/main.cpp
@@ -80,6 +80,14 @@
                                        std::bind(&System::sighupHandler,
                                                  &system, std::placeholders::_1,
                                                  std::placeholders::_2));
+
+    // Enable SIGUSR1 handling to dump debug data
+    stdplus::signal::block(SIGUSR1);
+    sdeventplus::source::Signal sigUsr1(
+        event, SIGUSR1,
+        std::bind(&System::dumpDebugData, &system, std::placeholders::_1,
+                  std::placeholders::_2));
+
     bus.request_name(THERMAL_ALERT_BUSNAME);
 #else
     system.start();
diff --git a/monitor/system.cpp b/monitor/system.cpp
index 526d7fe..bcd9e33 100644
--- a/monitor/system.cpp
+++ b/monitor/system.cpp
@@ -46,6 +46,8 @@
 
 using namespace phosphor::logging;
 
+const std::string System::dumpFile = "/tmp/fan_monitor_dump.json";
+
 System::System(Mode mode, sdbusplus::bus_t& bus,
                const sdeventplus::Event& event) :
     _mode(mode),
@@ -553,4 +555,30 @@
     }
 }
 
+void System::dumpDebugData(sdeventplus::source::Signal&,
+                           const struct signalfd_siginfo*)
+{
+    json output;
+
+    if (_loaded)
+    {
+        output["logs"] = getLogger().getLogs();
+        output["sensors"] = captureSensorData();
+    }
+    else
+    {
+        output["error"] = "Fan monitor not loaded yet.  Try again later.";
+    }
+
+    std::ofstream file{System::dumpFile};
+    if (!file)
+    {
+        log<level::ERR>("Could not open file for fan monitor dump");
+    }
+    else
+    {
+        file << std::setw(4) << output;
+    }
+}
+
 } // namespace phosphor::fan::monitor
diff --git a/monitor/system.hpp b/monitor/system.hpp
index df3e35f..bf6e6b6 100644
--- a/monitor/system.hpp
+++ b/monitor/system.hpp
@@ -26,6 +26,7 @@
 #include <nlohmann/json.hpp>
 #include <sdbusplus/bus.hpp>
 #include <sdeventplus/event.hpp>
+#include <sdeventplus/source/event.hpp>
 #include <sdeventplus/source/signal.hpp>
 
 #include <memory>
@@ -123,6 +124,13 @@
      */
     void load();
 
+    /**
+     * @brief Callback function to handle receiving a USR1 signal to dump
+     * debug data to a file.
+     */
+    void dumpDebugData(sdeventplus::source::Signal&,
+                       const struct signalfd_siginfo*);
+
   private:
     /**
      * @brief Callback from D-Bus when Inventory service comes online
@@ -199,6 +207,11 @@
     bool _loaded = false;
 
     /**
+     * @brief The name of the dump file
+     */
+    static const std::string dumpFile;
+
+    /**
      * @brief Captures tach sensor data as JSON for use in
      *        fan fault and fan missing event logs.
      *
