일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ssh command
- VPN
- ubuntu
- Linux
- 도커
- docker-compose
- 루비
- docker
- 패키지
- VIM
- golang
- Openswan
- sudo
- 리눅스
- 드라이버
- AWS
- QT
- docker container
- 방화벽체크
- port
- opsworks
- window size
- docker registry
- VMware
- Chef
- 우분투
- driver
- DevOps
- ssh
- RUBY
- Today
- Total
구리의 창고
Docker 로그 관리 - logrotate 본문
소개
docker를 신나게 사용하다보면 감당 할 수 없는 로그가 쌓이게된다. 기본적으로 STDOUT, STDERR는 전부 로그로 남기 때문에 하드디스크 용량부족 사태를 미연에 방지해야한다. docker container를 생성 할 때 logging driver를 지정 할 수 있는데 기본 값은 json-file이다.
로그보기
$ docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--help Print usage
--since string Show logs since timestamp
--tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps Show timestamps
기본적으로 명령어 사용법은 위와 같다. 옵션들이 몇 개 있는데, 사용하는데 꼭 필요한 것들이 몇 개 있다.
-f, --follow
로그를 계속 모니터링 할 때 사용한다. tail -f와 같은 기능이다.
--tail
이 옵션 없이 명령어를 실행하면 모든 로그를 한 번에 보여준다. 로그 크기가 너무 클 경우 쓸데 없는 시간만 낭비하게된다.
예제
adminer container 로그를 최근 5개만 모니터링하는 예제이다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2006c3a3a8a3 postgres:9.6.3 "docker-entrypoint..." 45 hours ago Up 45 hours 0.0.0.0:5432->5432/tcp postgres_db_1
1f72794c4c51 adminer "entrypoint.sh doc..." 45 hours ago Up 45 hours 0.0.0.0:5050->8080/tcp postgres_adminer_1
$ docker logs -f --tail=5 1f72
[Tue Jul 18 02:54:50 2017] ::ffff:10.3.22.35:49833 [200]: /?pgsql=db&username=root&db=dgoh&ns=public&script=db
[Tue Jul 18 03:08:47 2017] ::ffff:10.3.22.35:50102 [200]: /?pgsql=db&username=root&db=dgoh&ns=public&table=config
[Tue Jul 18 03:08:47 2017] ::ffff:10.3.22.35:50103 [200]: /adminer.css
[Tue Jul 18 03:08:48 2017] ::ffff:10.3.22.35:50104 [200]: /?pgsql=db&username=root&db=dgoh&ns=public&select=config
[Tue Jul 18 03:08:48 2017] ::ffff:10.3.22.35:50105 [200]: /adminer.css
로그관리
위에서도 말했듯이 기본 logging driver를 사용하면 로그가 계속 쌓이게된다. 간단하게 logrotate를 이용해서 오래된 로그를 관리 할 수 있다. 로그가 저장되는 위치는 /var/lib/docker/containers이다. 아래처럼 logrotate를 설정해준다.
# /etc/logrotate.d/docker-container
/var/lib/docker/containers/*/*.log {
rotate 7
daily
compress
size=1M
missingok
delaycompress
copytruncate
}
좀 더 자세한 logrotate 설정은 직접 찾아보면서 설정하는 편이 좋다.
'DevOps' 카테고리의 다른 글
Docker - v1 registry 접속 실패 404 Not Found (disable-legacy-registry) (0) | 2017.09.25 |
---|---|
Docker Image - repository 이름으로 삭제하기 (0) | 2017.08.04 |
Docker Registry V2 설치 (0) | 2017.07.12 |
docker-compose 사용 (0) | 2017.07.12 |
docker-compose 설치 (0) | 2017.07.12 |
Comments