[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