1
1

ECS上のTomcatアクセスログをCloudWatch Logsに出力する

Last updated at Posted at 2022-09-02

はじめに

  • ECS上で動作するコンテナについては標準出力にログが流れるよう設定する必要がありますが、Tomcatアクセスログはデフォルトで標準出力には流れません。
  • 本記事ではTomcatのアクセスログを標準出力とし、CloudWatch Logsに出力する方法を紹介します。

環境

  • Java11
  • tomcat9.0

実施内容

方法としては以下です。

  • アクセスログを日付毎に出力するのではなく、固定ファイル名とする
  • 固定ファイルと標準出力のシンボリックリンクを作成する

202402追記: serverl.xmlに directory="/dev" prefix="stdout"と直接標準出力を指定することが可能です。その場合は固定ファイルの作成とシンボリックリンク作成は不要です。

server.xmlの用意

server.xmlのAccessLogValveを以下のような設定にする事で、アクセスログを固定ファイル名access_log.txtに出力するよう設定します。

server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b"
rotatable="false" fileDateFormat="" />

Dockerfileの用意

server.xmlの上書きを行い、その上で標準出力とaccess_log.txtのシンボリックリンクを作成します。

Dockerfile
FROM tomcat:9.0-jdk11-corretto
RUN yum update -y
COPY server.xml /usr/local/tomcat/conf/server.xml
RUN ln -sf /dev/stdout /usr/local/tomcat/logs/access_log.txt
COPY sample.war /usr/local/tomcat/webapps/sample.war
EXPOSE 8080

Dockerfileをビルドし、ECRにプッシュ

# ECRの認証
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin アカウントID
.dkr.ecr.ap-northeast-1.amazonaws.com
# Dockerイメージのビルド
docker build -t tomcat-sample .
# イメージのタグ付け
docker tag tomcat-sample:latest アカウントID.dkr.ecr.ap-northeast-1.amazonaws.com/tomcat-sample:latest
# イメージのプッシュ
docker push アカウントID.dkr.ecr.ap-northeast-1.amazonaws.com/tomcat-sample:latest

タスク定義、サービスの作成

ECRにプッシュしたイメージを参考に、tomcatコンテナを起動します。

tomcatコンテナの設定内容

ECSのタスク定義内のログドライバーはデフォルトのawslogsを利用します。
image.png

8080番ポートをホストOSの8080番ポートにバインドします。
image.png

※この際、タスク実行ロールの設定を忘れないようにしましょう

CloudWatch Logsでアクセスログを確認

ip:8080の形でTomcatコンテナにブラウザからアクセスします。
次に、設定したロググループよりログを確認します。
image.png

無事、アクセスログがCloudWatch上で確認できる状態になりました!
image.png

参考文献

https://aws.amazon.com/jp/premiumsupport/knowledge-center/ecs-container-logs-cloudwatch/

https://github.com/docker-library/tomcat

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1