Fluentd 설치하기
Linux 시스템에 설치하는 것을 기준으로 진행.
패키지 설치 or 소스 컴파일 설치 모두 가능하지만 소스 컴파일 방식으로 설치 진행.
의존성
- zlib-devel
- openssl
- ruby
설치
- System User Profile
export LD_LIBRARY_PATH=/app/fluentd/ssl/1.1.1-pre6/lib:$LD_LIBRARY_PATH export PATH=/app/fluentd/ssl/1.1.1-pre6/bin:$PATH export RUBY_HOME=/app/fluentd/ruby/2.4.4 export PATH=$RUBY_HOME/bin:$PATH
- Install openssl from source
- openssl archive 다운로드
wget https://www.openssl.org/source/openssl-1.1.1-pre6.tar.gz
- archive 압축해제
tar -xvzf openssl-1.1.1-pre6.tar.gz -C /app/fluentd/ssl
- 설치 경로로 이동하여 설치 환경 설정
cd /app/fluentd/ssl/openssl-1.1.1-pre6
./config --prefix=/app/fluentd/ssl/1.1.1-pre6 --openssldir=/app/fluentd/ssl/1.1.1-pre6
- Let’s make
make && make install
- 바이너리 실행 경로 및 라이브러리 로드 경로 설정
export LD_LIBRARY_PATH=/app/fluentd/ssl/1.1.1-pre6/lib:$LD_LIBRARY_PATH
export PATH=/app/fluentd/ssl/1.1.1-pre6/bin:$PATH
- openssl archive 다운로드
- Install Ruby from source
- Ruby archive 다운로드
wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.gz
- archive 압축해제
tar -xvzf ruby-2.4.4.tar.gz
- 설치 경로로 이동하여 설치 환경 설정
cd ruby-2.4.4
./configure --prefix=/app/fluentd/ruby/2.4.4 --with-openssl-dir=/app/fluentd/ssl/1.1.1-pre6
- Let’s make!
make && make install
- Ruby archive 다운로드
- Install fluentd using ruby gem
- bundler 설치
gem install bundle
- fluentd 설치 경로 이동 및 설치
cd /app/fluentd
git clone https://github.com/fluent/fluentd.git
cd fluentd
bundle install
- 하둡 output plugin 설치
gem install fluent-plugin-webhdfs
- bundler 설치
- Run fluentd
- config 파일 정의
fluent는 하나의 설정 파일을 로드해서 실행된다.
vi fluentd.conf
<source>....</source>
구문 내에서 input 데이터를 정의하고,<match .. >...</match>
구문으로 output 데이터를 정의한다. - input 타입 정의
<source> @type http port 8888 </source>
- output 타입 정의
<match hdfs.*.*> @type webhdfs host bigdata-116 username fluentd port 50070 path "/user/fluentd/log/%Y%m%d_%H/access.log.#{Socket.gethostname}" flush_interval 10s </match>
- fluent 실행
fluentd -c ./fluent/fluent.conf -vv &
- 데이터 발생
fluent를 http 타입으로 실행했으므로 fluent가 LISTENING 하고 있는 포트에 http 데이터를 전달함으로써 수집이 되는지 확인한다.
curl -X POST -d 'json={"action":"login","user":2}' http://localhost:8888/hdfs.access.test
- config 파일 정의
Fluentd-ui
Fluentd 공홈에서 관리하는 듯(?) 한 Fluentd 관리 WEB 인터페이스.
ruby gem 으로 간단하게 plugin 설치 가능.
https://docs.fluentd.org/v0.12/articles/fluentd-ui
Installation of fluentd-ui using gem
gem install -V fluentd-ui
Run fluentd-ui
fluentd-ui start
it may return
[fluentd@bigdata-116 ~]$ fluentd-ui start
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.4-p296), codename: Love Song
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://0.0.0.0:9292
Use Ctrl-C to stop
web 접속
- 웹 브라우저에서 아래 URL 입력
{해당 서버의 IP 혹은 도메인 주소}:{LISTENING_PORT} http://bigdata-116:9292 http://192.168.179.116:9292
- Default username & password
id: admin password: changeme
구성도
- log forwarders
remote agent- input plugin은 수집하고자 하는 로그에 알맞게 설정
- output plugin은 out_forward 만을 사용하여 log aggregators 에 전송
- log aggregators
- input plugin은 in_forward 만을 사용하여 log forwarders 에서 소스를 전달받음
- 필요에 따라 filter/parser/buffer 레이어를 추가
- output plugin 은 저장소에 따라 알맞게 설정