이전 글 참고 !
아파치 로그 모니터링 시스템 구축하기 - 개요(ELK)
Filebeat이란?
Elsastic 서비스인 Beats의 서비스 중 하나이며, 로그 데이터를 수집하고 전달하는 역할을 한다. Filebeat는 지정한 로그 파일 또는 위치를 모니터링하여 로그 이벤트를 수집해 Elasticsearch 또는 Logstash로 전달한다.
Filebeat이 작동하는 방법?
Harvesters를 이용하여 로그를 읽고 libbeat를 이용하여 원하는 output으로 전달한다.
Harvesters는 특정 로그 파일에서 새로운 내용을 읽고 수집한다. 각 Harvesters는 지정된 로그 파일을 모니터링하고 변경된 부분을 감지하여 변경된 내용(로그 데이터)를 libbeat으로 보낸다.
libbeat은 이벤트를 집계하고, 원하는 output으로 집계된 데이터를 전송한다.
Filebeat 파이프라인 구성
- apache의 access log를 수집한다.
- 수집된 log를 logstash로 전송한다.
Filebeat 설치
curl -L -O <https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.13.2-linux-x86_64.tar.gz>
tar xzvf filebeat-8.13.2-linux-x86_64.tar.gz
Filebeat.yml 구성
Filebeat.yml으로 filbeat의 기본 구성을 설정할 수 있다.
- 아파치 로그를 수집하기 위해 몇가지를 설정한다.
- type 은 filestream 으로, paths는 로그를 수집할 위치들을 지정한다.
- 나의 서버 같은 경우, 아파치의 access_log 위치가 ‘/var/log/httpd/access_log’ 였다
- 로그 위치는 서버 운영체제, 설치 경로 등에 따라 다를 것 같다.
- Logstash Output 설정
- hosts에는 로그 데이터를 전송할 Logstash의 host를 입력하면 된다.
- 이번에는 Filebeat과 Logstash가 같은 서버에 위치해 있어서 localhost로 전달했다.
- Logstash의 포트는 5044
- hosts에는 로그 데이터를 전송할 Logstash의 host를 입력하면 된다.
# filestream is an input for collecting log messages from files.
- type: filestream
# Unique ID among all inputs, an ID is required.
id: apache-filestream-id
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/httpd/access_log
#- c:\\programdata\\elasticsearch\\logs\\*
# ------------------------------ Logstash Output -------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
Filebeat 실행
./filebeat -e -c filebeat.yml -d "publish"
- filebeat 프로그램을 실행한다.
- -c filebeat.yml : filebeat.yml을 이용하여 filebeat을 실행시킨다.
- -e 와 -d "publish" 는 디버깅 하기 위한 옵션들이다.
- -e : 백그라운드가 아닌 전면에서 실행하여, 에러 메시지와 로그 메시지를 터미널에 표시한다.
- -d "publish" : 디버그 메시지를 출력할 수 있는 디버그 모드를 설정한다. "publish" 레벨의 디버그 메시지를 출력하도록 설정하여 Filebeat가 이벤트를 전송하는 부분에 대한 디버그 메시지를 출력한다.
이제 Logstash에서 Filebeat으로 Input을 설정하고 테스트해보면 Filebeat이 제대로 전달하는 것을 확인할 수 있다.
아래는 Logstash가 Filebeat으로부터 apache의 access_log 받은 정보를 출력한 것이다.(일부 생략했움 !)
성공적으로 수집하여 전송했다 !
{
"event" => {
"original" => " - - [04/Jan/2015:05:30:37 +0000] \\"GET /style2.css HTTP/1.1\\" 200 4877 \\"<http://www.semicomplete.com/projects/xdotool/\\>" \\"Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20140205 Firefox/24.0 Iceweasel/24.3.0\\""
},
"tags" => [
[0] "beats_input_codec_plain_applied"
],
"message" => "- - [04/Jan/2015:05:30:37 +0000] \\"GET /style2.css HTTP/1.1\\" 200 4877 \\"<http://www.semicomplete.com/projects/xdotool/\\>" \\"Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20140205 Firefox/24.0 Iceweasel/24.3.0\\"",
...
},
"host" => {
"architecture" => "x86_64",
"name" => "...",
"os" => {
...
},
"mac" => [
...
],
...
}
+) Logstash 글 추가
https://gani-dev.tistory.com/122
아파치 로그 모니터링 시스템 구축하기 - Logstash (ELK)
이전 글아파치 로그 모니터링 시스템 구축하기 - 개요(ELK)아파치 로그 모니터링 시스템 구축하기 - Filebeat(ELK)Logstash란?실시간 파이프라인 기능을 갖춘 오픈소스 데이터 수집 엔진이다. 수집한 데
gani-dev.tistory.com
참고했던 공식 문서
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-starting.html
Start Filebeat | Filebeat Reference [8.13] | Elastic
If you use an init.d script to start Filebeat, you can’t specify command line flags (see Command reference). To specify flags, start Filebeat in the foreground.
www.elastic.co
'ELK' 카테고리의 다른 글
아파치 로그 모니터링 시스템 구축하기 - Elasticsearch(ELK) (1) | 2024.04.26 |
---|---|
아파치 로그 모니터링 시스템 구축하기 - Logstash (ELK) (1) | 2024.04.26 |
아파치 로그 모니터링 시스템 구축하기 - Logstash filter (ELK) (1) | 2024.04.26 |
아파치 로그 모니터링 시스템 구축하기 - 개요(ELK) (0) | 2024.04.25 |