Filebeat 설치
-
filebeat는 특정한 로그 파일들을 주기적으로 스캔하여 쌓이는 데이터들을 모으는 역할
-

-
Filebeat
-
inputs, harvesters, spooler
- Inputs로 소스 파일 경로 설정
- Harvester가 로그를 개별 파일로 처리
- 파일을 Row단위로 읽어 출력으로 spooler에게 보냄, 집계하여 출력으로 전달
-
https://www.elastic.co/kr/downloads/past-releases/filebeat-7-10-2
- 사양에 맞게 다운로드
-
wget을 사용해 다운로드
-
tar xfz filebeat-7.10.2-linux-x86_64.tar.gz
-
mkdir logs 를 통해 로그 파일을 받을 경로를 생성
-
apache_logs 다운로드
-
/home/ubuntu/filebeat-7.10.2-linux-x86_64/logs/apache_logs
-
filebeat.yml 조정
-
paths에 로그가 저장된 경로를 지정
-
input 타입 설정
-
filebeat inputs: - type: log enabled: true
-
-
elasticsearchdp 데이터 전송
- output.elasticsearch 에 EC2 elasticsearch Public IP주소를 입력
-
output.elasticsearch: # Array of hosts to connect to. hosts: ["xxxxx:9200"] username:elastic password: qlalfqjsgh
Filebeat to Logstash
-
logstash conf 파일
- beats.conf
-
input { beats { port => 5044 } } filter { grok { match => { "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:cluster_agent}' } } # date { # match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ] # locale => en # } geoip { source => "clientip" } mutate { remove_field => ["timestamp","agent","@version","log"] } } output { stdout { codec => "rubydebug" # codec => "dots" } elasticsearch { index => "apache.logstash-%{+yyyy.MM.dd}" hosts => ["43.200.169.161"] user => "elastic" password => "qlalfqjsgh" } } -
grok pattern
- %{SYNTAX:SEMANTIC}
-
SYNTAX : Input에서 감지해야 하는 정규식 패턴
-
SEMANTIC : 감지된 패턴을 할당할 logstash 변수
-
- %{SYNTAX:SEMANTIC}
-
date
-
Elasticsearch에 데이터를 보내는 시간이 아닌 실제 로그 파일에 찍힌/적힌 시간
- 적재하기 위해 원하는 filed로 재 설정을 해줄 수 있음
-
date { match => {변경할 필드명, 날짜 format }, target => "@timestamp", timezone=>"Asia/Seoul" }
-
-
mutate
- remove_fields: 해당 필드를 삭제함
- 보낼 메세지를 전처리 해야 하면 gsub을 사용
-
output codec
- https://www.elastic.co/guide/en/logstash/7.10/codec-plugins.html
- json: json형식으로 보여줌
- 전체 JSON 메시지를 디코딩(input 통해서) 및 인코딩(output 통해서)하는 데 사용
- rubydebug : debug 하기 편리함
- Ruby Amazing Print library
- dots: … 으로 표시되지만 ES에는 정상적으로 적재됨
-
output index
- 지정 안하게 되면 logstash-2023.xx.xx-00001 형식으로 들어감
- 지정 하면 원하는 인덱스 명을 붙일 수 있음
- “apachelog-%{+yyyy.MM.dd}”
-
-config.test_and_exit
- bin/logstash 뒤에 넣으면 테스트 가능
-
filebeat.yml
-
output.logstash: hosts: ["localhost:5044"]- chmod 700 filebeat
- chmod go-w /home/ubuntu/filebeat-7.10.2-linux-x86_64/filebeat.yml
-
beats에서 로그를 읽어서 logstash를 통해 Elasticsearch로 들어간다.