it-swarm-es.com

Analizar mensajes de Syslog en tablas MySQL separadas con RSYSLOG

Fuera de la caja RSYSLOG volcará todo en la tabla SystemEvents dentro de la base de datos 'syslog (si usa el esquema predeterminado proporcionado). Me gustaría usar una expresión regular para filtrar mensajes entrantes en tablas de base de datos separadas.

He jugado con esto, pero estoy teniendo dificultades para determinar la mejor manera de lograr esto (o incluso una forma en que funciona).

En mi 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

Este fue mi último intento, pero estoy atascado.

(La tabla ROGUEAPS es solo un clon de la tabla predeterminada de sistemas de seguridad que se envía con RSYSLOG)


Información de la versión:

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.
10
efk

de echar un vistazo a este tutorial, no veo ninguna diferencia.

Pero echando un vistazo a la Documentación de la plantilla de RSYSLOG , parece que hay una diferencia con MySQL según la configuración del parámetro NO_BACKSLASH_ESCAPES.

De los documentos:

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.
1
Christian

La documentación de RSYSLOG es, desafortunadamente, no es terriblemente completa o fácil de entender en algunas áreas. He pasado una buena parte de las últimas semanas trabajando en cosas RSYSLOG/MYSQL/REGEX.

¿Puedes publicar una muestra de la línea de registro que está intentando con la coincidencia de regex, el esquema de la tabla con la que desea entrar, etc.? Las cosas que publicaste parece que debería funcionar ... ¿Qué estás tratando de filtrar? ¿Y es el esquema predeterminado utilizable para usted?

En una nota lateral, no pude evitar notar que estás usando una tabla llamada ROGUEAPS. No sé qué vendedor está usando, pero tengo reglas regulares para los mensajes de registro de autenticación de Meru Networks y Bluesocket Controllers.

0
Jason Antman