quinta-feira, 5 de maio de 2011

Fixing Cacti error 1062 - CMDPHP: Poller[0] ERROR


Depois de muito quebrar a cabeça durante alguns dias, e de muitas outras tentativas inclusive recompilar o modulo multi thread spine direto do SVN, eu resolvi deixar mesmo com o poller cmd.php pois eu tenho poucos hosts adicionados no meu cacti.

O que não fazia sentido era que somente com estes hosts, todos os meus gráficos apareciam falhados(picotados) no gráfico, e através do plugin clog, eu identifiquei as seguintes mensagens de erro:

05/05/2011 13:58:25 AM - CMDPHP: Poller[0] ERROR: A DB Exec Failed!, Error:'1062', SQL:"insert into poller_output (local_data_id, rrd_name, time, output) values (10, 'traffic_out', '2011-05-05 13:58:25', '3677235031')

Depois de muito procurar, tentar vários métodos, cheguei na solução do problema, e o problema era meu e não do cacti, por que após instalar/atualizar a versão do cacti para a 0.8.7g acabei não percebendo que existiam 2 entradas no cron fazendo referência ao poller.php, ou seja, ele estava rodando 2 vezes ao mesmo tempo.

cacti:/etc/cron.d# cat cacti
*/5 * * * * usercacti php /var/www/cacti/poller.php >/dev/null 2>&1

e

cacti:/etc/cron.d# cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
*/5 * * * * root php /var/www/cacti/poller.php > /dev/null 2>&1 <---------------------- PROBLEMA

Depois de comentar a linha no cron e reinicializar /etc/init.d/cron restart tudo voltou ao normal e o problema foi solucionado, existem outras coisas que podem ajudar neste caso também, como horário sincronizado utilizando o a.ntp.br.

Encontrei uma outra solução também, no blog do labrat (http://blog.labrat.info/20100311/fixing-cacti-error-106/) onde ele da um drop na tabela `poller_output`, não precisei executar mas pode ser util também, crie o arquivo chamado fixme.txt e adicione as seguintes linhas:

DROP TABLE IF EXISTS `poller_output`;
CREATE TABLE `poller_output` (
`local_data_id` mediumint(8) unsigned NOT NULL default '0',
`rrd_name` varchar(19) NOT NULL default '',
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`output` text NOT NULL,
PRIMARY KEY (`local_data_id`,`rrd_name`,`time`)
) TYPE=MyISAM;

Agora execute

mysql -ucactiuser -pcactipasswd -D cacti < fixme.txt

0 comentários:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger | Printable Coupons