Розбір повідомлень syslog в окремі таблиці 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.