diff --git a/sensor-monitor/threshold_alarm_logger.cpp b/sensor-monitor/threshold_alarm_logger.cpp
index 03b35ba..34090f9 100644
--- a/sensor-monitor/threshold_alarm_logger.cpp
+++ b/sensor-monitor/threshold_alarm_logger.cpp
@@ -404,6 +404,8 @@
 
 void ThresholdAlarmLogger::checkThresholds()
 {
+    std::vector<InterfaceKey> toErase;
+
     for (const auto& [interfaceKey, alarmMap] : alarms)
     {
         for (const auto& [propertyName, alarmValue] : alarmMap)
@@ -412,11 +414,36 @@
             {
                 const auto& sensorPath = std::get<0>(interfaceKey);
                 const auto& interface = std::get<1>(interfaceKey);
+                std::string service;
 
-                createEventLog(sensorPath, interface, propertyName, alarmValue);
+                try
+                {
+                    // Check that the service that provides the alarm is still
+                    // running, because if it died when the alarm was active
+                    // there would be no indication of it unless we listened
+                    // for NameOwnerChanged and tracked services, and this is
+                    // easier.
+                    service = SDBusPlus::getService(bus, sensorPath, interface);
+                }
+                catch (const DBusServiceError& e)
+                {
+                    // No longer on D-Bus delete the alarm entry
+                    toErase.emplace_back(sensorPath, interface);
+                }
+
+                if (!service.empty())
+                {
+                    createEventLog(sensorPath, interface, propertyName,
+                                   alarmValue);
+                }
             }
         }
     }
+
+    for (const auto& e : toErase)
+    {
+        alarms.erase(e);
+    }
 }
 
 } // namespace sensor::monitor
