como solucionar problemas usando o rsyslog para enviar para um banco de dados mysql

5

Usando o FreeBSD 8.0 de 32 bits.

Eu instalei o rsyslogd 5.5.5 com ommysql. (portas instaladas / usr / ports / sysutils / rsyslog55 e / usr / ports / sysutils / rsyslog55-mysql)

Meu arquivo rsyslog.conf se parece com:

$ModLoad imudp
$ModLoad imtcp
$ModLoad ommysql 
$ModLoad immark.so   
$ModLoad imuxsock.so 
$ModLoad imklog.so   
$OptimizeForUniprocessor on
$AllowedSender UDP, 10.0.0.0/8
$UDPServerAddress 0.0.0.0
$UDPServerRun 514
$UDPServerTimeRequery 2
#
+SG560
*.*     :ommysql:127.0.0.1,Syslog,sysloguser,mypassword

Meus sinalizadores de linha de comando para o rsyslogd são: -c5 -4 Verificar o código com -c5 -N1 não retorna erros.

Confirmei que o rsyslogd está funcionando alterando a última linha para dizer:

*.*      /var/log/snapgear.log

que resulta em mensagens que aparecem no arquivo snapgear.log. Então, é provavelmente algo a ver com minha configuração do MySQL

Se eu fizer:

mysql -u sysloguser -p Syslog
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 56
Server version: 5.0.86 FreeBSD port: mysql-server-5.0.86

mysql> select * from SystemEvents;
Empty set (0.00 sec)

mysql>

: - (

Confirmei que o sysloguser tem privilégios totais para o banco de dados do Syslog.

Se eu executar o rsyslogd no console no modo de depuração:

/usr/local/sbin/rsyslogd -f /usr/local/etc/rsyslog.conf -c5 -n -d

Eu posso ver esta sequência de eventos cada vez que uma mensagem é recebida:

9244.376687256:28359280: main Q: entry added, size now log 1, phys 1 entries
9244.376705694:28359280: main Q: EnqueueMsg advised worker start
9244.376726647:28359280: Listening on UDP syslogd socket 4 (IPv4/port 514).
9244.376728602:28359280: --------imUDP calling select, active file descriptors (max 4): 4
9244.376890075:283593c0: wti 0x28306e80: worker awoke from idle processing
9244.376892031:283593c0: we deleted 0 objects and enqueued 0 objects
9244.376893986:283593c0: delete batch from store, new sizes: log 1, phys 1
9244.376895942:283593c0: msgConsumer processes msg 0/1
9244.376897898:283593c0: msg parser: flags 70, from '~NOTRESOLVED~', msg 'Jun 29 17:32:24 SG560 kernel: (20000629T1732244'
9244.376900132:283593c0: parse using parser list 0x283080e8 (the default list).
9244.376902088:283593c0: dropped LF at very end of message (DropTrailingLF is set)
9244.376904044:283593c0: Parser 'rsyslog.rfc5424' returned -2160
9244.376905999:283593c0: Message will now be parsed by the legacy syslog parser (one size fits all... ;)).
9244.376907955:283593c0: Parser 'rsyslog.rfc3164' returned 0
9244.376909910:283593c0: testing filter, f_pmask 255
9244.376911866:283593c0: Called action, logging to ommysql
9244.376918012:283593c0: actionTryResume: action state: susp, next retry (if applicable): 1277869250 [now 1277869244]
9244.376919967:283593c0: action call returned -2123
9244.376921923:283593c0: tryDoAction: unexpected error code -2123, finalizing
9244.376926113:283593c0: actionTryResume: action state: susp, next retry (if applicable): 1277869250 [now 1277869244]
9244.376928069:283593c0: ruleset: get iRet 0 from rule.ProcessMsg()
9244.376930024:283593c0: ruleset.ProcessMsg() returns 0
9244.376931980:283593c0: regular consumer finished, iret=0, szlog 0 sz phys 1
9244.376933936:283593c0: XXX: enqueueing data element 0 of 1
9244.376935891:283593c0: we deleted 1 objects and enqueued 0 objects
9244.376938126:283593c0: delete batch from store, new sizes: log 0, phys 0
9244.376940082:283593c0: regular consumer finished, iret=4, szlog 0 sz phys 0
9244.376942037:283593c0: main Q:Reg/w0: worker IDLE, waiting for work.

.... Eu posso ver a chamada de ação para ommysql retorna código de erro inesperado -2123

Agora estou preso! Alguma idéia sobre o que procurar em seguida? Talvez eu tenha portas extras que eu preciso instalar? Ficarei muito grato por qualquer ajuda aqui!

    
por ChrisNZ 30.06.2010 / 06:07

1 resposta

1

Então, primeiro eu entendo que você está usando o script padrão para o mysql.

Se tudo estiver realmente bem, a única coisa que posso recomendar é usar um modelo personalizado para que você saiba que os dados que você está enviando corresponderão ao formato db 100%.

Se não, você precisa executar o script sql que é fornecido com o rsyslog para criar o banco de dados e as tabelas.

    
por 29.07.2010 / 20:15