Fluentd Install

Minsoo, Kim·2023년 1월 17일
0

Logging

목록 보기
1/4
post-thumbnail

개요

Fluentd는 오픈소스 기반의 Data collector이자 aggregator 입니다.
Fluentd를 설치하는 방법은 td-agent 패키지를 이용해서 설치하는 방법과 소스를 직접 빌드하여 설치하는 방법이 있습니다.
본 글에서는 소스를 직접 빌드하여 Fluentd를 설치했던 과정을 다룹니다. 직접 설치했던 경험을 기반으로 작성되었습니다. 이 글이 Fluentd를 standalone으로 설치하시려는 분들에게 도움이 되셨으면 합니다. 설치 환경은 Ubuntu 20.04.5 LTS 입니다.

준비물

  • Ruby source code archieve (v3.2.0)
  • Fluentd source code archieve (v1.15.3)

설치

1. Ruby 설치

루비는 Fluentd 소스를 빌드하기 위해 필요하기 때문에 먼저 루비를 장비에 설치해야 합니다. 루비 설치 전 패키지 최신 목록을 업데이트한 후 다음의 패키지들이 설치되었는지 확인합니다.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc, make, autoconf, bison, gperf, build-essential, libssl-dev, libreadline-dev, libffi-dev, zlib1g, zlib1g-dev

아래 명령으로 루비 소스코드 아카이브를 내려받은 후에 압축을 해제합니다.

$ wget https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.0.tar.gz
$ tar xvzf ruby-3.2.0.tar.gz

압축이 해제된 루비 디렉토리로 이동하여 configure 스크립트를 실행합니다.

  • prefix 옵션을 추가하면 루비가 설치될 경로를 지정할 수 있으며 지정하지 않으면 기본으로 /usr/local이 설정됩니다.
  • disable-install-doc 옵션을 추가하면 루비 document 빌드 과정이 생략되기 때문에 좀 더 신속하게 루비를 설치할 수 있습니다.
$ ./configure --prefix=/usr/local --disable-install-doc

configure 스크립트 실행이 끝나면 make 명령으로 루비 소스를 빌드합니다.

$ make

빌드 과정에서 오류가 발생하면 ruby 디렉토리를 삭제한 후 다시 세팅해서 configure 절차부터 재시도 하는 것을 권장합니다.

make 빌드가 오류없이 완료되면 아래 명령으로 빌드한 루비를 설치합니다.

$ sudo make install

설치가 오류없이 완료되면 최종적으로 루비 명령을 실행하여 정상 동작 여부를 확인합니다.

$ ruby --version

2. Fluentd 설치

Fluentd 소스코드를 github에서 clone 받습니다.

$ git clone -b v1.15.3 https://github.com/fluent/fluentd.git

클론 받은 소스코드 디렉토리로 이동한 후 bundle install 명령으로 Fluentd 소스에 필요한 RubyGem들을 세팅합니다.

$ cd fleuntd
$ bundle install

의존성 세팅이 완료되면 아래의 명령으로 소스를 빌드합니다.

$ bundle exec rake build

빌드가 성공하면 pkg 디렉토리에 gem 파일이 생성됩니다. 이 gem을 아래 명령으로 설치합니다.

$ sudo gem install pkg/fluentd-v1.15.3.gem

gem 설치가 끝나면 Fluentd 설치는 마무리 됩니다. 아래의 명령으로 Fluentd 설정 파일을 생성해줍니다.

$ fluentd --setup /etc/fluent

마지막으로 아래 명령으로 Fluentd를 실행하여 정상 동작하는지 확인합니다.

$ fluentd -c /etc/fluent/fluentd.conf -vv &

Fluentd를 종료하려면 pkill 명령으로 종료시킬 수 있습니다.

$ sudo pkill -f fluentd

설치 이후 작업

1. systemd에 Fluentd 서비스 등록하기(Optional)

Fluentd를 systemd 데몬으로 관리되는 서비스로 추가하기 위한 작업입니다. 필수 절차는 아니며 선택사항 입니다.

fluentd 유저를 생성해서 시스템 유저로 등록합니다.

$ sudo adduser --system --shell /bin/bash --no-create-home fluentd

fluentd 그룹을 생성합니다.

$ sudo addgroup --group fluentd

fleuntd 유저를 fluentd 그룹에 추가합니다.

$ sudo usermod -aG fluentd fluentd

Fluentd 워킹디렉토리의 소유를 fleuntd 유저와 그룹으로 변경합니다.

$ sudo chown -R fluentd:fluentd /etc/fluentd

Fluentd 로깅디렉토리를 만들고 소유를 fluentd 유저와 그룹으로 변경합니다.

$ sudo mkdir /var/log/fluentd
$ sudo chown -R fluentd:fluentd /var/log/fluentd

Fluentd 서비스 등록을 위해 systemd 스크립트를 작성합니다.

$ sudo vi /etc/systemd/system/fluentd.service
[Unit]
Description=Fluentd
Documentation=http://www.fluentd.org/
Wants=network-online-target
After=network-online-target

[Service]
Type=forking
RuntimeDirectory=data
WorkingDirectory=/etc/fleuntd
ExecStart=/usr/local/bin/fluentd -c /etc/fluentd/fluent.conf -o /var/log/fluentd/fluent.log -d /etc/fluentd/fluent.pid
User=fluentd
Group=fluentd
StandardOutput=journal
StandardError=inherit
TimeoutStartSec=75
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

새로 작성한 Fluentd 서비스 스크립트를 systemd 데몬에 반영합니다.

$ sudo systemctl daemon-reload

Fluentd 서비스를 활성화 합니다.

$ sudo systemctl enable fluentd.service

이제 Fluentd 서비스를 systemctl로 시작할 수 있습니다.

$ sudo systemctl start fluentd

마지막으로 서비스 시작 후 상태를 조회해보고 정상 동작 여부를 확인합니다.

$ sudo systemctl status fluentd

0개의 댓글