none
Monitorar Consumo de CPU

    שאלה

  • Prezados,<o:p></o:p>

    Gostaria de saber se tem alguma forma que eu possa monitorar o uso de CPU em meu servidor e em minha maquinas virtuais, pois estou tendo problemas, porque alguns sistema instalados no servidor as vezes consomem muito CPU fazendo o servidor travar e os outros sistemas nele também.<o:p></o:p>

    Teria como criar um monitoramento que me enviasse um alerta por e-mail dizendo que o CPU aumentou?<o:p></o:p>


    []'s, Maikon Pablo Rodrigues

    יום רביעי 15 פברואר 2012 10:46

תשובות

  • Boa tarde Pablo

    Voce pode juntar as duas soluções em um único Script.vbs e criar um Task no windows pra rodar em um tempo determinado.

    O código abaixo utiliza o WMI pra pegar a informação que voce esta precisando, basta voce trocar o inteiro em : PercentProcessorTime > 1 pelo numero que voce precisa :

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

    Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 1",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_PerfFormattedData_PerfProc_Process instance" Wscript.Echo "-----------------------------------" Wscript.Echo "Process Name: " & objitem.NAme Wscript.Echo "PercentProcessorTime: " & objItem.PercentProcessorTime Next

    E aqui voce tem opções pra enviar o email:

    http://wiki.imacros.net/send-email.vbs

    • סומן כתשובה על-ידי MpR_Pablo יום רביעי 22 פברואר 2012 12:51
    יום שישי 17 פברואר 2012 18:57
  • Consegui achar um jeito de monitorar, pegando o processo _Total que especifica o CPU ocioso do servidor se este CPU esta menor que 20, quer dizer que o CPU do servidor esta usando mais de 80% de CPU assim ele envia um e-mail dizendo que o processo tal da maquina tal esta consumindo muito CPU.

    Segue abaixo o Script:

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfProc_Process where Name = '_Total'") 
    
    For Each objItem in colItems 
    
    if objItem.PercentProcessorTime < 95 Then
     
     Set objMessage = CreateObject("CDO.Message") 
     objMessage.Subject = "Processamento" 
     objMessage.From = "xxx" 
     objMessage.To = "xxx" 
     objMessage.TextBody = "Nome=" & objitem.NAme & " " & objItem.PercentProcessorTime & strComputer
     
     '==Esta seção fornece as informações de configuração para o servidor SMTP remoto.
     
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendusing") = xxx 
     
     'Nome ou IP do servidor SMTP remoto
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxx"
     
     'Tipo de autenticação, NONE, Básico (Base64 encoded), NTLM
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = xxx
     
     'O seu UserID no servidor SMTP
     objMessage.Configuration.Fields.Item _
      ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx"
     
     'Sua senha no servidor SMTP
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxx"
     
     'Porta do servidor (normalmente 25)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = xxx
       
     'Use SSL para a conexão (falso ou verdadeiro)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
     
     'Tempo limite de conexão em segundos (o tempo máximo CDO tentará estabelecer uma conexão com o servidor SMTP)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
     
     objMessage.Configuration.Fields.Update
     
     '==Fim SMTP remoto seção de configuração do servidor==  
     
     objMessage.Send
    
    End if
    next

    Obrigado a todos que ajudaram.


    []'s, Maikon Pablo Rodrigues

    • סומן כתשובה על-ידי MpR_Pablo יום רביעי 22 פברואר 2012 12:55
    יום רביעי 22 פברואר 2012 12:55

כל התגובות

  • Bom dia Pablo,

    sim teria como, porém seria por ferramentas mais avançadas, recomendo o System Center VMM, pois ele é próprio para gerenciamento de máquinas virtuais e fisicas tb.

    Resolve sua necessidade???

    יום רביעי 15 פברואר 2012 14:04
  • Pesquisei sobre ele e vi que ele faz mais coisas do que somente monitorar o servidor, mas queria algo especifico que me avisasse por e-mail ou qualquer tipo de alerta, assim não precisaria ficar sempre monitorando.

    Uma coisa mais simples e funcional.


    []'s, Maikon Pablo Rodrigues

    יום רביעי 15 פברואר 2012 15:53
  • Boa tarde Pablo

    Voce pode juntar as duas soluções em um único Script.vbs e criar um Task no windows pra rodar em um tempo determinado.

    O código abaixo utiliza o WMI pra pegar a informação que voce esta precisando, basta voce trocar o inteiro em : PercentProcessorTime > 1 pelo numero que voce precisa :

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

    Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 1",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_PerfFormattedData_PerfProc_Process instance" Wscript.Echo "-----------------------------------" Wscript.Echo "Process Name: " & objitem.NAme Wscript.Echo "PercentProcessorTime: " & objItem.PercentProcessorTime Next

    E aqui voce tem opções pra enviar o email:

    http://wiki.imacros.net/send-email.vbs

    • סומן כתשובה על-ידי MpR_Pablo יום רביעי 22 פברואר 2012 12:51
    יום שישי 17 פברואר 2012 18:57
  • Bom dia Matehus,

    Poderias me dizer que valor ele vai trazer com esse SELECT?

    "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 1",,48)



    []'s, Maikon Pablo Rodrigues

    יום שני 20 פברואר 2012 10:50
  • A onde ele vai guardar essa informação? no Colitem?

    Não estou conseguindo fazer prea que quando o processamento tiver maior que 1 ele enviar e-mail.


    []'s, Maikon Pablo Rodrigues

    יום שני 20 פברואר 2012 11:17
  • Estou usando a seguinte sequencia, mas ele me enforma mesmo assim processos que não estão usando mais de 80% de CPU

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 80",,48)


    For Each objItem in colItems 


    if objItem.PercentProcessorTime > 80 Then

     Set objMessage = CreateObject("CDO.Message") 
     objMessage.Subject = "Processamento" 
     objMessage.From = "e-mailde" 
     objMessage.To = "e-mailpara" 
     objMessage.TextBody = "OK Nome=" & objitem.NAme

     '==Esta seção fornece as informações de configuração para o servidor SMTP remoto.

     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 

     'Nome ou IP do servidor SMTP remoto
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxx"

     'Tipo de autenticação, NONE, Básico (Base64 encoded), NTLM
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

     'O seu UserID no servidor SMTP
     objMessage.Configuration.Fields.Item _
      ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx"

     'Sua senha no servidor SMTP
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxx"

     'Porta do servidor (normalmente 25)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = xx 

     'Use SSL para a conexão (falso ou verdadeiro)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False

     'Tempo limite de conexão em segundos (o tempo máximo CDO tentará estabelecer uma conexão com o servidor SMTP)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

     objMessage.Configuration.Fields.Update

     '==Fim SMTP remoto seção de configuração do servidor==  

     objMessage.Send


    End if
    next

    Consegues me dizer o que tem de errado ai?


    []'s, Maikon Pablo Rodrigues

    יום שני 20 פברואר 2012 11:27
  • Consegui achar um jeito de monitorar, pegando o processo _Total que especifica o CPU ocioso do servidor se este CPU esta menor que 20, quer dizer que o CPU do servidor esta usando mais de 80% de CPU assim ele envia um e-mail dizendo que o processo tal da maquina tal esta consumindo muito CPU.

    Segue abaixo o Script:

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfProc_Process where Name = '_Total'") 
    
    For Each objItem in colItems 
    
    if objItem.PercentProcessorTime < 95 Then
     
     Set objMessage = CreateObject("CDO.Message") 
     objMessage.Subject = "Processamento" 
     objMessage.From = "xxx" 
     objMessage.To = "xxx" 
     objMessage.TextBody = "Nome=" & objitem.NAme & " " & objItem.PercentProcessorTime & strComputer
     
     '==Esta seção fornece as informações de configuração para o servidor SMTP remoto.
     
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendusing") = xxx 
     
     'Nome ou IP do servidor SMTP remoto
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxx"
     
     'Tipo de autenticação, NONE, Básico (Base64 encoded), NTLM
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = xxx
     
     'O seu UserID no servidor SMTP
     objMessage.Configuration.Fields.Item _
      ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx"
     
     'Sua senha no servidor SMTP
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxx"
     
     'Porta do servidor (normalmente 25)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = xxx
       
     'Use SSL para a conexão (falso ou verdadeiro)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
     
     'Tempo limite de conexão em segundos (o tempo máximo CDO tentará estabelecer uma conexão com o servidor SMTP)
     objMessage.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
     
     objMessage.Configuration.Fields.Update
     
     '==Fim SMTP remoto seção de configuração do servidor==  
     
     objMessage.Send
    
    End if
    next

    Obrigado a todos que ajudaram.


    []'s, Maikon Pablo Rodrigues

    • סומן כתשובה על-ידי MpR_Pablo יום רביעי 22 פברואר 2012 12:55
    יום רביעי 22 פברואר 2012 12:55
  • Oi Pablo desculpe não ter aparecido antes.

    Se resolveu o problema beleza, na verdade não sabia que com "_Total" isto poderia ser solucionado.

    Vi acima que voce  perguntou sobre onde guardar esta informação: Voce pode guardar em um mdb se quiser fazendo uma referencia ao banco no proprio script.

    Se precisar de ajuda pra isto to aqui.

    Abraço.


    Matheus Finotti Desenvolvimento de Software(Internet / Desktop) Informática e Assessoria a Clientes

    יום חמישי 23 פברואר 2012 01:15
  • Obrigado Matheus.

    []'s, Maikon Pablo Rodrigues

    יום חמישי 23 פברואר 2012 12:10