수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다
개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!
교재 <시작하세요! 도커/쿠버네티스 - 용찬호 지음>를 토대로 실습을 진행하였습니다.
* fluentd
Fluentd는 트레저 데이터(Treaure Data)에서 개발된 크로스 플랫폼 오픈 소스 데이터 수집 소프트웨어 프로젝트이다. 주로 루비 프로그래밍 언어로 작성되어 있다.
Fluentd는 반-비정형 데이터 집합을 위한 빅 데이터 도구이다. 아파치 카프카처럼 이벤트 로그, 애플리케이션 로그, 클릭스트림을 분석한다.
- 출처 : 위키백과 -
한마디로 말해서 각종 로그를 수집하고 저장할 수 있는 기능을 제공하는 오픈소스 도구입니다!
시나리오는 다음과 같습니다.
특정 호스트에 생성되는 컨테이너는 fluentd에 접근하고, fluentd는 몽고DB에 데이터를 저장하는 구조입니다.
*실습 요약
1) 몽고DB 컨테이너 생성
2) fluentd.conf 파일을 생성
3) fluentd 컨테이너 생성
4) 로그 수집을 위한 컨테이너 생성
5) 테스트
1) 몽고DB 컨테이너 생성
#docker run --name mongoDB -d \
> --net host \
> -p 27017:27017 \
mongo
2) fluentd.conf 파일을 생성하고 아래 내용을 저장합니다.
fluentd.conf 파일의 주 내용은 들어오는 로그 데이터를 몽고DB에 전송하고, access라는 이름의 컬렉션에 로그를 저장하며, 몽고DB 컨테이너의 호스트 주소와 포트를 지정한 것입니다.
<match docker.**>는 로그의 태그가 docker로 시작하면 이를 몽고DB에 전달하는 것을 의미합니다.
<source>
@type forward
</source>
<match docker.**>
@type mongo
database nginx
collection access
host mongoDB
port 27017
flush_interval 10s
</match>
3) fluentd 컨테이너 생성
도커 허브의 fluentd 이미지에는 몽고DB에 연결하는 플러그인이 내장돼 있지 않습니다.
alicek106/fluentd:mongo 이미지는 공식 fluentd 이미지에 몽고DB 플러그인을 설치한 것입니다.
#docker run -d --name luentd -p 24224:24224 \
> --net host \
> -v $(pwd)\fluent.conf:/fluentd/etc/fluent.conf \
> -e FLUENTD_CONF=fluent.conf \
alicek106/fluentd:mongo
4) 로그 수집을 위한 컨테이너 생성
--log-driver 을 fluentd 로 설정하고 --log-opt의 fluent-address 값에 fluentd 서버 주소를 지정합니다.
fluentd의 설정 파일 중 <match docker.**>에 맞으므로 몽고DB에 로그로서 저장됩니다.
#docker run -p 80:80 -d \
> --net host \
> --log-driver=fluentd \
> --log-opt fluentd-address=127.0.0.1:24224 \
> --log-opt tag=docker.nginx.webserver \
nginx
5) 테스트
호스트의 80번 포트 웹으로 접속하면 로그가 출력됩니다.
#docker exec -it mongoDB mongo
MongoDB shell version v3.4.0
....
>show dbs
admin 0.000GB
local 0.000GB
nginx 0.000GB
>use nginx
switched to db nginx
>show collections
access
>db['access'].find()
{ "_id" : Objectid("~~~~~~"), "container_name" : ~~
실습 완료 후, 실습 시나리오를 다시 한 번 확인하여 fluentd 로깅의 저장 과정을 떠올려보기 바랍니다!
'서버 > Docker&Kubernetes' 카테고리의 다른 글
Docker Swarm (0) | 2021.04.20 |
---|---|
Dockerfile 작성 및 빌드 (0) | 2021.04.16 |
Docker 이미지 추출 및 저장소 생성(2/2) (0) | 2021.04.15 |
Docker 이미지 생성하기- Docker Hub(1/2) (0) | 2021.04.15 |
Docker Container Logging - awslogs (0) | 2021.04.14 |
댓글