rsyslog + MySQL(ログをDBへ保存する方法) ver3

CentOS6でrsyslogが大幅にバージョンしてて、掲載していた内容と大きく異なったので3回目の再掲載。
うんで、今回はMySQLに放り込むログをフィルタリングするように設定してます。

■インストールしたパッケージ
・rsyslog-4.6.2-3.el6_1.4.x86_64
・rsyslog-mysql-4.6.2-3.el6_1.4.x86_64

■Mysqlのデータベース
対象ログ    :local1(ネットワーク機器等のSyslog設定でファシリティー”local1″を受信する場合)
DBサーバ   :localhost
DB名      :Syslog
アクセスユーザ:root(実際はrootは好ましくない。適宜変更する)
パスワード   :test

■フィルタリングの内容(#### RULES ####以下)
対象ログ    :local1
内容      :Netscreenのブロードキャストログ(キーワードは”dst=224.0.0.18″)だけを破棄。

上記の内容を元に設定例を記してます。

Mysqlにシスログを格納するデータベースを作成
# mysql -u root -p Syslog < /usr/share/doc/rsyslog-mysql-4.6.2/createDB.sql

設定ファイルを編集する
# vi /etc/rsyslog.conf
#### MODULES ####
$ModLoad imuxsock.so
$ModLoad imklog.so


# Provides UDP syslog reception
#$ModLoad imudp.so
#$UDPServerRun 514
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp.so
#$InputTCPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat


#### RULES ####
$ModLoad ommysql.so
if ( $syslogfacility-text == 'local1' ) and \
        not ( $msg contains 'dst=224.0.0.18' ) then \
        :ommysql:localhost,Syslog,root,test
local2.*        ~

うんで、併せてMysqlに放り込んだログをWEBで見るためのphpを載せてたんですが
AND検索に対応してないじゃないか。あまりにもお粗末すぎて話にならないんで以下を修正しました。
result.php
・変数一覧に”SEARCHKEYWORD”を追加
・AND検索用に検索キーワードを加工する為に以下を追加

//AND検索用に加工
$str = array(" "," and "," AND ");
$SEARCHKEYWORD = str_replace($str," ",$SEARCHKEYWORD);
$SEARCHWORD = str_replace(" ","% %",$SEARCHKEYWORD);

・表示する検索キーワードの変数をSEARCHKEYWORDに変更

変更前
echo "検索キーワード:".$SEARCHWORD;

変更後
echo "検索キーワード:".$SEARCHKEYWORD;

Syslog検索 from MySQL v1.1
https://www.isoppe.jp/db/
うんで内容ファイルを公開、と。https://www.isoppe.jp/upload/log/011.zip

以下が全文になります。複数ファイルを1つにまとめてます。

==================================
2/17 22:00 若干修正

シェアする

  • このエントリーをはてなブックマークに追加

フォローする