Разобрать сообщения системного журнала в отдельные таблицы MySQL с помощью rsyslog

10

Из коробки rsyslog выгрузит все в SystemEventsтаблицу в базе данных `Syslog (если вы используете схему по умолчанию). Я хотел бы использовать регулярное выражение для фильтрации входящих сообщений в отдельные таблицы базы данных.

Я играл с этим, но мне трудно найти лучший способ добиться этого (или даже способ, который функционирует).

В моем 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

Это была моя последняя попытка, но я застрял.

(таблица RogueAPs является просто клоном таблицы SystemEvents по умолчанию, поставляемой с rsyslog)


Информация о версии:

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.
ЭФК
источник

Ответы:

1

от взгляда на этот урок я не вижу разницы.

Но, взглянув на документацию по шаблону из rsyslog , кажется, что есть разница с mysql в зависимости от настройки параметра NO_BACKSLASH_ESCAPES.

Из документов:

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

К сожалению, документация rsyslog не очень полна и не проста для понимания в некоторых областях. Я провел большую часть последних нескольких недель, работая над rsyslog / MySQL / regex.

Можете ли вы опубликовать образец строки журнала, в которой вы пытаетесь сопоставить регулярные выражения, схему таблицы, в которую вы хотите ее поместить, и т. Д.? Материал, который вы опубликовали, похоже, должен работать ... что вы пытаетесь отфильтровать? И подходит ли вам схема по умолчанию?

С другой стороны, я не мог не заметить, что вы используете таблицу под названием RogueAPs. Я не знаю, какого поставщика вы используете, но у меня есть правила регулярных выражений для сообщений журнала аутентификации от контроллеров Meru Networks и BlueSocket.

Джейсон Антман
источник