Создание формулы для расчета «работоспособности» устройства на основе времени безотказной работы / перезагрузок - PullRequest
6 голосов
/ 02 февраля 2010

У меня есть несколько сотен сетевых устройств, которые регистрируются на нашем сервере каждые 10 минут. Каждое устройство имеет встроенные часы, подсчитывающие секунды и сообщающие прошедшие секунды при каждой регистрации на сервере. Итак, пример набора данных выглядит как

CheckinTime               Runtime
2010-01-01 02:15:00.000   101500
2010-01-01 02:25:00.000   102100
2010-01-01 02:35:00.000   102700

и т.д.

Если устройство перезагружается, когда оно возвращается на сервер, оно сообщает о времени выполнения 0.

То, что я пытаюсь определить, - это некая количественная метрика для «здоровья» устройства.

Если устройство много раз перезагружалось в прошлом, но не перезагружалось в последние xx дни, то оно считается работоспособным по сравнению с устройством с большим временем безотказной работы, за исключением последних xx дней, когда оно неоднократно перезагружалось. Кроме того, устройство, которое работало в течение 30 дней и только что перезагружалось, не следует считать «проблемным» по сравнению с устройством, которое непрерывно перезагружалось каждые 24 часа или около того в течение последних XX дней.

Я пробовал несколько способов расчета здоровья, используя различные метрики: 1. среднее количество перезагрузок 2. максимум (время работы) 3. ср (время работы) 4. Количество перезагрузок за последние 24 часа 5. Количество перезагрузок за последние 3 дня 6. Количество перезагрузок за последние 7 дней 7. Количество перезагрузок за последние 30 дней

Каждый отдельный показатель учитывает только один аспект работоспособности устройства, но не учитывает общее состояние работоспособности по сравнению с другими устройствами или его текущее состояние.

Любые идеи будут с благодарностью.

Ответы [ 5 ]

6 голосов
/ 02 февраля 2010

Вы могли бы сделать что-то вроде показателя надежности Windows 7 - начать с полной работоспособности (скажем, 10). Каждый час / день / цикл регистрации, увеличивайте здоровье на (10 - currenthealth)*incrementfactor). Каждый раз, когда сервер отключается, вычитайте определенный процент.

Итак, с учетом коэффициента столкновения, равного 20% / аварии, и коэффициента приращения, равного 10% / день:

  • Если устройство много раз перезагружалось в прошлом, но не перезагружалось в течение последних 20 дней, его здоровье будет равно 8,6

  • Большое время безотказной работы, за исключением последних 2 дней, когда он многократно перезагружался 5 раз, будет иметь здоровье 4,1

  • устройство, которое работало в течение 30 дней и только что перезагрузилось, будет иметь здоровье 8

  • устройство, которое непрерывно перезагружается каждые 24 часа или около того в течение последних 10 дней, будет иметь здоровье 3,9

Чтобы просмотреть пример:

Начиная с 10
День 1: без сбоев, new health = CurrentHealth + (10 - CurrentHealth)*.1 = 10
День 2: одна авария, new health = currenthealth - currentHealth*.2 = 8 Но все равно увеличивать каждый день, так что new health = 8 + (10 - 8)*.1 = 8.2
День 3: без сбоев, новое здоровье = 8,4
День 4: две аварии, новое здоровье = 5,8

0 голосов
/ 02 февраля 2010

Можете ли вы разбить устройства на группы похожих устройств? Тогда вы можете сравнить отдельное устройство с его аналогами.

Еще одно предложение - изучить различные алгоритмы скользящего среднего. Они должны сгладить данные временных рядов, а также выделить тренды.

0 голосов
/ 02 февраля 2010

Всегда ли он сообщает о времени выполнения 0 при перезагрузке? Или что-то близкое к нулю (все равно меньше прежнего времени)?

Вы можете рассчитать это двумя способами. 1. Чем меньше число, тем меньше проблем. 2. Чем выше число, тем больше баллов.

Полагаю, вам нужно учесть, что здоровье может меняться. Так что со временем это может ухудшиться. Поэтому последние значения должны иметь больший вес, чем старые. Это может указывать на экспоненциальный рост.

Чем больше перезагрузок у него было за последний период, тем больше могла быть сломана система. Но также глядя на более короткие интервалы перезагрузок. Скажем, 5 перезагрузок в день против 10 перезагрузок за 2 недели. Это значит много другого. Поэтому я думаю, что время должно быть метрикой, а также количество перезагрузок в этой формуле.

Полагаю, вам нужно рассчитать плотность количества перезагрузок за последний период.

Вы можете использовать вес плотности, просто разделив. Потому что, чем больше число, на которое вы делите, тем ниже будет результат, и насколько может уменьшиться вес числа.

Псевдокод:

function calcHealth(machine)
float value = 0;
float threshold = 800;

for each (reboot in machine.reboots) {
    reboot.daysPast = time() - reboot.time;

    // the more days past, the lower the value, so the lower the weight
    value += (100 / reboot.daysPast);
}

return (value == 0) ? 0 : (threshold / value);
}

Вы можете продвинуть эту функцию, например, отфильтровывая maxDaysPast и играя с порогом и тому подобным.

Эта формула основана на этом графике: f (x) = 100 / x . Как видите, при малых числах (низкое значение x) значение выше, чем при большом значении x. Так вот как эта формула вычисляет вес daysPast. Потому что ниже daysPast == ниже x == вес больше.

При значении + = эта формула подсчитывает перезагрузки, а при части 100 / x - вес при перезагрузке, где вес - время.

При возврате порог делится на значение. Это связано с тем, что чем выше оценка перезагрузок, тем ниже должен быть результат.

Вы можете использовать программу построения графиков или калькулятор, чтобы увидеть изгиб графика, который также является изгибом веса daysPast.

0 голосов
/ 02 февраля 2010

Вы можете использовать средневзвешенное время безотказной работы и включать текущее время безотказной работы только тогда, когда оно увеличит среднее значение.

Вес будет соответствовать недавнему времени безотказной работы, поэтому самые последние периоды бездействия имеют наибольший вес.

0 голосов
/ 02 февраля 2010

Вы можете взять число перезагрузок / т конкретного компьютера и сравнить его со стандартным отклонением всей совокупности. Те, кто падает, говорят, что три стандартных отклонения от среднего значения, где он чаще перезагружается, могут быть помечены.

...