diff --git a/sensor-monitor/threshold_alarm_logger.cpp b/sensor-monitor/threshold_alarm_logger.cpp
index 78dbc55..69ecb10 100644
--- a/sensor-monitor/threshold_alarm_logger.cpp
+++ b/sensor-monitor/threshold_alarm_logger.cpp
@@ -107,7 +107,12 @@
                   "arg0='" +
                       perfLossInterface + "'",
                   std::bind(&ThresholdAlarmLogger::propertiesChanged, this,
-                            std::placeholders::_1))
+                            std::placeholders::_1)),
+    ifacesRemovedMatch(bus,
+                       "type='signal',member='InterfacesRemoved',arg0path="
+                       "'/xyz/openbmc_project/sensors/'",
+                       std::bind(&ThresholdAlarmLogger::interfacesRemoved, this,
+                                 std::placeholders::_1))
 {
     _powerState->addCallback("thresholdMon",
                              std::bind(&ThresholdAlarmLogger::powerStateChanged,
@@ -175,6 +180,25 @@
     }
 }
 
+void ThresholdAlarmLogger::interfacesRemoved(sdbusplus::message::message& msg)
+{
+    static const std::vector<std::string> thresholdNames{
+        warningInterface, criticalInterface, perfLossInterface};
+    sdbusplus::message::object_path path;
+    std::vector<std::string> interfaces;
+
+    msg.read(path, interfaces);
+
+    for (const auto& interface : interfaces)
+    {
+        if (std::find(thresholdNames.begin(), thresholdNames.end(),
+                      interface) != thresholdNames.end())
+        {
+            alarms.erase(InterfaceKey{path, interface});
+        }
+    }
+}
+
 void ThresholdAlarmLogger::checkThresholds(const std::string& interface,
                                            const std::string& sensorPath,
                                            const std::string& service)
diff --git a/sensor-monitor/threshold_alarm_logger.hpp b/sensor-monitor/threshold_alarm_logger.hpp
index 3380e49..a43191a 100644
--- a/sensor-monitor/threshold_alarm_logger.hpp
+++ b/sensor-monitor/threshold_alarm_logger.hpp
@@ -187,6 +187,11 @@
     sdbusplus::bus::match::match perfLossMatch;
 
     /**
+     * @brief The InterfacesRemoved match object
+     */
+    sdbusplus::bus::match::match ifacesRemovedMatch;
+
+    /**
      * @brief The current alarm values
      */
     std::map<InterfaceKey, std::map<PropertyName, bool>> alarms;
