도커는 도커컨테이너의 표준출력(stdOut)과 에러(stdErr)로그를 메타파일로 저장한다.
docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:5.7
mysql이미지는 포그라운드모드로 실행되어 -d로 백그라운드로 실행한다.
docker logs -ft --tail 2 mysql
--tail:마지막 2줄 로그확인
-f:스트림으로 로그확인(실시간)
-t:타임스탬프찍기
/var/lib/docker/containers/${container_ID}/${container_ID}-json.log
컨테이너 로그 경로
docker run -it \
--log-opt max-size=10k --log-opt max-file=3 \
--name log-test
ubuntu:14.04
로그파일 최대사이즈및 갯수 설정
syslog는 유닉스계열 운영체제의 표준중 하나이다.logentries,loganalyzer
같은 툴을 이용해 웹 인터페이스로 확인가능하다.
docker run -d --name syslog_container \
--log-driver=syslog \
ubuntu:14.04 \
echo syslogtest
/var/log/syslog
데비안계열 시스로그경로
/var/log/messages
레드헷계열 시스로그경로
journalctl -udocker.service
시스로그 출력
docker run -it -h rsyslog --name rsyslog_server -p 514:514 -p 514:514/udp ubuntu:14.04
1.514포트를 오픈한 컨테이너 생성. -h는 컨테이너호스트ip의 alias옵션이다.
#provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
#provides TCP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
2./etc/rsyslog.conf
의 syslog설정 주석을 해제한다.
3.service rsyslog restart
docker run -it \
--log-driver=syslog \
--log-opt syslog-address=tcp://172.17.0.2:514 \
--log-opt tag="mailing" \
--name mailClient \
ubuntu:14.04
4.로그가 생성되는 클라이언트를 생성한다.syslog-address주소는 서버주소를 입력한다.udp로 하고자 하면 tcp=>udp로 변경한다.tag옵션은 로그마다 설정한 태그가 붙는다.클라이언트에서 echo hello
를 생성후 서버에서
tail /var/log/syslog
를 실행하면 로그를 확인할 수 있다.
docker run -it \
--log-driver=syslog \
--log-opt syslog-address=tcp://172.17.0.2:514 \
--log-opt tag="mailing" \
--log-opt syslog-facility="mail" \
--name mailClient \
ubuntu:14.04
log-opt syslog-facility="mail"
옵션을 통해 /var/log/mail.log라는 별도의 로그파일을 생성하였다.
오픈소스 로깅툴이다.포맷으로 JSON을 사용하며 AWS S3,HDFS,MongoDB등에 저장가능하다.
docker run --name mongoDB -d \
--name mongo \
-p 27017:27017 \
mongo
1.몽고db컨테이너를 생성한다.
<source>
@type forward
</source>
<match docker.**>
@type mongo
database nginx
collection access
host 172.17.0.6
port 27017
flush_interval 10s
user myUser
password myPassword
</match>
collection access
:저장할 컬렉션명
host 172.17.0.6
:mongo컨테이너 주소
user
: mongodb유저(미설정시 삭제)
password
:mongodb패스워드(미설정시 삭제)
docker run -d --name fluentd -p 24224:24224 \
-v $(pwd)/fluent/conf:/fluentd/etc/fluent.conf \
-e FLUENTD_CONF=fluent.conf \
alicek106/fluentd:mongo
2.fluent.conf파일을 생성하고 파일을 공유한 fluentd컨테이너 생성
docker run -p 80:80 -d \
--log-driver=fluentd \
--log-opt fluentd-address=<fluentdIpAddress>:24224 \
--log-opt tag=docker.nginx.webserver \
nginx
3.브라우저로 80포트에 접근하면 로그가 mongodb에 저장된다.<match docker.** >에 맞게 tag를 docker.nginx.webserver로 설정하였다.
docker exec -it mongDB mongo
show dbs
use nginx
show collections
4.생성된 데이터를 확인한다.