예전에 flume로 에러 로그들을 모으고 있었는데 fluentd로 갈아타려고 한다.
사실 모으는 목적이 아니라 모니터링이 목적

설치

아래 사이트에 나오는 command만 실행해주면 chkconfig 등록까지 다 해준다. 참고 공식 사이트
http://docs.fluentd.org/articles/install-by-rpm#step-0-before-installation

구성은 flume와 비슷한것 같다
client -> server 구성으로 해놓고 client에서 수집된 로그를 server로 전달.

아래 커맨드 실행

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

서비스 구동

1
service td-agent start

당연히 service td-agent stop 가 중지다

설정

/etc/td-agent/td-agent.conf 파일이 설정 파일이다

1
vi /etc/td-agent/td-agent.conf

simple하게 각 서비스들에 error.log들만 모아서 로그 서버에 파일로 기록 하도록 해보자.

우선 내가 구성하려고 하는 설정에 필요한 항목은 아래와 같다.
<source />: 데이타 수집 경로, 또는 원격서버로부터 수신 받는다 <match />: 수집된 로그들을 처리할 액션을 지정 (다른 서버로 전송을 하거나 로컬에 파일로 저장)

다른 설정값들은 아래 링크에서 확인 해보자 (많다..) http://docs.fluentd.org/articles/config-file#2-ldquomatchrdquo-tell-fluentd-what-to-do

로그 수집 td-agent.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<source>
  @type tail
  path /logs/error.log
  tag xx.devwas.error

  format multiline
  format_firstline /\[[^\s]+\] .*/
  format1 /\[(?<level>[^\s]+)\] (?<message>.*)/
</source>

<match xx.*.*>
  @type forward
  send_timeout 60s
  recover_wait 10s
  heartbeat_interval 1s
  phi_threshold 16
  hard_timeout 60s
  <server>
    name logserver
    host log-server
    port 24224
    weight 60
  </server>
</match>

로그 저장 td-agent.conf

1
2
3
4
5
6
7
8
9
<source>
  @type forward
  port 24224
</source>

<match xx.**>
  @type file
  path /logs/td/error
</match>

시작시 아래 오류가 나오면 저장 path에 td-agent의 권한을 주자

1
Starting td-agent: 2016-06-22 14:13:53 +0900 [error]: fluent/supervisor.rb:359:rescue in main_process: config error file="/etc/td-agent/td-agent.conf" error="out_file: `/logs/td/~~~` is not writable"
1
chown td-agent td

아래 폴더에 error.시간 으로 저장되는걸 확인 할 수 있다

1
2
3
4
5
6
[root@logserver td]# ls -al
합계 224
drwxr-xr-x. 2 td-agent root       4096 2016-06-22 15:02 .
drwxr-xr-x. 4 root     root       4096 2016-06-22 15:16 ..
-rw-r--r--. 1 td-agent td-agent 220529 2016-06-22 15:38 error.20160622.b535d7aec407e9135
[root@logserver td]#

그런데 json형태로 저장되고 있다 아무래도 그냥 육안으로 확인은 불편할꺼 같다

아니면 plugin이 많으니 찾아보자.