[SP-pm] Monitoramento e estatísticas

Renato Santos renato.cron at gmail.com
Tue Nov 1 09:39:51 PDT 2011


Cara,

não cheguei a terminar,

eu estava fazendo algo semelhante.

Cada processo ao subir, chama certas funcoes autaticamente (é um padrão
aqui da empresa)
então em cada aplicação eu fiz um client que chama um 'job.info'({ horario,
app, env}) entre outras coisas..

Ai, no lado server, cada "job-server" eu pensei em receber, salvar isso
tudo numa tabela com ID | content (onde content=varchar, json)
usando banco de dados sqlite.
Asssim, cada "woker" teria seu proprio banco de dados (na verdade, acho que
mesmo com várias aplicações eu só precisaria de 1 worker mesmo)
e como os registros tem IDs, posso fazer um outro batch, que pegue o MAX,
processe todos até o max, depois faça um delete, sem compremeter o resto
dos registros.

Porque ai em cada banco eu vou acumulando as funções pra processar mais
tarde (tipo, dentro de segundos, porque quero que seja web-live);


Na verdade, só fiz até o pronto de gravar no Sqlite, porque assim já tenho
as ĩnformações, falta agora eu processar, mas temos outras prioridades.

---
Ou seja, no seu caso,
você pode fazer cada trabalhador gravar localmente um arquivo db unico, ou
um pra cada worker, e depois outro lê esses bancos e faz oque você quiser.




2011/11/1 Andre Carneiro <andregarciacarneiro at gmail.com>

> Heil Perl!
>
>
> Pessoal, preciso de um 'norte' para resolver um problema de arquitetura de
> software. Fiz aqui no meu trabalho um 'log parser' distribuído, que gera
> alguns dados de estatísticas que eu preciso capturar isso de alguma forma,
> mas ainda não sei bem como fazer.
>
> A arquitetura resumida é o seguinte:
>
> - um daemon que, de tempos em tempos, lê arquivos de log e o divide em
> vários arquivos menores, zipa esses arquivos e move para um outro
> diretório. Chamo isso de 'dispatcher';
> - um daemon que lê os arquivo gerados pelo 'dispatchers', e constrói jobs
> através do módulo Gearman::Client e os envia para um ou mais servidores
> para que os jobs sejam processados. Chamo isso de 'jobmanager';
> - Em várias máquinas existem(na verdade 'existirão' :D ) os servidores de
> 'jobs'(outros daemons ), que recebem as requisições do 'jobmanager' via
> gearman e inicia o processamento dos logs, de fato, através do módulo
> Gearman::Worker, de maneira que a resposta não é esperada pelo JobManager.
>
>
> Problema:
>
> Preciso gravar os dados utilizados nas estatístifcas, além de outras
> informações, mas não sei qual seria a melhor forma de fazer isso
> considerando que vários workers estariam gravando os dados de vários
> servidores diferentes, e a idéia é não centralizar isso num banco de dados
> relacional, evitando concorrência, já que o ambiente aqui por enquanto não
> suporta clusterização de banco de dados. Eu pensei em gravar os dados
> localmente em cada máquina onde os workers gravaram e enviar esses dados
> para um monitor central, ou deixar o dado disponível de alguma forma para
> que o monitor central soubesse a quantidade de dados que está sendo
> processada e de onde. Não sei se fui claro...
>
> Alguém poderia dar uma sugestão, por gentileza?
>
>
> Antecipadamente agradeço!
>
>
>
> Cheers!
>
> --
> André Garcia Carneiro
> Analista/Desenvolvedor Perl
> (11)82907780
>
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
Saravá,
Renato CRON Santos
http://www.renatocron.com/blog/
@renato_cron <http://twitter.com/#!/renato_cron>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20111101/4e3ba37a/attachment.html>


More information about the SaoPaulo-pm mailing list