LoginSignup
4
5

More than 3 years have passed since last update.

DockerのlogをAWS CloudWatchに紐付けしVSCodeでリアルタイムに監視する

Last updated at Posted at 2020-09-29

はじめに

AWS EC2内のDockerコンテナ上で動くサービス(docker-composeで管理)のログをCloudWatchLogsに投げ、VSCodeでリアルタイム監視ができるまでの手順をまとめる。

  • Dockerのlog driverについて
  • CloudWatchLogsへの登録
  • VSCodeのAWS拡張についてとログの閲覧

Dockerのlog driverについて

Dockerの標準機能で/var/lib/docker/containers/にコンテナ内のログを出力するようになっている。そのため、Linuxのlogrotate等を使用する必要はない。
docker-composeでの実装例は以下の通り。

docker-compose.yml
version: "3"
services:
  hello:
    image: "busybox:latest"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

CloudWatchLogsへの登録

上記で解説した、Dockerのlog driverを使用してログの出力先をCloudWatchLogsに変更することができる。
docker-composeでの実装例は以下の通り。

docker-compose.yml
version: '3'
services:
  app:
    build:
      context: .
      dockerfile: prod/Dockerfile
    restart: always
    expose:
      - 8000
    environment:
      - TZ=Asia/Tokyo
    logging:
      driver: awslogs
      options:
        awslogs-region: ap-northeast-1
        awslogs-group: log-group-name
        tag: "{{.ImageName}}.{{.Name}}.{{.FullID}}"
  nginx:
    build:
      context: .
      dockerfile: nginx/Dockerfile
    restart: always
    ports:
      - 8080:80
    depends_on:
      - app
    logging:
      driver: awslogs
      options:
        awslogs-region: ap-northeast-1
        awslogs-group: log-group-name
        tag: "{{.ImageName}}.{{.Name}}.{{.FullID}}"

docker-composeではサービスごとにlog driverの設定を記述する。
awslogs-groupにはマネジメントコンソールで作成したロググループ名を書く。

VSCodeのAWS拡張についてとログの閲覧

VSCodeの拡張機能の検索窓にawsと打ち込めば、下の画像のようなAWS Toolkitが表示されるので、それをインストールする。
スクリーンショット 2020-09-29 17.43.59.png
リージョンとアクセスキーを指示に従って設定する。
スクリーンショット 2020-09-29 17.47.32.png
上の画像のCloudWatch Logsのタブを開くとロググループが表示されるので、右クリックしview log streamを選択する。
Output Colorizer拡張をインストールしておくと、ログをハイライト付きで見ることができるので入れるとよい。

参考

4
5
0

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
4
5