2
1

More than 5 years have passed since last update.

[Docker] awslogs-datetime-format の指定方法に注意

Last updated at Posted at 2018-11-07

[Docker] awslogs-datetime-format の指定方法に注意

背景

  • Dockerの awslogs ログドライバでは,awslogs-datetime-format オプションがあり,指定した形式の日時がログのある行に含まれていれば,続く行も同じ日時とみなされる
  • Stacktrace のようにログレコードが複数行にわたる場合,ログレコードが細分化されずに一つにまとまるので便利である

状況

  • AWS ECS のタスク定義 JSON において,awslogs-datetime-format を以下のように [日時] となるように指定すると,タスク起動に失敗した
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "AWSLOGS_GROUP_NAME",
          "awslogs-datetime-format": "[%Y-%m-%d %H:%M:%S]",
          "awslogs-region": "ap-northeast-1",
          "awslogs-stream-prefix": "PREFIX"
        }
      }

同様の事例

  • docker run コマンドで --log-opt を指定して起動するとき,以下のように awslogs-datetime-format を指定すると,コンテナの立ち上げに失敗する
$ docker run --log-driver=awslogs \
             --log-opt awslogs-region=us-east-1 \
             --log-opt awslogs-group=myLogGroup \
             --log-opt awslogs-datetime-format='[%b %d, %Y %H:%M:%S]' \
             centos:latest /bin/bash
docker: Error response from daemon: failed to initialize logging driver: awslogs could not parse multiline pattern key "[\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1,2][0-9]|3[0,1])T(?:[0,1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]+00:00]": error parsing regexp: invalid character class range: `}-(`.

原因

解決方法

  • [ ]\[ \] にエスケープする
$ docker run --log-driver=awslogs \
             --log-opt awslogs-region=us-east-1 \
             --log-opt awslogs-group=myLogGroup \
             --log-opt awslogs-datetime-format='\[%b %d, %Y %H:%M:%S\]' \
             centos:latest /bin/bash
  • JSON ではさらに \\\ にエスケープしなければならないため,\[ \]\\[ \\] とする.最終的に以下のようになる
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "AWSLOGS_GROUP_NAME",
          "awslogs-datetime-format": "\\[%Y-%m-%d %H:%M:%S\\]",
          "awslogs-region": "ap-northeast-1",
          "awslogs-stream-prefix": "PREFIX"
        }
      }
2
1
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
2
1