반응형

들어가며

Filebeat란?

  • 파일의 상태를 감지해서 변화가 발생하면 logstash로 전달해주는 프로그램
  • 웹서버에 설치되어 로그를 감지해 logstash 서버로 전달해주는 역할로 사용

Linux에 설치하기

Filebeat 설치 스크립트

mkdir -p /home/ubuntu/app \
&& cd /home/ubuntu/app \
&& wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.1-linux-x86_64.tar.gz \
&& tar xvfz filebeat-*.tar.gz \
&& rm filebeat-*.tar.gz \
&& ln -s /home/ubuntu/app/filebeat* filebeat

filebeat.yml 수정

filebeat.inputs:
  - type: log
    enabled: true
    paths:
        - /home/ubuntu/logs/*.log
    fields:
      app: test-app

logging:
  level: debug
  to_files: true # filebeat -e 커맨드로 실행할 경우 동작하지 않음
  files:
    path: /logs/filebeat
    name: filebeat.log
    keepfiles: 7
    permissions: 0644

output.logstash:
    hosts: ["192.168.56.103:5044"]

Filebeat 실행

/home/ubuntu/app/filebeat/filebeat -e

로그 전달 테스트

echo "test-log-1" >> /home/ubuntu/logs/test.log

[이슈] 로그 추가 테스트시 이전에 저장된 데이터가 중복해서 저장되는 경우

  • vi로 데이터를 수정하면 이전 데이터까지 중복해서 전달함
  • echo “메시지” >> test.log 형식으로 추가하면 중복해서 전달하지 않음

[이슈] 파일을 처음부터 다시 전송하고싶을 경우

  • registry 파일 제거 후 재시도
  • registry 파일은 전송한 데이터의 offset을 저장하는 파일
  • 해당 파일을 없앤 후 filebeat를 재실행하면 처음부터 다시 전송
  • 해당 파일을 삭제하기 전에 반드시 filebeat를 종료한 후 삭제해야함
rm /home/ubuntu/app/filebeat/data/registry

Docker로 설치하기

filebeat.yml

  • 경로 : ./config/filebeat.yml
filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /logs/test/input.log
    fields:
      app: test-app

output.file:
  path: /logs/test
  filename: output.log

# output.logstash:
#   hosts: ["192.168.56.101:5044"]

logging:
  level: debug
  to_files: true # filebeat -e 커맨드로 실행할 경우 동작하지 않음
  files:
    path: /logs/filebeat
    name: filebeat.log
    keepfiles: 7
    permissions: 0644

docker-compose.yml

  • 경로 : ./config/docker-compose.yml
version: "3.3"
services:
  filebeat:
    image: docker.elastic.co/beats/filebeat:7.6.1
    volumes:
      - ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - ./logs/:/logs/
    command:
      - "/bin/sh"
      - "-c"
      - |
        filebeat -e -strict.perms=false

실행 후 테스트

  • ./logs/test/input.log 파일에 내용을 추가
  • ./logs/test/output.log에 내용이 추가되는지 확인
{
    "@timestamp": "2020-09-06T14:18:00.567Z",
    "@metadata": {
        "beat": "filebeat",
        "type": "_doc",
        "version": "7.6.1"
    },
    "fields": {
        "app": "test-app"
    },
    "input": {
        "type": "log"
    },
    "ecs": {
        "version": "1.4.0"
    },
    "host": {
        "name": "b46feb80c34e"
    },
    "agent": {
        "ephemeral_id": "08a59199-aded-4869-aab3-2f3fdc0f5a56",
        "hostname": "b46feb80c34e",
        "id": "2f4e917d-0c1b-4cda-889f-311eb64d7c6d",
        "version": "7.6.1",
        "type": "filebeat"
    },
    "log": {
        "offset": 1921,
        "file": {
            "path": "/logs/test/input.log"
        }
    },
    "message": "Hello World"
}
반응형

'Development > ELK' 카테고리의 다른 글

[Elasticsearch] 설정  (0) 2019.03.17
[Filebeat] 설정  (0) 2019.03.02
[Logstash] 설정  (0) 2019.03.01
[Logstash] 설치  (0) 2019.03.01
[Elasticsearch] 개념  (0) 2019.02.24

+ Recent posts