Phân tích các thông báo nhật ký hệ thống thành các bảng MySQL riêng biệt với rsyslog


10

Rsyslog bên ngoài hộp sẽ kết xuất mọi thứ vào SystemEventsbảng trong cơ sở dữ liệu `Syslog (nếu bạn sử dụng lược đồ mặc định được cung cấp). Tôi muốn sử dụng một biểu thức chính quy để lọc các tin nhắn gửi đến vào các bảng cơ sở dữ liệu riêng biệt.

Tôi đã chơi với nó, nhưng tôi có một thời gian khó khăn để tìm ra cách tốt nhất để thực hiện điều này (hoặc thậm chí là một cách hoạt động).

Trong rsyslog.conf của tôi:

$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

Đây là nỗ lực mới nhất của tôi, nhưng tôi bị mắc kẹt.

(bảng RogueAPs chỉ là một bản sao của bảng SystemEvents mặc định đi kèm với rsyslog)


Thông tin phiên bản:

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.

Câu trả lời:


1

từ việc xem hướng dẫn này , tôi thấy không có gì khác biệt.

Nhưng nhìn vào tài liệu mẫu từ rsyslog , dường như có một sự khác biệt với mysql tùy thuộc vào cài đặt cho tham số NO_BACKSLASH_ESCAPES.

Từ các tài liệu:

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

Thật không may, tài liệu rsyslog, không hoàn toàn khủng khiếp hoặc dễ hiểu trong một số lĩnh vực. Tôi đã dành một phần tốt trong vài tuần qua để làm việc với công cụ rsyslog / MySQL / regex.

Bạn có thể đăng một mẫu của dòng nhật ký mà bạn đang cố gắng kết hợp lại, lược đồ của bảng mà bạn muốn nó đi vào, v.v.? Những thứ bạn đăng có vẻ như nó sẽ hoạt động ... bạn đang cố gắng lọc cái gì? Và là lược đồ mặc định có thể sử dụng cho bạn?

Bên cạnh đó, tôi không thể không chú ý rằng bạn đang sử dụng một bảng có tên RogueAPs. Tôi không biết nhà cung cấp nào bạn đang sử dụng, nhưng tôi có các quy tắc regex cho thông báo nhật ký xác thực từ bộ điều khiển Meru Networks và BlueSocket.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.