Fluentd 활용하여 Object Storage에 로그 저장하기

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
10 min readApr 19, 2019

시시각각 생성되는 로그, Object Storage에 저장해보세요!

오늘 포스팅에서는 서버에서 생성되는 로그들을 Fluentd라는 로그 수집기를 활용하여 Object Storage에 저장하는 과정을 다뤄보려고 합니다. 시작하기에 앞서, Fluentd 와 네이버 클라우드 플랫폼 Object Storage가 각각 어떤 서비스인지 먼저 간단하게 살펴보겠습니다.

Fluentd 란?

C와 Ruby로 작성된 Fluentd는 수많은 소스에서 발생하는 다양한 포맷의 데이터를 단일 포맷(Json)으로 리포맷(reformat)하고, 이렇게 하여 수집된 데이터를 네이버 클라우드 플랫폼 Object Storage를 포함한 다양한 대상으로 라우팅(routing) 할 수 있는 로그 수집기(Log Aggregator)의 한 종류입니다.

Fluentd는 Input, Parser, Engine, Filter, Buffer, Ouput, Formatter의 총 7개 컴포넌트로 구성되어 있으며, 각 컴포넌트마다 제공되는 플러그인(Plug-in)을 적절하게 활용하고 사용자 환경에 최적화하여 데이터를 수집, 파싱(parsing) 하고 저장할 수 있습니다. (각 플러그인에 대한 상세한 설명은 Fluentd 공식 홈페이지를 참고해 주시기 바랍니다.)

Fluentd

Object Storage 란?

네이버 클라우드 플랫폼에서 제공하는 Object Storage는 AWS S3 호환 API 지원을 통해서 S3 API와 CLI, 3rd Party Solution을 사용하여 데이터를 관리할 수 있는 오브젝트 스토리지입니다. 용량에 대한 고민 없이 데이터를 저장하고 오브젝트 별로 제공되는 URL을 통해서 손쉽게 데이터에 접근이 가능해 사용성이 뛰어난 서비스입니다. (상세 기능 및 요금 정보는 [상품 소개 페이지]에서 확인해주세요.)

NAVER CLOUD PLATFORM — Object Storage

Fluentd 설치 및 Object Storage 버킷 구성 방법

이제 실제 서버에서 발생하는 로그를 Object Storage에 저장하는 과정을 설명해 드릴 텐데요, 먼저 작업 순서를 정리하면 아래와 같습니다. (시간 관계상, 핵심만 보고 싶으신 분들은 4번 과정부터 따라오시면 됩니다.)

1. 네이버 클라우드 플랫폼 인증키 생성 & 확인

2. Object Storage 버킷 생성

3. Apache 웹서버 생성 & Apache 설치

4. Fluent 설치

5. Fluent config 설정

6. Object Storage 로그 확인

(1) 네이버 클라우드 플랫폼 인증키 생성 & 확인

먼저 네이버 클라우드 플랫폼 서비스 사용을 위한 인증키 생성을 진행해야 합니다.

네이버 클라우드 플랫폼 포털에 로그인한 후 [마이페이지] > [계정관리] > [인증키 관리]로 접속한 다음, [신규 API 인증키 생성] 을 클릭하면 고유한 인증키가 발급이 됩니다.

(2) Object Storage 버킷 생성

Object Storage 버킷 생성 방법은 이미 여러 포스팅에서 소개 드린 적이 있는데요, 콘솔에서 [All Products] > [Storage] > [Object Storage]로 접속하여 [+이용 신청] 후, 생성된 인증키로 서비스를 등록할 수 있습니다.

[이렇게 사용하세요!] Object Storage를 활용하여 DB 백업 데이터 저장소 만들기

[이렇게 사용하세요!] Object Storage를 활용하여 개인 저장소 만들기

- 서비스 등록이 완료되면, [+버킷 생성] 버튼을 클릭해 아래 “weblog”와 같이 로그를 저장할 버킷의 이름을 설정해줍니다.

- [다음]을 눌러 [권한 관리]에서 “공개 안함” 으로 권한 설정을 해줍니다.

- [다음]을 눌러 설정한 항목을 최종 확인한 후, [버킷 생성]을 누르면 새로운 버킷이 하나 만들어지게 됩니다.

(3) Apache 웹서버 생성 & Apache 설치

다음으로 apache 로그를 생성할 웹서버를 생성합니다.

