rsyslogを使用して、syslogメッセージを個別のMySQLテーブルに解析します


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テーブルは、rsyslogに付属するデフォルトのSystemEventsテーブルの単なるクローンです)


バージョン情報:

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の作業に費やしてきました。

正規表現で一致させようとしているログ行のサンプル、移動先のテーブルのスキーマなどを投稿できますか?あなたが投稿したものはうまくいくようです...あなたは何を除外しようとしていますか?また、デフォルトのスキーマは使用できますか?

余談ですが、RogueAPと呼ばれるテーブルを使用していることに気付かずにはいられませんでした。使用しているベンダーはわかりませんが、Meru NetworksおよびBlueSocketコントローラーからの認証ログメッセージの正規表現ルールがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.