Задать вопрос
@nicebmw9
Что было дальше ?

Какие технологии и подходы использовать?

Доброго времени суток ))
Работаю джуном (C#/.NET) и поставили следующую задачу:
Необходимо реализовать систему мониторинга производительности компьютеров в сети.
Т.е необходимо видеть в реальном времени статистику по загрузке ЦП / оперативной памяти / загруженности дисков и т.д., на компьюетрах в локальной сети. В случае, если на коком то из компов вдруг какие то проблемы, то сообщать об этом.

Мне на ум и по опыту приходит только одно: на конечных компах запущена служба, которая пишет в БД, а админское приложение (WPF) просто считывает из базы данные раз в 1-5 секунд и отображает статистику. Минусы которые я вижу: база очень быстро заполнится и это супер большой объём базы для такой простой задачи.

Подскажите что бы вы использовали для решения такой задачи ? Спасибо.
  • Вопрос задан
  • 160 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
2ord
@2ord
Минусы которые я вижу: база очень быстро заполнится и это супер большой объём базы для такой простой задачи.

Стоит погуглить решения по запросу
Round Robin time series
Такие БД имеют фиксированный размер.
Например, RRDtool имеет привязку к .NET в папке bindings
Есть такие варианты:
  1. Каждое конечное устройство собирает и хранит статистику локально и по запросу админского приложения (WPF) выдает ее. Последнее отображает. Плюс в том, что мониторинг-приложение можно запускать с любого компьютера с сетевой папки, имея в настройках список компьютеров в локальной сети.
  2. Каждое конечное устройство собирает и отдает статистику, не храня локально. Это централизованный подход к сбору данных, подразумевающий постоянный мониторинг станций с центральной машины с хранением данных на ней

Если нужно более зрелое решение, то лучше как указал Иван Шумов .
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Своруйте из нагинса. На самом деле вариантов куча сервер может через wmi опрашивать может ещё через 10 к технологий . Или ставить сервисы на станции и пишите метрики и периодически их читаете
Ответ написан
Комментировать
Lapish72
@Lapish72
Как вы заметили при вашем подходе, например, 10 компьютеров при тайминге опроса 1с отправят как минимум 36к запросов к базе за 1час. 1 день 864к строк+ Это если вам нужно хранить супер подробную статистику.

Как бы сделал я:
Данные отправляются не напрямую в бд, а в какой-то промежуточный сервис, который к примеру будет анализировать данные за 1 час или 24ч, проводить с ними манипуляции(большинство данных удалять, а остаток перекладывать в другую таблицу для менее детальных отчетов). Из тех же +/- 3600 строк от одного компьютера можно оставить 4 по среднему значению за 15 минут. Экономия ресурсов в 900 раз.

UPD:
Если поставить периода "чистки" базы 2ч, то в приложении мы можем показать нагрузку как посекундно, ведь не удалились еще полные данные, так и более детально для данных >1ч.
Ответ написан
inoise
@inoise
Solution Architect, AWS Certified, Serverless
То есть munin уже не модно?) Или nagios или zabbix. munin-monitoring.org
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы