Depois vcs me pagam uma cerveja e fica tudo sussa.
2013/8/26 Lindolfo Lorn Rodrigues <[email protected]> > Antes que eu me esqueça: desculpe-me se insultei. > > > 2013/8/26 Lindolfo Lorn Rodrigues <[email protected]> > >> Não quis insultar, apenas dar outra visão para o problema :) >> >> >> >> 2013/8/26 Tiago Peczenyj <[email protected]> >> >>> foi mal, agora eu tenho algo como >>> >>> while(1){ >>> # calcula >>> # if passou um minuto envia pro zabbix >>> # if passou um dia reinicia o contador >>> sleep(1); >>> } >>> >>> qualquer sugestão é bem vinda. de repente o zabbix pode continuar com a >>> monitoria e posso usar o StatsD para essas coisas novas, ainda mais se for >>> menos burocratico. >>> >>> >>> 2013/8/26 Stanislaw Pusep <[email protected]> >>> >>>> Seja qual for o seu objetivo, o código que você postou já está feito e >>>> funcionando bem, aparenemente. >>>> "Eu mudaria boa parte do que você fez" e "Eu usaria o Statsd para >>>> acumular o valor e exportaria via graphite", seguido de "Eu não entendi bem >>>> o motivo de ficar rodando a cada segundo então vou chutar" é um insulto a >>>> sua inteligência, IMHO >>>> >>>> >>>> 2013/8/26 Tiago Peczenyj <[email protected]> >>>> >>>>> Explain creaktive >>>>> >>>>> >>>>> 2013/8/26 Stanislaw Pusep <[email protected]> >>>>> >>>>>> Overengineering detected! >>>>>> >>>>>> >>>>>> 2013/8/26 Lindolfo Lorn Rodrigues <[email protected]> >>>>>> >>>>>>> Eu mudaria boa parte do que você fez. >>>>>>> >>>>>>> Não sei qual problema que você está tentando resolver com isso, por >>>>>>> isso tudo >>>>>>> isso aqui será uma mega hipotese, se puder dizer qual o problema >>>>>>> está tentando >>>>>>> resolver, seria legal :) >>>>>>> >>>>>>> Eu usaria o Statsd para acumular o valor e exportaria via graphite. >>>>>>> >>>>>>> Eu não entendi bem o motivo de ficar rodando a cada segundo então >>>>>>> vou chutar: >>>>>>> >>>>>>> Você que capturar ações de usuário/sistema em algum lugar? >>>>>>> >>>>>>> Caso sim, você poderia colocar esse codigo logo depois a ação do >>>>>>> usuário/sistema: >>>>>>> >>>>>>> my $statsd = Etsy::StatsD->new >>>>>>> my $bucket = "pacman.hit_number" >>>>>>> $statsd->increment($bucket); >>>>>>> >>>>>>> O stasd usa UDP, não vai alterar em nada perceptivo na perfomance, >>>>>>> do seu sistema. >>>>>>> >>>>>>> Mandando o contador acima para o statsd ele irá acumular e mandar >>>>>>> para o graphite, >>>>>>> no graphite com o dado cru você pode criar várias operações de >>>>>>> estatistica >>>>>>> ( mediana, media, percentile..etc ) e gerar graficos. >>>>>>> >>>>>>> >>>>>>> http://graphite.readthedocs.org/en/0.9.10/functions.html#module-graphite.render.functions >>>>>>> >>>>>>> O Statsd suporta vários backend o mais conhecido/usado deles é o >>>>>>> Graphite: >>>>>>> http://graphite.wikidot.com/screen-shots >>>>>>> >>>>>>> A Etsy tem um post explicando melhor a "metodologia" deles de medir >>>>>>> tudo: >>>>>>> >>>>>>> >>>>>>> http://codeascraft.com/2011/02/15/measure-anything-measure-everything/ >>>>>>> https://github.com/etsy/statsd >>>>>>> >>>>>>> PS: O Statsd teve origem no Flickr, e a primeira versão era em Perl >>>>>>> recentemente eles >>>>>>> liberaram o código fonte: >>>>>>> >>>>>>> https://github.com/iamcal/Flickr-StatsD >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2013/8/26 Stanislaw Pusep <[email protected]> >>>>>>> >>>>>>>> Use AE::time() no lugar do localtime >>>>>>>> >>>>>>>> понедельник, 26 августа 2013 г. пользователь Tiago Peczenyj писал: >>>>>>>> >>>>>>>> Ola >>>>>>>>> >>>>>>>>> Eu tenho o seguinte caso >>>>>>>>> >>>>>>>>> preciso rodar um certo método a cada segundo, que por sua vez >>>>>>>>> acumula um valor em algum atributo interno do objeto ( total += por >>>>>>>>> exemplo >>>>>>>>> ). >>>>>>>>> >>>>>>>>> a cada minuto quero enviar o valor de total para algum lugar (ex >>>>>>>>> Zabbix). >>>>>>>>> >>>>>>>>> a meia noite eu quero limpar o total para 0. >>>>>>>>> >>>>>>>>> Eu cheguei a algo assim: >>>>>>>>> use AnyEvent; >>>>>>>>> >>>>>>>>> sub loop { >>>>>>>>> my $obj = Foo->new; >>>>>>>>> my $cv = AE::cv; >>>>>>>>> >>>>>>>>> my $seconds_in_a_day = 60 * 60 * 24; >>>>>>>>> my $seconds_to_midnight = $seconds_in_a_day - >>>>>>>>> seconds_from_midnight(); >>>>>>>>> >>>>>>>>> my $loop = AE::timer 0, 1, sub { $obj->run }; >>>>>>>>> >>>>>>>>> my $send = AE::timer 60, 60, sub { $obj->send }; >>>>>>>>> >>>>>>>>> my $clear= AE::timer $seconds_to_midnight, $seconds_in_a_day, >>>>>>>>> sub { $obj->clear }; >>>>>>>>> $cv->recv; >>>>>>>>> } >>>>>>>>> >>>>>>>>> a sub seconds_from_midnight usa localtime pra fazer uma conta >>>>>>>>> marota. >>>>>>>>> >>>>>>>>> A assinatura do AE::timer eh >>>>>>>>> >>>>>>>>> AE::timer $delay, $interval, $callback; >>>>>>>>> >>>>>>>>> No primeiro timer eu tenho o meu main loop, chamando o metodo run. >>>>>>>>> No segundo eu tenho o metodo que envia os dados a cada 60 segundos >>>>>>>>> No terceiro eu calculo quantos segundos faltam para a meia noite e >>>>>>>>> mando repetir a cada 24 horas. >>>>>>>>> >>>>>>>>> hoje eu tenho um loop com um sleep 1 e varios ifs. quero que fique >>>>>>>>> mais legivel e nao utilizo anyEvent em nenhum outro lugar. Nao >>>>>>>>> precisa ser >>>>>>>>> EXATO, portanto um atraso de alguns segundos pode acontecer. >>>>>>>>> >>>>>>>>> Parece bom, mas eu tenho algumas duvidas. >>>>>>>>> >>>>>>>>> 1) esta claro o suficiente? >>>>>>>>> 2) o overhead do AnyEvent parece ser o mesmo do sleep (1) durante >>>>>>>>> o runtime (ignorando quanto tempo demora pra iniciar ou não), certo? >>>>>>>>> 3) para rodar algo "a meia noite" me parece um tanto confuso >>>>>>>>> ainda. não encontrei nenhum helper q me ajude (o AnyEvent::Cron da >>>>>>>>> pau pra >>>>>>>>> mim). sera q nao eh melhor "re-setar" o time watcher para a proxima >>>>>>>>> meia >>>>>>>>> noite? >>>>>>>>> 4) alias tem algo melhor do que ficar brincando com localtime() >>>>>>>>> pra pegar quantos segundos faltam pra proxima meia noite? algo usando >>>>>>>>> DateTime >>>>>>>>> >>>>>>>>> por fim >>>>>>>>> >>>>>>>>> 5) tem algum problema ao usar AE::timer q eu não esteja vendo? >>>>>>>>> Fora os problemas interentes como se eu usar IO Bloqueante eu não vou >>>>>>>>> ter >>>>>>>>> os timers "exatos". >>>>>>>>> >>>>>>>>> Obrigado >>>>>>>>> >>>>>>>>> Tiago >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Tiago B. Peczenyj >>>>>>>>> Linux User #405772 >>>>>>>>> >>>>>>>>> http://about.me/peczenyj >>>>>>>>> >>>>>>>> >>>>>>>> =begin disclaimer >>>>>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>>>>>> SaoPaulo-pm mailing list: [email protected] >>>>>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>>>>>> =end disclaimer >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> =begin disclaimer >>>>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>>>>> SaoPaulo-pm mailing list: [email protected] >>>>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>>>>> =end disclaimer >>>>>>> >>>>>>> >>>>>> >>>>>> =begin disclaimer >>>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>>>> SaoPaulo-pm mailing list: [email protected] >>>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>>>> =end disclaimer >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Tiago B. Peczenyj >>>>> Linux User #405772 >>>>> >>>>> http://about.me/peczenyj >>>>> >>>>> =begin disclaimer >>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>>> SaoPaulo-pm mailing list: [email protected] >>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>>> =end disclaimer >>>>> >>>>> >>>> >>>> =begin disclaimer >>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>> SaoPaulo-pm mailing list: [email protected] >>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>> =end disclaimer >>>> >>>> >>> >>> >>> -- >>> Tiago B. Peczenyj >>> Linux User #405772 >>> >>> http://about.me/peczenyj >>> >>> =begin disclaimer >>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>> SaoPaulo-pm mailing list: [email protected] >>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>> =end disclaimer >>> >>> >> > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
