- 새로운 로그를 위해 Filebeat 도입하기2024년 12월 20일
- 31514
- 작성자
- 2024.12.20.:10
Filebeat를 도입하기 전에 logstash.conf 파일의 input 섹션은은 다음과 같습니다.
input { file { mode => "read" path => "/usr/share/logstash/ingest_data/**/*.log" exclude => [ "/usr/share/logstash/ingest_data/logstash_completed.log" ] exit_after_read => true file_completed_action => "log" file_completed_log_path => "/usr/share/logstash/ingest_data/logstash_completed.log" start_position => "beginning" # 처음 파일을 읽을 때 어디부터 시작할지 지정 sincedb_path => "/dev/null" # 오프셋 개념과 비슷하게 이전에 처리한 부분 기록 X codec => multiline { pattern => "^\[\d{4}-\d{2}-\d{2}.*$" # 멀티 라인 인식을 위한 정규표현식 negate => true what => "previous" } } }
저는 logstash 컨테이너가 지속적으로 "/usr/share/logstash/ingest_data/**/*.log" 경로를 확인하고, 새로운 파일이 생기면 자동으로 ES에 적재하기를 바랬기 때문에 다음과 같은 코드를 추가했습니다.
mode => "tail" sincedb_path => "/usr/share/logstash/.sincedb" discover_interval => 10 # 10초마다 새로운 파일 탐색
하지만 logstash는 처음 시작 이래로 아무런 액션이 없었고, 이를 해결하기 위해 안정성과 확장성이 높은 Filebeat를 도입하기로 했습니다.
Filebeat을 도입하면서 지금까지 작성한 logstash.conf 파일의 input 섹션이 전부 수정됐습니다.
input { beats { port => 5044 # Filebeat가 데이터를 전송할 포트 } }
그 이유는 더 이상 logstash가 로그 파일을 모니터링하고 수집하지 않기 때문입니다.
대신 다음과 같은 filebeat.yml 파일을 통해 특정 경로를 30초 단위로 모니터링하면서 로그 데이터를 수집할 수 있습니다.
filebeat.inputs: - type: filestream id: default-filestream paths: - /usr/share/filebeat/ingest_data/**/*.log start_position: beginning parsers: - multiline: type: pattern pattern: '^\[\d{4}-\d{2}-\d{2}.*$' negate: true match: after # ignore_older: 24h scan_frequency: 30s clean_removed: true output.logstash: hosts: ["logstash01:5044"]
logstash와 달리 로그 파일에 대한 오프셋 설정을 따로 해줄 필요가 없습니다.
이로써 /elastic-stack/filebeat_ingest_data/ 경로에 들어오는 log 확장자를 가진 모든 파일은 자동으로 ES에 적재되고, 키바나에서 확인할 수 있습니다.
최종 ELK Stack 아키텍처는 다음과 같습니다.
'ELK' 카테고리의 다른 글
Elasticsearch에 저장된 데이터 확인하기 (1) 2024.12.19 샘플 로그 파일 업로드하기 (0) 2024.12.19 Elastic Stack 실행하고 확인하기 (0) 2024.12.19 Elastic 공식 문서로 살펴보는 docker-compose 파일 (0) 2024.12.18 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)