Если вам не нужен ответ с точностью до секунды, вы можете периодически записывать текущее время обновления в файл или запись базы данных один раз в 1 или 5 минут. Когда текущее время работы меньше, чем постоянное время работы, вы знаете, что вам нужно перейти к следующей записи, потому что система вышла из строя с момента последнего отчета. Затем используйте сумму всех значений времени работы за период, чтобы определить общее время работы за этот период. Если ваше время работоспособности охватывает границы периода (например, дни), вы можете также отслеживать время начала каждой записи времени работоспособности, чтобы вы знали, сколько это было до и сколько было после границы ( например, сколько из этого рекорда было со вчерашнего дня). Или вы можете просто принудительно начать новую запись каждый раз, когда вы пересекаете границу, если ваша граница постоянна (например, если ваши границы всегда представляют дни в пределах определенного часового пояса). Однако, если у вас есть возможность подсчитать время безотказной работы за последние 24 часа, а также рассчитать время безотказной работы за весь вчерашний день (который перекрывает последние 24 часа), у вас нет фиксированной границы, вдоль чтобы сделать это, вам нужно будет просто записать время начала и время работы и применить границы позже (как я описал вначале).
Честно говоря, я этого не проверял, но я бы попробовал.