Sistem günlüğü mesajlarını rsyslog ile ayrı MySQL tablolarına ayrıştırma


10

Kutusundan çıkıldığında rsyslog her şeyi SystemEvents`Syslog veritabanı içindeki tabloya dökecektir (sağlanan varsayılan şemayı kullanırsanız). Gelen iletileri ayrı veritabanı tablolarına filtre uygulamak için normal bir ifade kullanmak istiyorum.

Bununla oynadım, ama bunu başarmanın en iyi yolunu (ya da hatta işleyen bir yolu) bulmakta zorlanıyorum.

Rsyslog.conf dosyamda:

$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

Bu benim en son girişimimdi, ama sıkıştım.

(RogueAPs tablosu, rsyslog ile birlikte gelen varsayılan SystemEvents tablosunun yalnızca bir klonudur)


Sürüm Bilgisi:

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.

Yanıtlar:


1

bu eğiticiye bir göz atmaktan , hiçbir fark görmüyorum.

Ancak rsyslog'dan şablon belgelerine baktığımızda , parametre ayarına bağlı olarak mysql ile bir fark var gibi görünüyor NO_BACKSLASH_ESCAPES.

Dokümanlardan:

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 dokümantasyonu maalesef, bazı alanlarda son derece eksiksiz veya anlaşılması kolay değildir. Geçtiğimiz birkaç haftanın iyi bir bölümünü rsyslog / MySQL / regex şeyler üzerinde çalışarak geçirdim.

Normal ifade eşleştirmeye çalıştığınız günlük satırının bir örneğini, içine girmesini istediğiniz tablonun şemasını vb. Gönderebilir misiniz? Gönderdiğiniz şeyler işe yarayacak gibi görünüyor ... ne filtrelemeye çalışıyorsunuz? Varsayılan şema sizin için kullanılabilir mi?

Bir yan notta, RogueAPs adlı bir tablo kullandığınızı fark edemedim. Hangi satıcıyı kullandığınızı bilmiyorum, ancak Meru Networks ve BlueSocket denetleyicilerinden gelen kimlik doğrulama günlük iletileri için normal ifade kurallarına sahibim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.