目的
以下が行えるログ機構を作成する
- /var/log/docker/sample-app.log
上記のようにログファイルに以下が格納される
Sep 6 04:39:37 ip-10-0-2-215 sample-app/{docker_container_id}: {ip address} – – [06/Sep/2020:04:39:37 +0000] “GET / HTTP/1.1” 200 62 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36” - ローテーションすると、sample-app.log-20200906.gzのようにgzipかされる
- 365世代分のログファイルがgzip化され、366世代以降は削除される
詳細
・docker-compose loging part
logging:
driver: syslog
options:
syslog-facility: daemon
tag: sample-app/{{.Name}}/{{.ID}}
・/etc/rsyslog.d/10-docker.conf
$template DockerLogs, "/var/log/docker/%programname%.log"
if $syslogfacility-text == 'daemon' and $programname contains 'sample-app' then -?DockerLogs
& stop
・/etc/logrotate.d/docker
/var/log/docker/*.log {
rotate 365
compress
daily
dateext
missingok
}
以下で反映を忘れないようにする
$ systemctl restart rsyslog
また以下コマンドでのチェックも行う
$ logrotate -dv /etc/logrotate.conf
実際にローテーションさせたい場合は以下(他のログに関してもローテーションしてしまうので注意する)
$ logrotate -f /etc/logrotate.conf
すでにdocker-composeにて起動している場合は、docker-compose restartではログ機構が反映されないので、docker-compose up で反映させる必要あり。(原因は調査中)
参考

Dockerのログをrsyslogで出力する - Qiita
概要
Dockerのログをrsyslogで出力する方法。
関連
任意のログをlogrotateを使って管理する
環境
CentOS 7.7
rsyslog 8.24.0-41.el7_7.2
Docker...
上記が参考になった
あとがき
地味にできていない部分だったので、まとめることができてよかった
最低限のログ設定かなとも思うので、どんどん設定を加えていく。
コメント