Хорошего дня.
Как все вы знаете (и я) существует много программного обеспечения для мониторинга (с открытым исходным кодом или нет), я говорю о Nagios, Hyperic, OpenNMs, Tivoly, Microsoft ...
Как все вы знаете, лучший способ извлечь информацию о сервере Tomcat - это правильно защищенный компонент JMX.
Что ж, у меня двойная проблема:
Первый: Время опроса серверов мониторинга по умолчанию слишком велико. Вытягивание за пять минут не может обнаружить проблему или пик использования, даже перезапуск.
Решить эту проблему так же просто, как сократить время опроса до 5 секунд (или меньше).
Это, вероятно, приведет к перегрузке сервера, но это легко решить. (Больше железа)
В любом случае, это время опроса приводит нас к проблеме 2º.
Второй:
Если я вытащу счетчик JMx с интервалом в 5 секунд, и я получу около 5 счетчиков для каждого экземпляра tomcat, и у нас будет более 15 серверов ...
Это 375 выборок за 5 секунд. 4500 образцов в минуту. Да. База данных будет расти очень быстро.
Причина многих образцов:
Мне действительно нужен не каждый образец, а их среднее значение за определенный период времени (10 минут). Но если потянуть счетчик через 10-минутный интервал, я потеряю много информации, которая мне нужна для обнаружения проблем, ежемесячной графики использования ...
Вопрос:
Итак, вопрос простой. Есть ли какое-либо программное обеспечение, которое может часто извлекать данные, но сохраняет только среднее значение выборок за определенный период?
Ручное решение
Конечно, есть "ручные" варианты решения этой проблемы ... возможно, ежедневные задачи в БД, которые вычисляют среднее значение таблицы за период ...
Или сценарий на основе Perl, который выполняет итерацию ... и затем сохраняет ее в БД
Но прежде чем заняться программированием, я ищу в сети и спрашиваю.
заранее спасибо
Вы могли бы рассмотреть возможность взглянуть на jmx4perl который поставляется с очень мощным плагином Nagios check_jmx4perl. Для вашего случая использования, особенно может быть интересен режим истории jmx4perl-Agent. Это позволяет сохранять настраиваемое количество недавно запрошенных значений в памяти агента и возвращать их при каждом запросе. С помощью этих данных можно легко вычислить среднее значение без необходимости хранения на стороне клиента.
В настоящее время check_jmx4perl использует этот режим истории для отслеживания скорости увеличения (например, как быстро выделяется память), для расчета средних значений, пока нет ничего из коробки. Но это было бы хорошим дополнением к check_jmx4perl, поэтому я рассмотрю его в одном из следующих выпусков. Тем не менее, вам необходимо настроить интервал опроса Nagios. С помощью так называемого массового запроса вы можете получить значение всех таймеров для определенного сервера одновременно.
Все еще остается под вопросом, имеет ли смысл интервал опроса 5 секунд. Для вашего случая использования было бы намного лучше установить MBean (возможно, в выделенном сервлете) с внутренним планированием (потоком), который запрашивает таймеры внутри с такой высокой частотой и предоставляет только среднее значение как один атрибут JMX, который затем можно запросить. Это не должно быть так сложно кодировать.
Я полностью согласен с SvenW, но думаю, что вы можете сделать это с Zabbix (другие системы мониторинга также могут). Установка интервалов сбора информации до 5 секунд кажется возможной, процесс демона Zabbix HouseKeeper будет выполнять вычисление трендов впоследствии на основе параметров хранения, которые вы установили для отслеживаемого элемента.
Во-первых, я думаю, что вы неправильно понимаете использование системы мониторинга. Обнаружение каждого небольшого пика в большинстве ситуаций является излишним, и для обнаружения перезапусков вашего сервера чтение файлов журнала и, возможно, регистрация / графическое отображение информации о времени безотказной работы - лучший способ.
Тем не менее, многие графические системы, такие как MRTG, Munin или Cacti, используют отличные rrdtool от Tobi Oetiker, чтобы делать именно то, что вы хотите: хранить данные, например, за минутные интервалы за день (1440 значений), 5-минутные средние за последнюю неделю, средние почасовые за месяц и т. д. Через день он перезапишет старые значения из ежедневной базы данных (отсюда и название: инструмент Round Robin Database).