반응형
들어가며
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 |