Мониторинг размера каталога Windows

Я ищу что-то, что будет контролировать каталоги Windows на предмет размера и количества файлов с течением времени. Я говорю о нескольких серверах и нескольких тысячах папок (миллионах файлов).

Требования:

  • Уведомление об увеличении размера X за Y раз
  • Уведомление об увеличении количества файлов на X за Y раз
  • Историческое графическое представление (или, по крайней мере, сохранение данных моментальных снимков с течением времени) размера и количества файлов
  • Все это в наборе каталогов и их дочерних каталогов.

Я бы предпочел бесплатное решение, но также был бы признателен, если бы мне указали правильное направление. Если бы мы написали свои собственные, как бы мы это сделали? Доступные языки: Ruby, Groovy, Java, Perl или PowerShell (так как я буду писать это).

Я мог бы сделать это ОЧЕНЬ легко на C# (поскольку именно там у меня есть опыт), но это вам не помогает, извините. Техника включает в себя написание службы, собирающей данные. После этого ваше приложение сможет получить доступ к данным при необходимости.

Craig 08.10.2008 19:23

Крейг, не могли бы вы рассказать, как это сделать на C#? Я совсем не знаком с C# или .NET, но я не думаю, что для нас это на 100% невозможно использовать в качестве решения, просто не лучший выбор!

Instantsoup 08.10.2008 20:05

Вообще говоря, если вы можете сделать это на C#, вы все равно можете сделать это в PowerShell.

EBGreen 08.10.2008 21:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
3
1 770
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Есть несколько решений, в том числе бесплатные. Некоторые из них, с которыми я работал, включают:

Nagios и Старший брат

Быстрый поиск в Google, вероятно, сможет найти больше.

Ответ принят как подходящий

Возможно, вы захотите взглянуть на PolyMon, решение для мониторинга систем с открытым исходным кодом. Он позволяет писать настраиваемые мониторы на любом языке .NET и позволяет создавать настраиваемые мониторы PowerShell.

Он хранит данные в серверной части SQL Server и обеспечивает построение графиков. Для вашей цели вам просто понадобится скрипт, который будет получать размер каталога и количество файлов. Что-то типа:

$size = 0
$count = 0
$path = '\unc\path\to\directory\to\monitor'
get-childitem -path $path -recurse | Where-Object {$_ -is [System.IO.FileInfo]} | ForEach-Object {$size += $_.length; $count += 1}

В ответ на комментарий Скотта: Конечно. вы можете обернуть его в цикл while

$ESCkey  = 27
Write-Host "Press the ESC key to stop sniffing" -foregroundcolor "CYAN"
$Running=$true

While ($Running)
    { 
         if ($host.ui.RawUi.KeyAvailable) {
         $key = $host.ui.RawUI.ReadKey("NoEcho,IncludeKeyUp,IncludeKeyDown")
            if ($key.VirtualKeyCode -eq $ESCkey) { 
             $Running=$False
            }
         #rest of function here 
        } 

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

Очень круто! Можно ли в PowerShell поместить это в какой-то цикл, который постоянно выполняется?

Scott Saad 08.10.2008 20:01

http://sourceforge.net/projects/dirviewer/ - DirViewer - это легкое чистое Java-приложение для просмотра дерева каталогов и рекурсивной статистики использования диска, использующее JGoodies-Looks, похожее на Windows XP.

Вы, безусловно, можете добиться этого с помощью PowerShell и WMI. Вам понадобится какая-то серверная часть БД, такая как SQL Express. Но я согласен с тем, что такой инструмент, как Polymon, - лучший подход. Единственное, что может сделать разницу, - это масштаб. Вам нужно мониторить 1 папку на 1 сервере или сотни?

Отредактировано, чтобы ответить ... несколько серверов, тысячи папок (миллионы файлов).

Instantsoup 08.10.2008 23:05

Другие вопросы по теме