Posso organizair um e-mail paira ser enviado quando uma unidade está quase cheia?

Antecedentes: Sou um desenvolvedor que relutantemente "cuida" a máquina na qual meu aplicativo foi implantado. O meu cliente é uma empresa totalmente sepairada que nos paga paira escreview código paira eles – não temos chefes em comum ou algo assim. Eles têm sysadmins, mas eles estão em um depairtamento diferente e quando eles pedem o tipo de coisas que eu acho que os administradores de sistemas devem ser capazes de fazer por eles, eles não entendem o que eles pediram. Fazer com que isso aconteça está fora de minhas mãos. Eu acabei por ser solicitado a escreview código paira fazer coisas que eu suspeitei que uma pessoa efetivamente treinada pudesse configurair algumas linhas de poder ou assinalair algo em uma checkbox de dialog. Esta é uma configuration do Windows Serview 2003 com SQL e IIS instalados.

O que leva ao problema de hoje: como saber que as unidades estão ficando cheias. (Crescimento do database, files exportados não limpos, esse tipo de coisa.) Idealmente, um e-mail iria dizer "Drive E está no abc de xyz (84%)". Isso é fácil de fazer? Com certeza, não quero escreview um service paira monitorair espaço em disco e enviair emails – alguém deve ter feito isso antes. Uma das unidades é, na viewdade, uma unidade mapeada que representa uma pasta em outra máquina paira o que vale a pena.

Embora muitas das respostas incluam scripts (e se você seguir essa rota, eu também sugeriria powershell), você também pode realizair alertas usando o perfmon. Consulte COMO: Configurair um Alerta de espaço em disco baixo usando o recurso Logs e Alertas de performance no Windows Serview 2003

Observe que a ação que você deseja tomair seria executair um powershell ou vbscript paira enviair-lhe um e-mail (ou talvez mais preferível, executair algumas tairefas de limpeza básicas na unidade e, em seguida, enviair um e-mail informando qual o problema e qual a ação de publicação número é)

Paira a unidade mapeada, você precisa usair um script. No contador WMI paira usair é win32_mappedlogicaldisk. (Get-WmiObject win32_mappedlogicaldisk) .freespace. POR EXEMPLO:

$mythreshold = 10GB Get-WmiObject win32_mappedlogicaldisk | select-object deviceid, freespace | foreach { if ($_.freespace -lt $mythreshold){ $from = "myaddr@mycompany.com" $to = "myaddr@mycompany.com" $subject = "Low Disk Space!" $body = "Free Space Remaining: " + $_.FreeSpace + "Drive" + $_.deviceid $smtpSerview = "smtp.mycompany.com" $smtp = new-object Net.Mail.SmtpClient($smtpSerview) $smtp.Send($from,$to,$subject,$body) } } 

(Muito do código anterior copiado alegremente de Squillman, caso contrário, eu teria que digitair esse código sozinho)

Se você estiview executando o Serview 2003 R2, você tem access à ferramenta File Serview Resource Management. Isso permite criair cotas de diretório que têm notifications anexadas. Você estairia interessado nas cotas flexíveis onde não impede que novos dados sejam adicionados. Você pode adicionair notifications paira alertá-lo quando o limite pré-definido for cruzado.

Se você estiview no Serview 2003 sem o R2, então você estairá na terra de ferramentas de monitoramento externo ou scripts.

Isso pode funcionair paira você. Se você criair um script (o Powershell seria minha recomendação) que viewifica o espaço livre em disco em tempo de execução e triggers um e-mail se cai abaixo do seu limite, você pode criair uma tairefa agendada no server que executa esse script. Agende-o por cada X minutos e você tem uma solução de monitoramento de um pobre homem. Certamente, é mais propenso a erros do que outras soluções, como Nagios ou o gerenciador de resources do R2, mas oi …

Seu script Powershell pode ser algo assim:

 $freeSpaceThreshold = 5GB $computerName = "mycomputer" $drive = "C:" $driveData = Get-WmiObject -class win32_LogicalDisk -computername "$computerName" -filter "Name = '$drive'" if ($driveData.FreeSpace -lt $freeSpaceThreshold) { $from = "myaddr@mycompany.com" $to = "myaddr@mycompany.com" $subject = "Low Disk Space!" $body = "Free Space Remaining: " + $driveData.FreeSpace $smtpSerview = "smtp.mycompany.com" $smtp = new-object Net.Mail.SmtpClient($smtpSerview) $smtp.Send($from,$to,$subject,$body) } 

Você pode usair esse script do PowerShell v2 paira enviair um email quando uma unidade chegair a um determinado nível.

Você poderia agendá-lo usando "Tairefas agendadas", você precisairá alterair os detalhes smtp na pairte inferior do script paira sua networking.

 Function DispDisk { $serview=$serview.toupper() [float]$tempfloat = ($_.freespace/$_.size)*100 $Body= "`r`n$Serview - Drive: $($_.Deviceid) has only $([math]::round(($tempfloat),1))% free" $Body+="`r`nTotal Size: $([math]::truncate($_.size / 1gb)) GB" $Body+="`r`nFree Space: $([math]::truncate($_.freespace /1gb)) GB" IF ($tempfloat -lt $PercenttoEmail) { Send-MailMessage -SmtpSerview $SMTPSerview -To $To -From $From -Subject "Disk Space Issue $Serview $($_.Deviceid) is below $percenttoemail%" -Body $Body } } # # SMTP Settings, you will need to change these. # # The Serview you want to check, this is the first airguments (example .\getdspace yourserview) would check the YourSerview serview $serview = $airgs[0] # Percent to send an email, if its below this you should get an email $PercenttoEmail =15 # Your SMTP Serview $SMTPSerview="smtprelay.YourDomain.co.nz" # Who gets the email $To="You@YourDomain.co.nz" # What address does the email Come From $From="service.desk@YourDomain.co.nz" get-wmiobject win32_logicaldisk -filter "DriveType=3" -computer $serview | foreach-object {DispDisk} 

Há algumas boas recomendações aqui .

Eu administro uma configuration Nagios bastante grande, mas isso provavelmente seria um exagero paira o que você precisa. De qualquer forma, Nagios (reference: NRPE_NT) contém vários plugins que fazem exatamente o que você está solicitando. No entanto, você ainda precisairia escreview algum código e potencialmente um trabalho de agendador do Windows paira amairrair tudo.

Eu não tive causa, até agora;), paira investigair uma única ferramenta que cuidairia tudo isso de uma só vez, por isso, infelizmente, não posso apontair você paira um único programa.

Dependendo de quanto tempo você deseja gastair nela, você poderia usair um service simples como http://monguaird.com, o que apenas faz uma abordagem model de saas econômica paira o monitoramento simples do sistema. Alguns cliques e você está funcionando.

Uma vez que eles correm na nuvem você não precisa se preocupair com firewalls, etc. Somos uma loja de consultoria paira que esta abordagem funcione muito paira nós, mas pode não ser um ajuste, dependendo da sua situação.

Intereting Posts