2013年03月13日

rsyslogでサーバー監視をしてみる。

次世代syslogと言われいるrsyslogはバックエンドにMysqlなどのDBが使える。

複数台のLINUXサーバーがあるので、ログの収集、監査に都合がいいなと思い導入した時の覚書。

CentOS6からrsyslogが採用されているようなので、後はrsyslog-mysqlを追加すれば良さそう。

# yum install rsyslog-mysql

上記でうまく行くのだが、DBサーバーなどすでにMysqlが入っている場合、今回は5.6だったためだと思うが、
依存でmysql-libsが入り、そしてそれが競合しまくってインストールできないことがある。

その場合は、rpmでrsyslog-mysqlを単独でインストールすれば出来そう。

また、mysql-libが無い場合や、使いたくない場合などはmysql-shared-compatで代用できるみたい。

今回はすでにmysql5.6が入っているDBサーバーに適用した記録。

・mysql-shared-compatとrsyslog-mysqlのインストール

# rpm -ivh MySQL-shared-compat-5.6.10-1.linux_glibc2.5.x86_64.rpm

# yum install yum-utils

# yumdownloader rsyslog-mysql

# rpm -ivh rsyslog-mysql-5.8.10-2.el6.x86_64.rpm

・DB作成

# mysql -u root -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

・ユーザー作成

mysql> GRANT ALL PRIVILEGES ON Syslog.* TO rsyslog@localhost IDENTIFIED BY 'hogehoge';

・rsyslogの設定

# vi /etc/rsyslog.conf

#$ModLoad immark.so  # provides --MARK-- message capability の下に追記。

$ModLoad ommysql.so
*.* :ommysql:localhost,Syslog,rsyslog,password

(ファシリティ.プライオリティ :ommysql:ホスト,DB,ユーザ,パスワード)

・サービス再起動

# service rsyslog restart

上記の流れでDBに記録されることが確認できた。

ただ、デフォルトのテーブルはフィールドがやたらと多くNULLばっかりなんで必要な項目だけにカスタマイズする。

以下のフィールドで構成してみる。

CREATE TABLE SystemEventsCustom
(
  ID             INT UNSIGNED NOT NULL,
  GeneratedTime        DATETIME,
  Facility          SMALLINT,
  Priority          SMALLINT,
  FacilityName        VARCHAR(255),
  PriorityName        VARCHAR(255),
  ProgramName         VARCHAR(255),
  FromHost          VARCHAR(60),
  Message           TEXT,
  CONSTRAINT PRIMARY KEY (ID)
);

rsyslogの設定を以下に変更。記録するのもプライオリティがerrレベル以上にする。

$ModLoad ommysql.so
$template mysqlCustom,"insert into SystemEventsCustom (GeneratedTime, Facility, Priority, FacilityName, PriorityName, ProgramName, FromHost, Message) values ('%timegenerated:::date-mysql%', %syslogfacility%, %syslogpriority%, '%syslogfacility-text%', '%syslogpriority-text%', '%programname%', '192.168.0.121', '%msg%')",SQL
*.err :ommysql:localhost,Syslog,rsyslog,password;mysqlCustom

※インサート文にIPアドレスを直接記述してるが、当初は%fromhost-ip%で行なっていたが、意図したものが取得できなかった。hostsとかサーバー側の設定の問題かもしれないが今回は手抜きです^^;
プロパティ一覧
http://www.rsyslog.com/doc/property_replacer.html

こんな感じでDBにログの収集が出来ましたー。
posted by hana at 10:33| Comment(0) | TrackBack(0) | Linux関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック