filebeat(5.3.0), kafka(2.10-0.10.0.1) 기준


예시) filebeat을 이용해서 서버의 apache log를 kafka로 프로듀싱하기

1. apach2 설치

$ sudo apt-get update
$ sudo apt-get install apache2

  • 실행확인
    $ curl localhost
  • 로그 조회
    $ tail -F /var/log/apache2/access.log

2. kafka 설치 및 실행, Topic 생성

‘kafka(0.10.0.1) 설치 및 실행’ 참고

  • apache_logs topic 생성

    (../kafka 디렉토리에서 실행)
    $ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic apache_logs

3. filebeat 설치 및 실행

3-1 파일 다운로드
$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.3.0-linux-x86_64.tar.gz
3-2. 압축 해제
$ tar xzvf filebeat-5.3.0-linux-x86_64.tar.gz
3-3. 설정 파일 수정
$ cd filebeat-5.3.0-linux-x86_64/
$ vi filebeat.yml

filebeat.prospectors:

- input_type: log

  paths:
    - /var/log/apache2/access.log

logging.level: debug
logging.to_files: true
logging.to_syslog: false
logging.files:
  path: /home/user/es/filebeat
  name: mybeat.log
  keepfiles: 7

output.kafka:
   hosts: ["192.168.56.103:9092"]
   topic: 'apache_logs'
   partition.round_robin:
      reachable_only: false
   required_acks: 1
   compression: gzip
   max_message_bytes: 1000000

※ hosts: [“192.168.56.103:9092”]의 IP부분은 kafka가 설치된 인스턴스의 IP

4. filebeat 실행

(../filebeat 디렉토리에서 실행)
$ nohup ./filebeat -e -c filebeat.yml &
(실행 후 로그를 보기위해서는 $ ./filebeat -e -c filebeat.yml)

  • 참고 : 실행이 정상적으로 되지 않고 Failed to connect to broker localhost:9092 이런 로그가 노출될 때 kafka의 설정을 아래처럼 localhost가 아닌 위처럼 ip를 써줘야 함
    $ sudo vi /usr/local/kafka/config/server.properties
    advertised.listeners=PLAINTEXT://192.168.56.103:9092
    zookeeper.connect=192.168.56.103:2181
    

5. kafka에 저장되어 있는 apache 로그 확인

(../kafka 디렉토리에서 실행)
$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic apache_logs --from-beginning

결과
user@node2:/usr/local/kafka$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic apache_logs --from-beginning
{"@timestamp":"2017-09-14T00:45:06.589Z","beat":{"hostname":"node1","name":"node1","version":"5.3.0"},"input_type":"log","message":"::1 - - [14/Sep/2017:09:32:21 +0900] \"GET / HTTP/1.1\" 200 11764 \"-\" \"curl/7.35.0\"","offset":82,"source":"/var/log/apache2/access.log","type":"log"}
Processed a total of 1 messages