Tomcatのcatalina.outをsyslogサーバーに転送する

こんにちは。サイオステクノロジーの小川です。

今回はTomcatのcatalina.outをsyslogサーバーに転送する方法について書きたいと思います。

syslogへの出力方法

Tomcatライブラリーのデフォルトではsyslogにログを転送できません。syslogでのログを出力するにはlog4j2ライブラリーを利用します。下記の図のようにlog4j2を経由することで標準出力ログとsyslogのログを出力することができます。

log4j2で必要最低限のモジュールは

  • log4j-api
  • log4j-core

になります。

今回はlog4j2のApplication Serverモジュールを利用して、CATALINA_HOME直下の既存ディレクトリ内はほぼいじらずに、新しくlog4j2というディレクトリを作成し、log4j2配下のファイルを統合する設定を記載します。

設定環境

今回検証で利用した環境は以下になります。

OS CentOS 7.7
ミドルウェア Apache 2.4.6
Apache tomcat 9.0.30
Open JDK 11.0.5
log4j 2.13.0
rsyslog 8.24.0

ApacheとApache Tomcatの設定は終わっていることを前提とします。

tomcatのlog4j2設定

Apache Log4j 2を下記URLからダウンロードします。

http://logging.apache.org/log4j/2.x/download.html

ダウンロードしたら、解凍します。

CATALINA_HOME配下にlog4j2ディレクトリを作成します。

apache-log4j-2.13.0-binディレクトリに移動します。

log4j2配下にlibディレクトリを作成し、apache-log4j-2.13.1-bin配下の

  • log4j-api-2.13.0.jar
  • log4j-core-2.13.0.jar
  • log4j-appserver-2.13.0.jar

上記3つのjarファイルをlibディレクトリ配下に置きます。

log4j2ディレクトリの設定を統合するために、/usr/local/tomcat/bin/setenv.shにCLASSPATHの設定を追記します。

setenv.shを読み込みます。

log4j2配下にconfディレクトリを作成します。

ログ出力ファイルを作成し、以下のように設定します。今回はファシリティをLOCAL1 で設定します。

ローカルの出力ログのローテーション設定をlogrotateで設定する場合は、RollingFile Appenderの設定部分(<RollingFile>~</RollingFile>)とLoggerの<AppenderRef ref=”catalina”/>をコメントアウトし、logrotateでローテーションの設定をしてください。

tomcatを再起動します。

以上でtomcatの設定は完了です。

syslogサーバーでの設定

syslogサーバーでLOCAL1のログを受信する設定をします。

ポート514のUDPを開放し、local1の出力先を指定します。

rsyslogを再起動します。

 

以上で設定は完了です。

tomcatを再起動するとログがsyslogサーバーに転送されていることが確認できます。

 

~参考URL~

http://logging.apache.org/log4j/2.x/download.html

http://logging.apache.org/log4j/log4j-2.11.2/log4j-appserver/index.html

http://logging.apache.org/log4j/2.x/manual/appenders.html#SyslogAppender





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*