Featured image of post LogbackのログをAWSのCloudWatchに転送する方法【SpringBoot2】

LogbackのログをAWSのCloudWatchに転送する方法【SpringBoot2】

SpringBoot2のLogbackのログをcloudwatch-logback-appenderでAWSのCloudWatchに転送する方法。IAMの用意、Gradleの依存関係の追加、logback-spring.xmlへのCloudWatch用設定の追加、転送の確認まで♪

616文字

CloudWatchにログを転送しよう

近年のサーバーシステムは、オンプレでサーバー構築をする事はほとんど無くなりました

そして、クラウドシステムとしてはAWSかGCPの二択になると思います。

今回はcloudwatch-logback-appenderを利用して、AWSのCloudWatchシステムログを転送する方法をご紹介します。

CloudWatchを利用する事で、ログ解析が格段に行いやすくなるのでオススメです♪

手順

前提

まずはAWSでCloudWatchへの権限があるIAMを用意しておいてください。

そのユーザーのアクセスキーとシークレットキーを利用します。

依存関係の追加

まずはgradleの依存関係を追加しましょう。

property.gradle
ext {
...
    accountService.awsSdkVersion = '1.11.483'
    accountService.cloudWatchLogbackAppenderVersion = '1.11'
...
}

build.gradle
buildscript {
....
        compile "com.amazonaws:aws-java-sdk:${accountService.awsSdkVersion}"
        compile "com.j256.cloudwatchlogbackappender:cloudwatchlogbackappender:${accountService.cloudWatchLogbackAppenderVersion}"
...
}

logbackの設定を修正

次にlogback-spring.xmlCloudWatch用の設定を追加します。

[adsense-responsive]

logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
...
	<appender name="CLOUDWATCH" class="com.j256.cloudwatchlogbackappender.CloudWatchAppender">
		<region>ap-northeast-1</region>
        <accessKeyId>XXX</accessKeyId>
        <secretKey>YYY</secretKey>
        <logGroup>blogenist-loggroup</logGroup>
        <logStream>blogenist-logstream</logStream>
        <layout>
            <pattern>${FORMAT}</pattern>
        </layout>
        <maxBatchSize>32</maxBatchSize>
	</appender>

	<root level="DEBUG">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
		<appender-ref ref="CLOUDWATCH" /><!-- 追加 -->
	</root>

</configuration>

確認

設定はこれだけです。

では実際に、サーバーを起動してリクエストを投げてみましょう。

curl -v 'http://localhost:8080/v1/accounts/10001/'
# レスポンスヘッダー
< HTTP/1.1 200
< x-request-id: 0523847d-68dc-4db8-8de0-00f65592f43a
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Sat, 04 May 2019 04:23:23 GMT

正常にCloudWatchに転送されていますね。

[adsense-responsive]

また、以前埋め込んだX-Request-Idも正常に出力されているので、レスポンスヘッダーに含まれているx-request-idで絞り込む事で対象のログを絞り込めるのでとても調査がしやすいです!

終わりに

以上のように、ライブラリを追加してちょっとした設定を追加するだけでとても簡単にCloudWatchにログを転送する事が出来ました。

AWS環境でシステムを運用する場合は運用がとても便利になるので、是非試してみてください♪