#인풋 --> 파일비트
filebeat.inputs
type: log
enabled: true #수집할 파일이 log type이라면 true로 변경
paths: #수집할 로그의 경로
#아웃풋 --> 엘라스틱서치
output.elasticsearch
hosts: ["엘라스틱서치ip:9200"]
ex. 127.0.0.1:9200
# username:
# password:
도 필요함
#filebeat 실행하기
cd ~/prod/elk/filebeat-7.15.0-linux-x86_64
./filebeat
#kibana 페이지 접속하기
http://localhost:5601/app/dev_tools#/console
#filebeat 내용 확인하기
GET filebeat-*/_search
#filebeat 로그 몇개나 들어갔는지 확인하기
GET filebeat-*/_count
이렇게 filebeat에서 수집은 빠르게 됨 elasticsearch로 바로 보낼 순 있지만,
파싱을 못함 필터를 태워서 보내야 보다 정제된 데이터를 만들 수 있음. (logstash 필요 이유)
-----------------------------------------------------------------------
cd /home/hyper/prod/elk/filebeat-7.15.0-linux-x86_64/
vi filebeat.yml
#1 elasticsearch 주석처리
output.elasticsearch 모두 주석처리
#2 logstash 부분 주석해제
output.logstash
hosts: ["127.0.0.1:5044"]
# logstash가 beats를 입력받게끔 수정
cd /home/hyper/prod/elk/logstash-7.15.0/
vi workshop.conf
input {
beats{
port => 5044
}
}
주의) agent라는 필드가 사실 beats에서 agent 필드도 저장해서 보냄 즉, beats가 수집한 내 localhost정보임
그정보가 중복이 나기때문에 최종적으로 useragent 실행시에 오류가 발생할 수 있음
그러므로, grok를 실행하기 전에 agent 필드를 지워줄 것임(mutate.remove_field)
filter{
# 추가!
mutate {
remove_field => ["agent"]
}
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
...
cf) stdout을 띄우면 데이터가 엄청 많이 들어감 / 데이터가 들어가는걸 확인은 하지만, 너무 많은 내용을 보고 싶지 않을때, 쓰는 것
codec -> rubydebug 코덱을 사용 / dots --> 하나의 이벤트당 점으로 표현
output {
stdout {
codec => "dots"
# codec => "rubydebug"
# codec => "json"
}
...
# logstash 실행
./bin/logstash -f workshop.conf
# filebeat 실행전 주의
# 지금까지 읽었던 파일은 안 읽음, 지금까지 읽었던 플래그를 지워줌 플래그는 data 디렉토리 안에 있음. 이를 삭제해야 함
# 안하고 실행할 시에는 수집이 안됨
cd ~/prod/elk/filebeat-7.15.0-linux-x86_64
ls data/
rm -fr data/
# filebeat 실행
cd ~/prod/elk/filebeat-7.15.0-linux-x86_64
./filebeat
# filter 마지막 단에 불필요한 녀석 지우기
mutate { # 불필요한 녀석들 지우기
remove_field => ["timestamp", "host", "@version", "agent"] #일반 타임스탬프, 로그스태시가 찍은 호스트 정보, @version, agent도 받고 가공했기때문에
}
#인덱스 이름 지정하기(elasticsearch.index)
elasticsearch {
index => ["apachelog-%{+yyyy.MM.dd}"] # 인덱스 이름을 저장할 수 있음
hosts => ["127.0.0.1:9200"]
}
.... <-- dots가 생성된다는 것은 filebeat에서 보내서 logstash가 받고 있는 것
logstash가 elasticsearch로 잘보내는지 확인할 것
http://localhost:5601/app/dev_tools#/console
GET _cat/indices/apachelogs*
#아파치로그가 날짜별로 생성되는 것을 확인할 수 있음.
#Elasticsearch는 *(아스트리크)를 이용해서 멀티테넌시를 지원 / 여러 인덱스를 한꺼번에 묶어서, 검색하는 것이 가능
# 7.x 버전의 경우, 카운트가 제대로 안잡힘
GET apachelog-*/_search
#로그 갯수를 확인하려면 _count를 이용하여, 확인이 가능
GET apachelog-*/_count
카테고리 없음