[Cascavel-pm] [OFF-TOPPIC] Consulta Unix

Luis Motta Campos monsieur_champs em yahoo.com.br
Quinta Agosto 17 03:02:42 PDT 2006


  Igor, Márcio, aqui tem um rascunho do que eu acho que deveria ser o
programa.

  Márcio, Perl é muito mais flexível para construir este tipo de solução
do que o SQL*Loader + Shell Script.

  Espero que o pessoal da lista ajude completando os brancos do
programa, eu não tenho tempo para terminar de escrever. Mas não deve ser
complicado, agora.

  Putamplexos, e boa sorte.

Igor Sutton wrote:
>> 1- Preciso ter em uma tabela Oracle, para consultas (PL/SQL)
>> eventuais, as
>> informações de uso de memória, uso de cpu e dos 5 processos que estão
>> consumindo mais recursos (no momento da coleta) de determinado servidor
>> Unix;
>>
> 
> Perfeito, isso você deve saber melhor que eu :-)
> 
> 2- A coleta dessas informações deve acontecer em períodos de tempo
>> determinados (de 30 em 30 minutos, por exemplo);
>>
> 
> O cron resolve este problema.
> 
> 3- Antes de fazer a coleta das informações é necessário saber se um
> processo
>> X está rodando no servidor, caso não esteja, não é necessário fazer a
>> coleta.
>>
> 
> Proc::ProcessTable vem a calhar aqui.
> 
> use List::Util;
> use Proc::ProcessTable;
> 
> my $p = Proc::ProcessTable->new;
> 
> if (first { $_->fname eq 'meuprocesso' } @{$p->table}) {
> ...
> }
> 
> 4- Preciso dispor as informações em colunas (Coleta, Data_Hora, Cpu,
>> Memória, Processo1, Processo2, Processo3, Processo4, Processo5) da tabela
>> Oracle. Por exemplo:
>>      *COLETA* *DATA_HORA* *CPU* *MEMÓRIA* *PROCESSO_1* *PROCESSO_2* *
>> PROCESSO_3* *PROCESSO_4* *PROCESSO_5* coleta1 15/8/2006 18:30 60% 70% x y
>> z a b coleta2 15/8/2006 19:00 50% 80% y a z x b coleta3 15/8/2006 19:30
>> 70% 85% a b z y x coleta4 15/8/2006 20:00 30% 40% b y x a z
>>
> 
> Isso você faz a inserção via DBI (OK, você pode ser mais tosco executando o
> binário do Oracle, porém tente o DBI antes). 'perldoc DBI' para esse caso.
> 
> 5- A cada coleta devo importar os dados resultantes da mesma, na tabela
>> Oracle (a cada 30 minutos terei uma nova tupla na tabela).
>> coleta1    16/8/2006 20:30    50%    60%    s    j    f    c    k
>>
> 
> CPU e Memória são o total sendo utilizado no seu servidor no momento ou o
> total utilizado por este cinco processos? Você tem o nome deste cinco
> processos já?
> 
> # separamos  todos os processos cujo nomes sejam aqueles que queremos
> my @processos = grep { $_->fname =~ m/^(?:a|b|c|d|e) } @{$p->table};
> 
> # somamos a cpu utilizada
> my $cpu_usada = 0;
> $cpu_usada += $_->pctcpu for (@processos);
> 
> Caso você não saiba o nome dos processos, você pode verificar o PID do
> processo que os gera e localizar todos os processos cujo PPID (Parent PID)
> sejam igual àquele que você coletou.
> 
> O grande X da questão é: Como fazer essas coletas e importar essas
>> informações para a tabela do Oracle (o Oracle está instalado no mesmo
>> servidor onde será feita a coleta).
>>
> 
> No final das contas Proc::ProcessTable e DBI podem fazer exatamente o que
> você quer. Se você estiver impedido de utilizar DBI por qualquer motivo,
> você pode substituí-lo por um pipe para o seu comando 'sql':
> 
> <code>
> # veja que eu não sei quais são os parâmetros para o seu programa, porém
> # você deve utilizá-lo como na linha de comando.
> open my $sql, "| /usr/bin/sql -Uusuario -Psenha" or die $!;
> 
> print $sql "INSERT INTO oracle (cpu, memoria, proc1, proc2, proc3, proc4,
> proc5) VALUES ($cpu_usada, $memoria_usada, "$proc1", "$proc2", "$proc3",
> "$proc4", "$proc5");\n";
> 
> close $sql or warn $!;
> </code>
> 
> Saiba que este modo de interação com o banco de dados é um 'quick and dirty
> hack', e não deve ser usado como primeiro recurso.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm


-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Luis Motta Campos is Software Engineer, Oracle OCP/DBA, Un*x
 Sysadmin, Member of {Lisbon,São Paulo,Cascavel,Brasil,London}
 Perl Mongers and Perl Fanatic Evangelist
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-------------- Próxima Parte ----------
Um texto embutido e sem conjunto de caracteres especificado associado...
Nome: read_process
Url: http://mail.pm.org/pipermail/cascavel-pm/attachments/20060817/3722351d/attachment.pl 


Mais detalhes sobre a lista de discussão Cascavel-pm