Parsing pesan syslog ke dalam tabel MySQL terpisah dengan rsyslog

10

Di luar kotak rsyslog akan membuang semuanya ke dalam SystemEventstabel di dalam `Syslog database (jika Anda menggunakan skema default yang disediakan). Saya ingin menggunakan ekspresi reguler untuk memfilter pesan masuk ke tabel database terpisah.

Saya sudah bermain dengan ini, tapi saya kesulitan menemukan cara terbaik untuk mencapai ini (atau bahkan cara yang berfungsi).

Di rsyslog.conf saya:

$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

Ini adalah upaya terakhir saya, tetapi saya mandek.

(tabel RogueAPs hanyalah tiruan dari tabel SystemEvents default yang dikirimkan dengan rsyslog)


Informasi versi:

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

Jawaban:

1

dari melihat tutorial ini , saya tidak melihat perbedaan.

Tetapi melihat dokumentasi template dari rsyslog , tampaknya ada perbedaan dengan mysql tergantung pada pengaturan untuk parameter NO_BACKSLASH_ESCAPES.

Dari dokumen:

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.
Kristen
sumber
0

Dokumentasi rsyslog sayangnya tidak lengkap atau mudah dimengerti di beberapa area. Saya telah menghabiskan sebagian dari beberapa minggu terakhir bekerja pada rsyslog / MySQL / hal-hal regex.

Bisakah Anda memposting sampel baris log yang Anda coba regex cocokkan, skema tabel yang Anda inginkan masuk, dll? Hal-hal yang Anda posting sepertinya berfungsi ... apa yang Anda coba filter? Dan apakah skema default dapat digunakan untuk Anda?

Di samping catatan, saya tidak bisa membantu tetapi memperhatikan bahwa Anda menggunakan tabel yang disebut RogueAPs. Saya tidak tahu vendor apa yang Anda gunakan, tetapi saya memiliki aturan regex untuk pesan log otentikasi dari Meru Networks dan pengendali BlueSocket.

Jason Antman
sumber