logger-exec

apache・audit・PowerDNSなどはログをsyslog転送して、
中央管理を行いたいケースが多々ありますが、
syslogに直接出力するには細工が必要となり、
アプリのメンテナンス性が低下してしまいます。
 
この問題に対応する為、ローカルのテキストログを
リアルタイム取得しながらsyslogに変換し、
rsyslog・syslog-ngを経由させる事で、
ログのリモート転送を行うスクリプトを作成したので公開します。

left,nowrap


参考サイト

注意事項

  1. ファイル利用による損益について、一切の責任を負いません。
  2. 状況に応じて、インストーラ・スクリプトの公開を停止する場合があります。
  3. ライセンスについて、筆者が作成したスクリプトは好きに改変して問題ありませんが、
    外部ライブラリのライセンスについてはライブラリ配布元に帰属とします。
  4. 宣伝してくれる心優しい方は、是非トップページへリンクをお願いします。

スクリプト

公開日FILESIZEMD5更新内容
2019/05/12logger_20190512.tar.gz2.9KB2cd2a0d318c21a4069690bfc99aa398erestartで再起動しない場合がある不具合を修正
2019/05/10logger_20190510.tar.gz2.9KBc07f49574cdbecd8b0d1197e5ab98f3a初公開


インストール

CentOS/Debian/openSUSE用のインストーラを同梱していますので、
下記コマンドの通りスクリプトを実行してインストールしてから使って下さい。

# wget "https://www.ns-lab.org/files/logger/logger_latest.tar.gz"
# tar zxvf logger_latest.tar.gz
# cd logger
# ./install.sh

 
手動インストールを行う場合、下記を参考に各ファイルをコピーしつつ、
実行ファイル・コンフィグのパーミッションを適切に設定して下さい

# cp logger/environment/logger.sysconfig /etc/sysconfig/logger
# chown root.root /etc/sysconfig/logger
# chmod 644 /etc/sysconfig/logger

# cp logger/init.d/logger.centos /etc/init.d/logger
# chown root.root /etc/init.d/logger
# chmod 755 /etc/init.d/logger

# cp logger/logger-exec /usr/local/sbin/
# chown root.root /usr/local/sbin/logger-exec
# chmod 755 /usr/local/sbin/logger-exec

# mkdir -p /etc/logger
# cp logger/logger.conf /etc/logger/
# chown root.root /etc/logger/logger.conf
# chmod 644 /etc/logger/logger.conf

# chkconfig --add logger
# chkconfig logger on
# systemctl daemon-reload


設定ファイル

スクリプトを実行するには、下記2ファイルの設定が必要となります。
環境変数についてはデフォルト状態で動作しますが、
スクリプトのログ読込み設定については環境に合わせて再設定して下さい。

 /etc/sysconfig/logger
 /etc/logger/logger.conf

 
取得したログをリモートサーバにsyslog転送するには、rsyslog・syslog-ngの設定変更も必要になります。
local1の全ログをIPアドレス10.0.0.1、
local2の全ログをIPアドレス10.0.0.2に転送する場合、rsyslogには下記の様な設定を追加して下さい。

 /etc/rsyslog.conf


実行コマンド

スクリプトの全設定を行った後、initスクリプトを実行するとloggerが起動します。
起動オプション・停止コマンドは下記の通りとなっています。

  • スクリプト起動
    /etc/init.d/logger start
  • スクリプト停止
    /etc/init.d/logger stop
  • スクリプト再起動
    /etc/init.d/logger restart

 
スクリプトが正常に起動しつつ、rsyslog・syslog-ngのリモート転送も設定している場合、
ログ転送先(図のサーバB)では下記の様なログを取得する事が出来ます。
ログが転送されて来ない場合、何処かの設定が失敗しているので設定・パーミッションを見直して下さい。

May 10 00:15:00 server audit: type=CRYPTO_KEY_USER msg=audit(1557414900.XXX:415): pid=*** uid=0 ...
May 10 00:15:00 server audit: type=CRYPTO_KEY_USER msg=audit(1557414900.XXX:416): pid=*** uid=0 ...
May 10 00:15:00 server audit: type=CRYPTO_KEY_USER msg=audit(1557414900.XXX:417): pid=*** uid=0 ...

添付ファイル: filelogger_01.png 10件 [詳細]