Artigo
· 16 hr atrás 3min de leitura

Robozinho em COS para logar cliente (IP e/ou EXE) que pode estar onerando seu servidor

Nós estávamos com uma ocorrência em um cliente em que todas as licenças estavam sendo consumidas e a CPU bastane onerada.

Consultávamos no portal de administração, na lista de processos, mas como o problema era intermitente, não conseguiamos identificar o "vilão".

Fizemos um programa simples, que coleta os processos e algumas informações destes, tais como : IP, executável etc.​​​​​​, e gravamos em arquivo .csv.

No portal de administração -> Operação do Sistema -> Gerenciador de Tarefas, cadastramos uma nova tarefa que executa este programa a cada 10 minutos.

​​​​​​​Quando o problema voltou a ocorrer, conseguimos verificar essa coleta de informações e vimos um IP e um determinado executável, repetindo em vários processos. Logo matamos a charada. 

​​​​​​​Segue abaixo o programa a fim de auxiliar os que podem passar pela mesma situação.

QGGETIP ; PEGA IPS DOS PROCESSOS
        // Abre o arquivo para escrita
        Set  file  = ##class ( %File ). %New ( "D:\TEMP\logprocips_" _ $zd ( $h ,8)_ "_" _ $tr ( $zt ( $piece ( $h , "," ,2),1), ":" , "_" )_ ".csv" )
        Do  file.Open ( "NW" ) // "W" para escrita         // Escrever cabeçalho no arquivo
        Do  file . WriteLine ( "PID;ClientIPAddress;ClientNodeName;Exe Name;data e Hora" )          

        Set  Rset  = ##class ( %ResultSet ). %New ( "%SYS.ProcessQuery:ListPids" )
        Do  Rset . Execute ()
        While  Rset . Next () {
        
            Set  pid  = Rset . GetData (1)
            Set  ipAddress  = $SYSTEM .Process . ClientIPAddress ( pid )
            Set  nodeName  = $SYSTEM .Process . ClientNodeName ( pid )
            Set  exeName  = $SYSTEM .Process . ClientExecutableName ( pid )
            
            set  dth = $zd ( $h ,4)_ " " _ $zt ( $piece ( $h , "," ,2),1)
            // Escrever as informações no arquivo
            Do  file . WriteLine ( pid _ ";" _ ipAddress _ ";" _ nodeName _ ";" _ exeName _ ";" _ dth )
        }
        
        // Fechar o arquivo
        Do  file . Close ()
        Write  "Exportação concluída com sucesso. Arquivo gerado:" , file.Name ,! 

       ​​​​​​​//Márcio Sorvi

Discussão (1)1
Entre ou crie uma conta para continuar