แยกวิเคราะห์ข้อความ 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

คุณสามารถโพสต์ตัวอย่างของบรรทัดบันทึกที่คุณพยายามจะจับคู่ regex, schema ของตารางที่คุณต้องการให้มันเข้าไปเป็นต้น เนื้อหาที่คุณโพสต์ดูเหมือนว่าควรจะทำงาน ... คุณพยายามกรองอะไร และสคีมาเริ่มต้นใช้งานได้สำหรับคุณหรือไม่

ในบันทึกด้านข้างฉันอดไม่ได้ที่จะสังเกตว่าคุณกำลังใช้ตารางชื่อ RogueAP ฉันไม่ทราบว่าผู้ขายรายใดที่คุณใช้ แต่ฉันมีกฎ regex สำหรับข้อความบันทึกการตรวจสอบสิทธิ์จาก Meru Networks และ BlueSocket controllers

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.