Analizza i messaggi syslog in tabelle MySQL separate con rsyslog


10

Fuori dagli schemi rsyslog scaricherà tutto nella SystemEventstabella all'interno del database `Syslog (se si utilizza lo schema predefinito fornito). Vorrei usare un'espressione regolare per filtrare i messaggi in entrata in tabelle di database separate.

Ho giocato con questo, ma sto facendo fatica a capire il modo migliore per farlo (o anche un modo che funzioni).

Nel mio rsyslog.conf:

$template wireless, \
 "insert into RogueAPs \
 (ReceivedAt, DeviceReportedTime, Facility, Priority, FromHost, Message) \
 VALUES('%timegenerated%', '%timereported%', '%syslogfacility%', '%syslogpriority%', '%fromhost-ip%', '%msg%');", \ 
 stdsql

if $msg contains 'subtype=wireless' then :ommysql:127.0.0.1,Syslog,dbusername,dbpassword;wireless

*.* :ommysql:127.0.0.1,Syslog,dbusername,dbpassword

Questo è stato il mio ultimo tentativo, ma sono bloccato.

(la tabella RogueAPs è solo un clone della tabella SystemEvents predefinita fornita con rsyslog)


Informazioni sulla versione:

shell# /usr/local/sbin/rsyslogd -v
rsyslogd 5.5.5, compiled with:
        FEATURE_REGEXP:                         Yes
        FEATURE_LARGEFILE:                      No
        FEATURE_NETZIP (message compression):   Yes
        GSSAPI Kerberos 5 support:              No
        FEATURE_DEBUG (debug build, slow code): No
        Atomic operations supported:            Yes
        Runtime Instrumentation (slow code):    No

See http://www.rsyslog.com for more information.

Risposte:


1

da dare un'occhiata a questo tutorial, non vedo alcuna differenza.

Ma dando un'occhiata alla documentazione del modello da rsyslog , sembra esserci una differenza con mysql a seconda dell'impostazione del parametro NO_BACKSLASH_ESCAPES.

Dai documenti:

sql - format the string suitable for a SQL statement in MySQL format. This will 
replace single quotes ("'") and the backslash character by their backslash-escaped
counterpart ("\'" and "\\") inside each field. Please note that in MySQL
configuration, the NO_BACKSLASH_ESCAPES mode must be turned off for this format to
work (this is the default).

stdsql - format the string suitable for a SQL statement that is to be sent to a
standards-compliant sql server. This will replace single quotes ("'") by two single
quotes ("''") inside each field. You must use stdsql together with MySQL if in MySQL
configuration the NO_BACKSLASH_ESCAPES is turned on.

0

Purtroppo la documentazione di rsyslog non è terribilmente completa o di facile comprensione in alcune aree. Ho passato buona parte delle ultime settimane a lavorare su roba rsyslog / MySQL / regex.

Puoi pubblicare un campione della linea di log che stai provando a regex match, lo schema della tabella in cui vuoi che vada, ecc.? Le cose che hai pubblicato sembrano funzionare ... cosa stai cercando di filtrare? E lo schema predefinito è utilizzabile per te?

In una nota a margine, non ho potuto fare a meno di notare che stai usando una tabella chiamata RogueAPs. Non so quale fornitore stai usando, ma ho regole regex per i messaggi di log di autenticazione da Meru Networks e controller BlueSocket.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.