(본 예제에서는 Centos 6.6으로 생성했으며, 서버 생성 방법은 리눅스 서버 생성 가이드를 참고해 주시기 바랍니다.)

서버 생성이 완료되었다면, 서버에 접속한 후 apache를 설치해야겠죠? 아래와 같이 명령어를 작성합니다.

(서버 접속 방법은 리눅스 서버 접속 가이드를 참고해 주시기 바랍니다.)

yum -y install httpd
/etc/init.d/httpd start
chmod 777 /var/log/httpd

(4) Fluentd (td-agent) 설치

이제 apache 로그를 수집하여 일정한 포맷으로 Object Storage에 보내줄 td-agent(Fluentd 래퍼 프로그램)를 설치합니다.

아래와 같이 명령어 한 줄로 간단하게 설치 가능합니다.

# repo 설정 및 fluentd 설치

cat <<EOF > /etc/yum.repos.d/td.repo

[treasuredata]

name=TreasureData

baseurl=http://packages.treasure-data.com/2/redhat/$releasever/$basearch

gpgcheck=0

EOF

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

(5) Fluentd config 설정

Fluentd는 기본으로 제공되는 수많은 플러그인을 td-agent 설정 파일( /etc/td-agent/td-agent.conf )에 추가함으로써 원하는 기능을 구현하여 사용할 수 있습니다.

※ Input_plugin : https://docs.fluentd.org/v0.12/articles/input-plugin-overview

※ Output_plugin : https://docs.fluentd.org/v0.12/articles/output-plugin-overview

아래는 본 예제에서 사용한 설정 파일입니다.

- Source 섹션에 in_put 플러그인으로 in_tail을 선택해 access_log 파일을 tail로 읽어들이고, 해당 로그들을 s3.apache.access로 태깅.

- out_plugin으로 out_s3 플러그인으로 설정하여 전달받은 로그 중,

tag(s3.*.*)와 매칭되는 로그를 apachelog 버킷에 logs 밑에 10s마다 Object Storage 쌓는 설정 파일

<source>

@type tail

path /var/log/httpd/access_log

format apache2

tag s3.apache.access

</source>

<match s3.*.*>

@type s3

aws_key_id {access_key} # NAVER CLOUD PLATFORM access_key

aws_sec_key {secret_key} # NAVER CLOUD PLATFORM secret_key

s3_bucket apachelog # 로그가 저장될 버킷 네임

s3_region kr-standard

s3_endpoint https://kr.objectstorage.ncloud.com # 엔드 포인트 지정

buffer_path /var/log/td-agent/s3/buffer

path logs/

time_slice_format %Y%m%d%H

flush_interval 10s

</match>

설정 작업 완료 후, td-agent를 구동 시켜줍니다.

# fluentd (td-agent) 데몬 시작

/etc/init.d/td-agent start

(6) Object Storage 로그 확인

로그가 버킷에 정상적으로 저장되었는지 확인합니다.

네이버 클라우드 플랫폼 상품 및 서비스는 어떻게 사용할 수 있나요?

네이버 클라우드 플랫폼의 Storage 상품 및 서비스 플랫폼을 사용하기 위해서는 아래와 같이 네이버 클라우드 플랫폼 포털 사이트 및 설명서(구 사용자 가이드)를 참고하시면 쉽게 사용하실 수 있습니다.

글을 마무리하며…

지금까지 Fluentd를 활용해서 서버에서 발생하는 로그를 Object Storage에 저장하는 과정을 살펴보았습니다.

이번 예제에서 보여 드린 Fluentd뿐만 아니라 S3 plugin을 지원하는 다른 로그 수집 프로그램과도 쉽게 연동하여 많은 양의 데이터를 부담 없이 저장할 수 있는 Object Storage, 앞으로도 많은 관심과 사용 부탁드립니다. 감사합니다.

※ 본 콘텐츠는 네이버 클라우드 플랫폼 온라인 교육 페이지 및 유튜브 채널을 통해 영상으로 시청이 가능합니다.

[NAVER CLOUD PLATFORM 온라인 교육 수강] “Fluentd를 활용해 Object Storage에 로그 저장하기” >> 수강하기

[NAVER CLOUD PLATFORM Youtube] “Fluentd를 활용한 오브젝트 스토리지 로그 저장” >> 바로가기

* 온라인 무료 교육 영상 시청을 위해서는 ncloud.com 회원 가입 및 로그인이 필요합니다.

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.